我的实际xml是这样的:
<gender code="2" display="female />
性别代码是1名男性,2名女性。现在我已经有了像这样的xsd:
<xs:element name="gender">
<xs:complexType>
<xs:attribute name="code" type="xs:int">
<xs:simpleType>
<xs:restriction base="int">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="displayName" type="xs:string">
<xs:simpleType>
<xs:restriction>
<xs:enumeration value="male"/>
<xs:enumeration value="female"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
但它对这个xml也有效:
<gender code="2" display="male />
我正在寻找xs:限制,但它似乎没有帮助。有另一种方法来修复我的xsd?
要在多个属性之间施加约束,您需要XSD 1.1断言:
<xs:assert test="(@code=1 and @display='male')
or (@code=2 and @display='female')"/>
作为xs:element
的孩子。
但并非所有架构处理器都支持XSD 1.1。