0

我试图找到一种方法来编写 XML 1.0 架构,以避免创建站不住脚的数字排列。我有 5 个元素,A、B、C、D 和 E。A 在 XML 中必须恰好出现一次。B 和 C 在 XML 中可以出现 0 到无穷次。D 和 E 在 XML 中可以出现 1 到无限次。AE 可以以任何顺序发生。

避免写出每个可能的序列很重要,因为如果我以后需要添加一个元素,架构会呈指数增长。有没有办法做到这一点?

4

1 回答 1

0

看起来这是不可能的。

我在这里有一本书: XML Schema: The W3C's Object-Oriented Descriptions for XML,这可能是我读过的关于 XML 模式的最好的书(虽然相当复杂且不完美)。

这是我在那本书中看到的(第 236 页):

描述具有相同最大出现次数的可选元素的无序组的情况可以使用或替换组来描述xs:choice,但其他内容模型(例如具有任意和不同最大出现次数的无序元素组)不能使用 W3C XML Schema 来描述。

据此,看起来您的A元素(必须恰好出现一次)破坏了一切!

我认为这种限制的原因如下:

你想避免指数排列,对吧?但是,如果允许以简单的方式描述此类内容模型,则需要使用指数算法来针对它们验证 XML!

我认为,W3C 只是想通过强制模式设计者避免使用任意内容模型来彻底避免此类问题。

于 2013-06-07T18:56:49.513 回答