2014-04-16 34 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>