2017-03-20 56 views
1

我試圖創建表單1120XXXTP,其中XXX是代碼和TP的標識類型是:lc, lb, pr or exXSD標識圖案

這是我迄今爲止

<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

可以匹配一個正則表達式的標識符:

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