文档类型中具有不同基数的元素序列的顺序
我正在为正在使用的 XML 文件创建一个文档类型,以简化其验证。但是,我想表达一些东西,但我不知道如何表达。
我有
元素。这些元素最多可以有一个
标签,但必须有 1+ 个
子元素,以及任意数量的
<test>
<node>foo</node>
<argument>baz</argument>
<description>bar</description>
</test>
应该是有效的
表示。
我想到的第一个明显的答案是:
<!ELEMENT test (description?, node+, argument*)>
但据我了解,逗号运算符将要求元素出现在 它们指定的精确顺序。
我怎样才能制作一个没有这个要求的文档类型?
I'm creating a doctype for XML files I'm working with to simplify their validation. However, I'd like to express something and I don't know how.
I have <test>
elements. These elements can have up to one <description>
tag, but must have 1+ <node>
child, and any number of <argument>
tags. However, I'd like it to be possible to specify them in no particular order. For instance, this snippet:
<test>
<node>foo</node>
<argument>baz</argument>
<description>bar</description>
</test>
should be a valid <test>
representation.
The first obvious answer that came to my mind was this:
<!ELEMENT test (description?, node+, argument*)>
but it's my understanding that the comma operator will require the elements to be present in the precise order they're specified.
How can I make a doctype that will not have this requirement?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这就是为什么 DTD 被放弃而转而采用 XML Schema 的原因 - DTD 的表达能力不够,即使对于像这样的简单情况也是如此。
我强烈建议你忘记 DTD,并使用 Schema。
This is why DTD was abandoned in favour of XML Schema - DTD isn't expressive enough, even for simple cases like this.
I stronly suggest you forget DTD, and use a Schema.
使用 RELAX NG 代替 DTD。
Use RELAX NG instead of DTDs.