元素和属性的XSD枚举

时间:2015-11-11 14:25:20

标签: xml xsd xml-validation

我有一个XML标记,其中包含属性和内容。 我想检查几个可能的属性和内容。

我的XML:

<Filter>
   <Value type="!NULL">AAA.BBB</Value>
   <Value type="!BLANK">XXX.YYY</Value>
   <Value type="!EMPTY">AAA.BBB</Value>
   <Value type="!Content">XXX.YYY</Value>
</Filter>

我的XSD:

  <xs:complexType name="ValueType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="type" use="required">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value="!NULL" />
              <xs:pattern value="!BLANK" />
              <xs:pattern value="!EMPTY" />
              <xs:pattern value="!Content" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

使用此XSD,我验证了属性...但是如何扩展它并强制它验证内容,如&#34; AAA.BBB&#34;和&#34; XXX.YYY&#34; ?

1 个答案:

答案 0 :(得分:1)

以下XSD演示了如何在属性和元素内容上使用枚举

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="Filter">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Value" maxOccurs="unbounded" type="ValueType"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ValueType">
    <xs:simpleContent>
      <xs:extension base="ValueContentType">
        <xs:attribute name="type" use="required">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value="!NULL" />
              <xs:pattern value="!BLANK" />
              <xs:pattern value="!EMPTY" />
              <xs:pattern value="!Content" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="ValueContentType">
    <xs:restriction base="xs:string">
      <xs:pattern value="AAA.BBB" />
      <xs:pattern value="XXX.YYY" />
      <xs:pattern value="AAA.BBB" />
      <xs:pattern value="XXX.YYY" />
    </xs:restriction>
  </xs:simpleType>

</xs:schema>

并将验证您的XML

<?xml version="1.0" encoding="UTF-8"?>
<Filter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="try2.xsd">
   <Value type="!NULL">AAA.BBB</Value>
   <Value type="!BLANK">XXX.YYY</Value>
   <Value type="!EMPTY">AAA.BBB</Value>
   <Value type="!Content">XXX.YYY</Value>
</Filter>

成功,按要求对属性和元素内容强制执行枚举。