0
請在下面找到我正在使用的XSD。我希望至少有一個或兩個元素:STYPE1和STYPE2要存在。XSD驗證 - 一個或兩個
獲得的錯誤:元素'元素'無效,放錯位置或發生頻率過高。
這裏是我的xsd:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="table">
<xs:complexType>
<xs:sequence>
<xs:element name="rows">
<xs:complexType>
<xs:sequence>
<xs:element name="row" maxOccurs="unbounded" minOccurs="0">
<xs:complexType mixed="true">
<xs:element name="SNO" type="xs:string"/> \t \t
<xs:choice minOccurs="1" maxOccurs="2">
<xs:element name="STYPE1" type="Type1"/> \t \t \t \t \t \t
<xs:element name="STYPE2" type="Type2"/> \t
<xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Start with either A or B followed by 8 characters -->
<xs:simpleType name="Type1">
<xs:restriction base="xs:string">
<xs:pattern value="(A|B)([a-zA-Z0-9])*"/>
\t <xs:length value="9"/>
</xs:restriction>
</xs:simpleType>
<!-- Start with either C or D followed by 6 characters -->
<xs:simpleType name="Type2">
<xs:restriction base="xs:string">
<xs:pattern value="(C|D)([a-zA-Z0-9])*"/>
\t <xs:length value="7"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
這裏是我的xml文件:
<root>
<table>
<rows>
<row>
<SNO>1</SNO>
<STYPE1>A12345678</STYPE1>
<STYPE2>C654321</STYPE2>
</row> \t
\t \t <row>
<SNO>2</SNO>
<STYPE1>B12345678</STYPE1>
<STYPE2>D654321</STYPE2>
</row>
</rows>
</table>
</root>
任何幫助將不勝感激。
感謝您的幫助。事實上,XML元素(SNO,STYPE1,STYPE2)可以以任意順序排列。如果我添加xs:序列,這將不再可能。但是,如果您沒有指出xs:sequence,那麼xs:choice不起作用。任何想法如何解決這個問題? – Original16