XSD - 限制属性值到另一个元素属性值

问题描述:

我有下面的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将被序列内容接受。

身份约束定义用于实施唯一的主键和外键关系。您需要先为content元素定义一个关键元素,然后在内部元素中使用keyref作为模式验证器来强制执行您提到的条件。
请参考以下链接它有一些例子还有,也xfront了XSD的教程介绍了一些例子 -

http://www.w3.org/TR/xmlschema11-1/#Identity-constraint_Definition_details
http://www.xfront.com/files/xml-schema.html

我不是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/>过,你可以尝试