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>