我正在创建一个XML文件的doctype,我正在使用它来简化验证。但是,我想表达一些内容,我不知道如何。
我有<test>
个元素。这些元素最多可包含一个<description>
代码,但必须包含1 + <node>
个子代码和任意数量的<argument>
代码。但是,我希望可以不按特定顺序指定它们。例如,这个片段:
<test>
<node>foo</node>
<argument>baz</argument>
<description>bar</description>
</test>
应该是有效的<test>
表示。
我想到的第一个明显的答案是:
<!ELEMENT test (description?, node+, argument*)>
但我的理解是逗号运算符将要求元素出现在the precise order they're specified中。
如何制作不具备此要求的doctype?
答案 0 :(得分:2)
这就是为什么DTD被放弃而支持XML Schema的原因 - 即使对于像这样的简单情况,DTD也不够表达。
我强烈建议你忘记DTD,并使用Schema。
答案 1 :(得分:1)
使用RELAX NG代替DTD。