2014-04-16 55 views
0

我的xsd如下指定XML模式的XML文檔特定字符串

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="College"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element type="xs:string" name="Name" maxOccurs="unbounded" minOccurs="1"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

它必須只允許2個值例 只有ABC和CBS允許

<college> 
<Name>ABC</Name> 
<Name>ABC</Name> 
<Name>CBS</Name> 
</college> 

這不應該允許

<college> 
<Name>ABC</Name> 
<Name>ABC</Name> 
<Name>CBS</Name> 
<Name>XYZ</Name> 
</college> 

回答

2

由於您有可選數量的選項,您可以使用枚舉來限制它們。用您的xs:element聲明代替:

<xs:element name="Name" maxOccurs="unbounded" minOccurs="1"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="ABC"/> 
      <xs:enumeration value="CBS"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:element> 
+0

@DaliusSidlauskas提出的解決方案與此相當。他們中的任何一個都會工作。 – helderdarocha

1

嘗試模式匹配

<xsd:element name="elementName"> 
    <xsd:simpleType> 
     <xsd:restriction base="xsd:string"> 
      <xsd:pattern value="/^[ABC|CBS]$/"></xsd:pattern> 
     </xsd:restriction> 
    </xsd:simpleType> 
</xsd:element>