我的实际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:restriction,但似乎没有帮助。还有另一种方法可以修复我的xsd吗?
答案 0 :(得分:0)
要对多个属性施加约束,您需要XSD 1.1断言:
<xs:assert test="(@code=1 and @display='male')
or (@code=2 and @display='female')"/>
xs:element
的子代。
但并非所有架构处理器都支持XSD 1.1。