如何使元素出现在XML Schema中的任何位置

时间:2011-10-12 12:03:32

标签: xsd

我需要一个元素在任何地方出现。最简单的方法是什么?如果我有其他元素,那么将它作为一个可选项放在每个人中是不明智的。

1 个答案:

答案 0 :(得分:0)

一般情况下,你不能这样做,因为你会有一个非确定性的模型。

例如,您不能拥有如下序列组:

<xs:sequence>
   <!-- X is the element that may appear anywhere -->
   <xs:element name="X" minOccurs="0"/>
   <xs:element name="Y" minOccurs="0" maxOccurs="5"/>
   <xs:element name="X" minOccurs="0"/>
 </xs:sequence>

在上文中,元素X的出现可以对X的第一个或第二个声明进行验证。这违反了“唯一粒子归因”(UPA)要求。

可能没有架构可以准确识别您想要的语言。或者,如果您能够看到避免违反UPA的方法,也许您可​​以使用您的特定语言。例如,如果上面的Y不是可选的(如果minOccurs等于maxOccurs),则不会违反UPA。