我正在尝试创建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">
我无法正确设置模式。
答案 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>