我需要一個XML驗證問題的建議。我的問題是,我需要設置一個用於XML驗證的XSD,它定義了兩個必填字段和兩個可選字段。根據可用的數據,字段的特徵切換。XSD'包含或'
如果滿足任何一個描述的情況,XML應該是有效的。
- 應該可以填寫字段AAA和BBB。當這些字段被填充時,CCC和DDD可能是空的。
- 填充字段CCC和DDD時,字段AAA和BBB應是可選的。
我在思考類似以下的結構,但我不能把它與我的Altova XMLSPY 2012年保存它說的內容模型不是唯一的。
<xs:complexType name="ZZZType">
<xs:annotation>
<xs:documentation>Selection</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="XXX" type="xs:string" nillable="true" minOccurs="0"/>
<xs:choice>
<xs:sequence>
<xs:element name="AAA" type="AAAType" nillable="false"/>
<xs:element name="BBB" type="BBBType" nillable="false"/>
<xs:element name="CCC" type="CCCType" nillable="false" minOccurs="0"/>
<xs:element name="DDD" type="DDDType" nillable="false" minOccurs="0"/>
</xs:sequence>
<xs:sequence>
<xs:element name="AAA" type="AAAType" nillable="false" minOccurs="0"/>
<xs:element name="BBB" type="BBBType" nillable="false" minOccurs="0"/>
<xs:element name="CCC" type="CCCType" nillable="false"/>
<xs:element name="DDD" type="DDDType" nillable="false"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
有沒有辦法實現我想要做的事情?
你應該更具體一些......這是可能的XSD 1.1。典型的答案是XSD 1.0 + Schematron或者XSD 1.1 –
感謝@PetruGardea的更正。我要解決答案。我不知道XSD 1.1支持斷言。這很酷。 – helderdarocha
是的,XSD 1.1中的一些功能非常酷。不幸的是,對XSD 1.1的支持不是很廣泛,所以經常不能使用這個原因。 – Dijkgraaf