Я использую jQuery для загрузки произвольных строк XML (фрагменты большего документа) в DOM браузера и их манипулирования, а затем с помощью XMLSerializer, чтобы загрузить их обратно в строки и отправить их обратно на сервер, где они обрабатываются (по python и lxml) и повторно интегрированы в полный XML-документ.Как предотвратить переопределение XMLSerializer.serializeToString()?
XML начинается и заканчивается в репозитории git. Я обнаружил, что атрибуты на элементах, обработанных XMLSerializer перепутаны в порядке, в результате паразитных изменений, показывая в моем хранилище, например, так:
- <literal><token kind="w" id="en-us-esv-xeaugcbzgo">sent</token><token kind="s" id="en-us-esv-xeaugcbzgw"> </token></literal>
+ <literal><token id="en-us-esv-xeaugcbzgo" kind="w">sent</token><token id="en-us-esv-xeaugcbzgw" kind="s"> </token></literal>
Это не ошибка с любым из инструментов I» м используя. Разумеется, порядок атрибутов элемента xml не должен иметь значения. Но,, потому что git - ориентированный на линию SCM, эти ложные и незначительные изменения будут отвлекать от реальных существенных изменений, которые я хочу отслеживать.
Вопрос: Есть ли способ удержать сериализатор от переопределения моих атрибутов? В качестве альтернативы, существуют ли какие-либо инструменты, чтобы указать/ограничить порядок атрибутов?
Отредактировано выше для ясности: Я знаю, что, в соответствии с XML-спецификации, «порядок спецификации атрибутов в начальном тэге или тэге пустого элемента не имеет существенного значения»: http://www.w3.org/TR/REC-xml/#sec-starttags. Достаточно сказать, что упорядочение атрибутов значимо для меня . :)
Как кажется, атрибуты в конечном итоге упорядочены по алфавиту. Разве вы не можете просто установить это как соглашение? Может быть, небольшое изменение в коде Python, которое манипулирует XML, заставляет их сразу появляться в «правильном» порядке? – Tomalak
Возможно, это то, что я в конечном итоге сделаю. Неудобно, мои инструменты управления XML (lxml, оболочка python для libxml2) не учитывают упорядочение атрибутов как значимые (и правильно!). Следовательно, мое редактирование на вопрос выше. –