我希望能够多次指定一个元素,在我的情况下Param
。
这是XSD:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Abc">
<xs:complexType>
<xs:sequence>
<xs:element name="Def" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<!-- ... other elements ... -->
<xs:element name="Param" minOccurs="0" maxOccurs="unbounded"> <!-- Using unbounded is not allowed here -->
<xs:complexType>
<xs:attribute name="Name"/>
<xs:attribute name="Value"/>
</xs:complexType>
</xs:element>
<!-- ... other elements ... -->
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这是相应的XML:
<Abc xsi:noNamespaceSchemaLocation="SourcesSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Def>
<Param Name="one" Value="blue"/>
<Param Name="two" Value="yellow"/>
<Param Name="three" Value="green"/>
</Def >
</Abc>
尝试这个,我得到以下异常:
Cos-all-limited.2: The {max Occurs} Of An Element In An 'all' Model Group Must Be 0 Or 1. The Value '-1' For Element 'Param' Is Invalid.
答案 0 :(得分:0)
xsd:all只允许0或1次出现任何子节点。
您可以使用xsd :: sequence代替..但要知道在这种情况下,它们中的任何元素都按照它们必须出现在xml中的顺序定义。