У меня есть документ XML, который правильно проверяется DTD. Затем я добавляю некоторые элементы, которые соблюдают правила, определенные им, и создается новый документ. Но элементы, которые я добавил, не упорядочены, как это определено в DTD. Есть ли способ попросить jdom автоматически упорядочить элементы вновь созданного документа (без выполнения этого вручную с помощью addContent(int index, Content child)
)?Документ заказа Jdom как DTD
ответ
Нет, JDOM не имеет собственного механизма сортировки по DTD.
Когда JDOM считывает/анализирует документ, проверка DTD выполняется с помощью основного анализатора (xerces, whatever), и результат синтаксического анализа предоставляется JDOM.
Значимость в том, что JDOM фактически не знает, на какие элементы влияют компоненты DTD. «Бизнес-логика» в DTD напрямую недоступна и напрямую не связана с реальными элементами JDOM и атрибутами.
JDOM не пытается проверить какие-либо изменения контента в отношении любого DTD или схемы - добавление элемента или атрибута, удаление одного из них, изменение его содержимого - это все, что может привести к тому, что документ XML станет недействительным. JDOM работает только в «хорошо сформированном», а не «проверенном» домене XML. Проверка выполняется только для синтаксического анализа.
Теперь, сказав, что, если вы точно знаете, какая часть ОТД воздействий конкретный элемент (какой последовательности), то вы можете использовать механизм Element.sortChildren(...)
с соответствующим компаратором