Xml 只要有';不止一个元素
我不知道这个代码有什么问题:Xml 只要有';不止一个元素,xml,xsd,Xml,Xsd,我不知道这个代码有什么问题: <xs:choice> <xs:element name="tiles" type="tiles" minOccurs="1" maxOccurs="1"/> <xs:element name="tiles" type="tiles-with-key" minOccurs="2" maxOccurs="unbounded"/> </xs:choice> 我做错了什么?它被称为唯一粒子属性(Unique Par
<xs:choice>
<xs:element name="tiles" type="tiles" minOccurs="1" maxOccurs="1"/>
<xs:element name="tiles" type="tiles-with-key" minOccurs="2" maxOccurs="unbounded"/>
</xs:choice>
我做错了什么?它被称为唯一粒子属性(Unique Particle Attributes,UPA),它基本上说解析器必须知道它在模型中的位置,而无需预先考虑。在这种情况下,如果您选择的选项之间的标记名相同,解析器将不知道应用哪个模型
您的问题基本上是基于外部条件(这里是tiles元素的计数)来控制属性的使用(必需与可选)。这在XSD1.0中根本不可能实现。XSD1.0的Schematron是一种选择;其他人可能会建议使用XSD 1.1,因为对它的支持率很低,所以在这里找到一个可行的解决方案还为时过早。它被称为唯一粒子属性(Unique Particle Attributes,UPA),它基本上说解析器必须知道它在模型中的位置,而无需预先考虑。在这种情况下,如果您选择的选项之间的标记名相同,解析器将不知道应用哪个模型 您的问题基本上是基于外部条件(这里是tiles元素的计数)来控制属性的使用(必需与可选)。这在XSD1.0中根本不可能实现。XSD1.0的Schematron是一种选择;其他人可能会建议使用XSD1.1,但由于对XSD1.1的支持率很低,因此在这里找到可行的解决方案还为时过早
<!-- one element, no need for the "key" attribute -->
<tiles>
...
</tiles>
<!-- two elements, we need the "key" to differentiate them -->
<tiles key="1">
...
</tiles>
<tiles key="2">
...
</tiles>