2010-03-03 112 views
5

我有下面的XML:XSD - 限制屬性值到另一個元素屬性值

<Content name="contentName1"> 
    <!-- Some sub elements here --> 
</Content> 

<Sequence Name="sequenceName1"> 
    <Content name="contentName1" /> 
    <!-- Some sub elements here --> 
</Sequence> 

具有以下XSD

<xs:element maxOccurs="unbounded" name="Content"> 
    <xs:complexType> 
     <xs:attribute name="Name" type="xs:string" use="required" /> 
     <!-- other definitions here --> 
    </xs:complexType> 
</xs:element> 

<xs:element maxOccurs="unbounded" name="Sequence"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element maxOccurs="unbounded" name="Content"> 
       <xs:complexType> 
        <xs:attribute name="ContentName" type="xs:string" use="required" /> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
     <xs:attribute name="Name" type="xs:string" use="required" /> 
    </xs:complexType> 
</xs:element> 

在XSD,我怎麼能告訴的內容名屬性Sequence的Content元素只接受在Content元素的ContentName中聲明的值?

例如:使用上面提供的XML,只有contentName1將被序列內容接受。

回答

-1

我不是XSD也很好,但也許你會改變<xs:attribute name="Name" type="xs:string" use="required" /><xs:attribute name="Name" type="contentNames" use="required" />

,並創建

<xs:simpleType name="contentNames" > 
    <xs:restriction base="xs:token"> 
     <xs:enumeration value="contentName1"/> 
     <xs:enumeration value="contentName2"/> 

     <xs:pattern value="contentName[1234567890][1234567890]"/> 
     <xs:enumeration value="contentName1"/> 
    </xs:restriction> 
    </xs:simpleType> 

<xs:pattern value="contentName[1234567890][1234567890]"/> 

contentName1-99,但不知道是否可以使用<xs:enumeration/>過,你可以嘗試