Xsd validation 如何在XSD中添加条件验证:
现有XSD代码段:Xsd validation 如何在XSD中添加条件验证:,xsd-validation,Xsd Validation,现有XSD代码段: <xs:element name="searchcriteria"> <xs:complexType> <xs:sequence> <xs:element ref="filter" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence>
<xs:element name="searchcriteria">
<xs:complexType>
<xs:sequence>
<xs:element ref="filter"
minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="Request"
type="RequestType" />
</xs:complexType>
</xs:element>
<xs:element name="filter">
<xs:complexType>
<xs:sequence>
<xs:element ref="filter"
minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="FieldName"
type="FieldNameType" />
</xs:complexType>
</xs:element>
。。。
- RequestType:枚举2个值R1和R2
- FieldNameType:枚举两个值F1和F2
R1
和R2
的元素替换searchcriteria
元素。按照您的意愿,使用不同的类型声明它们:或者它们每个都有一个名为filter
的元素,该元素的属性带有适当的枚举类型,或者R1
被声明为具有F1
或F2
作为子元素,并且R2
被声明为具有F1
的选择,F3
,或F4
如果您不能或不愿意这样做,您可以使用XSD 1.1及其条件类型分配功能为searchcriteria
声明两种类型(这两种类型本应用于R1
和R2
),并根据请求
属性的值分配适当的类型。您还可以使用searchcriteria
上的断言来检查co约束
如果您没有访问XSD 1.1验证程序的权限,请告诉XSD 1.0验证程序的供应商您希望升级,并探索使用Schematron断言检查约束
有关选项的更多具体讨论,请参见,并附有示例