XSD 标识符模式

XSD identifier pattern

我正在尝试创建 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">

我无法正确设置模式。

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

<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>