XSD标识符模式

时间:2017-03-20 00:53:16

标签: regex xml xsd xsd-validation xml-validation

我正在尝试创建1120XXXTP表单的标识符,其中XXX是代码而TP是类型:lc, lb, pr or ex

这是我到目前为止所拥有的

<xs:simpleType name="complex" >
 <xs:union>
  <xs:simpleType>
    <xs:restriction base="xs:string" >
      <xs:pattern value="[1][1][2][0][0-9]{3}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="lc" />
      <xs:enumeration value="lb" />
      <xs:enumeration value="pr" />
      <xs:enumeration value="ex" />
    </xs:restriction>
  </xs:simpleType>
</xs:union>

这是XML中标识符应该是什么样子的示例

<Classes>
    <CoursePartReference code="1120002lc">

我无法正确设置模式。

1 个答案:

答案 0 :(得分:1)

您可以将标识符与单个正则表达式匹配:

<xs:pattern value="1120\d{3}(lc|lb|pr|ex)" />

总而言之,这个XML,

<CoursePartReference code="1120002lc">

对此XSD有效,

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="CoursePartReference">
    <xs:complexType>
      <xs:attribute name="code">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:pattern value="1120\d{3}(lc|lb|pr|ex)" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
</xs:schema>