文档类型中具有不同基数的元素序列的顺序

发布于 2024-10-11 18:06:18 字数 760 浏览 2 评论 0原文

我正在为正在使用的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

宣告ˉ结束 2024-10-18 18:06:18

这就是为什么 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.

故乡的云 2024-10-18 18:06:18

使用 RELAX NG 代替 DTD。

Use RELAX NG instead of DTDs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文