Attributes XSD:属性值的不同限制
我是XSD新手,有以下问题,非常感谢您的帮助 假设我有xml:Attributes XSD:属性值的不同限制,attributes,xsd,restriction,Attributes,Xsd,Restriction,我是XSD新手,有以下问题,非常感谢您的帮助 假设我有xml: <DataGroup> <Data name="name">Jane</Data> <Data name="age">50</Data> <Data name="state>MA</Data> <Data name="zipcode">01000</Data> </DataGroup> 简 50
<DataGroup>
<Data name="name">Jane</Data>
<Data name="age">50</Data>
<Data name="state>MA</Data>
<Data name="zipcode">01000</Data>
</DataGroup>
简
50
使用XSD 1.1可以为每种情况声明替代类型。此外,您可以将
元素的数量限制为正好四个,并添加断言以确保每个不同的属性只出现一次:
<xs:element name="DataGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="Data" maxOccurs="4" minOccurs="4">
<xs:alternative type="NameData" test="@name='name'" />
<xs:alternative type="AgeData" test="@name='age'" />
<xs:alternative type="ZipData" test="@name='zipcode'"/>
<xs:alternative type="StateData" test="@name='state'"/>
</xs:element>
</xs:sequence>
<xs:assert test="Data/@name='name' and Data/@name='age' and Data/@name='zipcode' and Data/@name='state'"></xs:assert>
</xs:complexType>
</xs:element>
由于
是一个简单类型,因此需要将属性声明为每个类型的扩展:
<xs:complexType name="NameData">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="AgeData">
<xs:simpleContent>
<xs:extension base="AgeType">
<xs:attribute name="name" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ZipData">
<xs:simpleContent>
<xs:extension base="ZipType">
<xs:attribute name="name" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="StateData">
<xs:simpleContent>
<xs:extension base="StateType">
<xs:attribute name="name" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
在作为简单类型基础的类型中声明的限制:
<xs:simpleType name="AgeType">
<xs:restriction base="xs:integer">
<xs:minExclusive value="20"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="StateType">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{2}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ZipType">
<xs:restriction base="xs:string">
<xs:pattern value="\d{5}"/>
</xs:restriction>
</xs:simpleType>
这将根据您需要的限制来验证您的文件。您使用的是XSD 1.1版还是XSD 1.0版?可以使用任何一种。