2012-05-11 51 views
3

我有一个XSD文件看起来像这样:限制属性值与XSD

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="Configurations"> 
<xs:complexType> 
<xs:sequence> 
<xs:element maxOccurs="unbounded" name="Schema"> 
<xs:complexType> 
<xs:sequence> 
    <xs:element maxOccurs="unbounded" name="Table"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element maxOccurs="unbounded" name="Key"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="Column" maxOccurs="unbounded"> 
           <xs:complexType> 
            <xs:attribute name="Name" type="xs:string" use="required" /> 
            <xs:attribute name="Value" type="xs:string" use="required" /> 
           </xs:complexType> 
          </xs:element> 
         </xs:sequence> 
         <xs:attribute name="Name" type="xs:string" use="required" /> 
         <xs:attribute name="Value" type="xs:string" use="required" /> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      <xs:attribute name="Name" type="xs:string" use="required" /> 
     </xs:complexType> 
    </xs:element> 
</xs:sequence> 
<xs:attribute name="Name" type="xs:string" use="required" /> 
<xs:attribute name="ConnectionString" type="xs:string" use="required" /> 
</xs:complexType> 
</xs:element> 
</xs:sequence> 

而我只是无法弄清楚如何为的Name属性创建xs:enumerationSchema元素,这样只有少数指定的值可以用于该属性。我没有任何好处的XSD,一点点帮助,将不胜感激:)

回答

4

如果你想重用你的所有Name属性的限制类型,在根级别添加simpleType

<xs:simpleType name="Name_type"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="Foo" /> 
     <xs:enumeration value="Bar" /> 
     <xs:enumeration value="Baz" /> 
    </xs:restriction> 
</xs:simpleType> 

然后将其作为您的Name属性的类型参考:

<xs:attribute name="Name" type="Name_type" use="required" /> 
+0

完美!这很好,非常感谢! /佩尔 – Pelle