我正在尝试找到一种编写XML 1.0架构的方法,避免创建无法维持的数字排列。我有5个元素,A,B,C,D和E.在XML中必须只出现一次。 B和C可以在XML中出现0到无穷大的时间。 D和E可以在XML中出现1到无穷大的时间。 A-E可以按任何顺序发生。
避免写出每个可能的序列是很重要的,因为如果我需要在以后添加元素,则模式会呈指数级增长。有没有办法做到这一点?
答案 0 :(得分:0)
看起来不可能。
我这里有一本书: XML Schema: The W3C's Object-Oriented Descriptions for XML 的, 这可能是我读过的关于XML模式的最好的书 (虽然相当复杂而且不完美)。
这是我在那本书中看到的(第236页):
描述具有相同最大出现次数的无序可选元素组的情况可以使用
xs:choice
或替换组来描述,但是其他内容模型(例如具有任意和不同最大出现次数的组无序元素)无法使用W3C XML Schema进行描述。
根据这一点,看起来你的A
元素(必须只出现一次)会破坏一切!
我认为这种限制的原因如下:
你想避免指数排列,对吗? 但如果允许这样的内容模型以简单的方式描述, 它需要一个指数算法来验证它们的XML!
我认为,W3C只是想通过强制架构设计者来彻底避免这些问题 避免任意内容模型。