jdom之类的命令文件的DTD
Jdom order document like the DTD
我有一个 XML 文档,它已被 DTD 正确验证。然后,我添加了一些遵守它定义的规则的元素,并生成了新文档。但是我添加的元素没有像 DTD 中定义的那样排序。有没有办法让 jdom 自动对新生成的文档的元素进行排序(无需使用 addContent(int index, Content child)
手动执行)?
不,JDOM 没有本地的按 DTD 排序的机制。
当 JDOM reads/parses 文档时,DTD 验证由底层解析器(xerces,等等)完成,并将解析结果提供给 JDOM。
其中的意义在于 JDOM 实际上不知道哪些元素受 DTD 中的哪些组件影响。 DTD中的"Business logic"不能直接访问,也不是直接"linked"到实际的JDOM元素和属性。
JDOM 不会尝试根据任何 DTD 或模式验证任何内容更改 - 添加元素或属性、删除元素或更改其内容 - 这些都是可能导致 XML 文档变为无效的。 JDOM 仅适用于 "well-formed",不适用于 XML 的 "validated" 域。验证仅用于解析。
话虽如此,如果您确切知道 DTD 的哪一部分会影响特定元素(哪个序列),那么您可以使用 Element.sortChildren(...)
机制和适当的比较器
我有一个 XML 文档,它已被 DTD 正确验证。然后,我添加了一些遵守它定义的规则的元素,并生成了新文档。但是我添加的元素没有像 DTD 中定义的那样排序。有没有办法让 jdom 自动对新生成的文档的元素进行排序(无需使用 addContent(int index, Content child)
手动执行)?
不,JDOM 没有本地的按 DTD 排序的机制。
当 JDOM reads/parses 文档时,DTD 验证由底层解析器(xerces,等等)完成,并将解析结果提供给 JDOM。
其中的意义在于 JDOM 实际上不知道哪些元素受 DTD 中的哪些组件影响。 DTD中的"Business logic"不能直接访问,也不是直接"linked"到实际的JDOM元素和属性。
JDOM 不会尝试根据任何 DTD 或模式验证任何内容更改 - 添加元素或属性、删除元素或更改其内容 - 这些都是可能导致 XML 文档变为无效的。 JDOM 仅适用于 "well-formed",不适用于 XML 的 "validated" 域。验证仅用于解析。
话虽如此,如果您确切知道 DTD 的哪一部分会影响特定元素(哪个序列),那么您可以使用 Element.sortChildren(...)
机制和适当的比较器