我有一个包含以下内容的模式文件。我收到错误
cos-all-restricted.1.2:'all'模型组必须出现在粒子中 '{'min occurrence'}'='{'max恰好'}'= 1,那个粒子必须 成为一对的一部分构成a的'{'内容类型'}' 复杂类型定义。
我该如何解决这个问题?
<?xml version="1.0"?>`enter code here`
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="custGroup">
<xs:all>
<xs:element name="customer" type="xs:string"/>
<xs:element name="orderdetails" type="xs:string"/>
<xs:element name="billto" type="xs:string"/>
<xs:element name="shipto" type="xs:string"/>
</xs:all>
</xs:group>
<xs:element name="order" type="ordertype"/>
<xs:complexType name="ordertype">
<xs:choice>
<xs:group ref="custGroup"/>
<xs:element name="status" type="xs:string"/>
</xs:choice>
</xs:complexType>
</xs:schema>
答案 0 :(得分:1)
不要以这种方式使用all
,这违反了XSD的确定性原则。你可以通过接受你想要一个固定的元素顺序(通常是最好的东西)来解决这个问题,或者通过将它更改为具有4..4序列的choice
并将每个元素作为自身来定义它们(全局定义它们以获得这个)。
这是实现此目的的一种方法:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="custGroup">
<xs:sequence>
<xs:element name="customer" type="xs:string"/>
<xs:element name="orderdetails" type="xs:string"/>
<xs:element name="billto" type="xs:string"/>
<xs:element name="shipto" type="xs:string"/>
</xs:sequence>
</xs:group>
<xs:element name="order" type="ordertype"/>
<xs:complexType name="ordertype">
<xs:choice>
<xs:element name="status" type="xs:string"/>
<xs:group ref="custGroup"/>
</xs:choice>
</xs:complexType>
</xs:schema>
答案 1 :(得分:0)
你无法解决&#34;它没有改变规格,这将不会发生。您可以将内容模型更改为XSD支持的模型,也可以使用其他验证技术。