Xml 基于XSD中的另一个属性强制验证辅助属性 问题:
如果Xml 基于XSD中的另一个属性强制验证辅助属性 问题:,xml,xsd,xml-validation,Xml,Xsd,Xml Validation,如果basetype是“百分比”,是否有办法将子类型强制为“百分比” 我的意思是,如果basetype是“百分比”,而subtype不是“百分比”,验证会失败吗 XML部分 XSD相关章节 XSD 1.0 XSD 1.0不能表示您的约束 XSD 1.1 XSD 1.1可以使用xs:assert: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSch
basetype
是“百分比”
,是否有办法将子类型强制为“百分比”
我的意思是,如果basetype
是“百分比”
,而subtype
不是“百分比”
,验证会失败吗
XML部分
XSD相关章节
XSD 1.0
XSD 1.0不能表示您的约束
XSD 1.1
XSD 1.1可以使用xs:assert
:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1">
<xs:element name="quantity">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="basetype" type="basetype" use="required"/>
<xs:attribute name="value" type="xs:double" use="required"/>
<xs:attribute name="subtype" type="subtype" use="required"/>
<xs:assert test="(@basetype != 'percent') or (@subtype = 'percent')"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="basetype">
<xs:restriction base="xs:string">
<xs:enumeration value="fixed"/>
<xs:enumeration value="percent"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="subtype">
<xs:restriction base="xs:string">
<xs:enumeration value="foo"/>
<xs:enumeration value="percent"/>
<xs:enumeration value="bar"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
<xs:element name="thing">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="basetype" type="basetype" use="required"/>
<xs:attribute name="value" type="xs:double" use="required"/>
<xs:attribute name="subtype" type="subtype" use="required"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="basetype">
<xs:restriction base="xs:string">
<xs:enumeration value="fixed"/>
<xs:enumeration value="percent"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="subtype">
<xs:restriction base="xs:string">
<xs:enumeration value="foo"/>
<xs:enumeration value="percent"/>
<xs:enumeration value="bar"/>
</xs:restriction>
</xs:simpleType>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1">
<xs:element name="quantity">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="basetype" type="basetype" use="required"/>
<xs:attribute name="value" type="xs:double" use="required"/>
<xs:attribute name="subtype" type="subtype" use="required"/>
<xs:assert test="(@basetype != 'percent') or (@subtype = 'percent')"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="basetype">
<xs:restriction base="xs:string">
<xs:enumeration value="fixed"/>
<xs:enumeration value="percent"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="subtype">
<xs:restriction base="xs:string">
<xs:enumeration value="foo"/>
<xs:enumeration value="percent"/>
<xs:enumeration value="bar"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>