doctype中具有不同基数的元素序列顺序

时间:2011-01-13 18:43:56

标签: xml dtd doctype

我正在创建一个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?

2 个答案:

答案 0 :(得分:2)

这就是为什么DTD被放弃而支持XML Schema的原因 - 即使对于像这样的简单情况,DTD也不够表达。

我强烈建议你忘记DTD,并使用Schema。

答案 1 :(得分:1)

使用RELAX NG代替DTD。