XML/XSD 问题:如何使名称不同的两个元素始终相互匹配
XML/XSD ISSUE : How do I make two elements with different names always match with each other
例如:
<Region>
<RegionID>r1</RegionID>
<RegionInfor>A</RegionInfor>
<Subregion>
<SubregionID>s1</SubregionID>
<RegionIDAssociation>r1</RegionIDAssociation>
</Subregion>
</Region>
问题:
我想让 RegionIDAssociation 始终匹配 RegionID,这意味着如果 RegionID 是 r1,则子区域的 RegionIDAssociation 必须填充 r1,如何使用 XML SCHEMA (XSD) 实现?
使用key/keyref:
<xs:element name="Region">
<xs:complexType>
<xs:sequence>
<xs:element ref="RegionID"/>
<xs:element ref="RegionInfor"/>
<xs:element ref="Subregion"/>
</xs:sequence>
</xs:complexType>
<xs:key name="region-id">
<xs:selector xpath="."></xs:selector>
<xs:field xpath="RegionID"></xs:field>
</xs:key>
<xs:keyref refer="region-id" name="subregion-constraint">
<xs:selector xpath="Subregion"></xs:selector>
<xs:field xpath="RegionIDAssociation"></xs:field>
</xs:keyref>
</xs:element>
例如:
<Region>
<RegionID>r1</RegionID>
<RegionInfor>A</RegionInfor>
<Subregion>
<SubregionID>s1</SubregionID>
<RegionIDAssociation>r1</RegionIDAssociation>
</Subregion>
</Region>
问题: 我想让 RegionIDAssociation 始终匹配 RegionID,这意味着如果 RegionID 是 r1,则子区域的 RegionIDAssociation 必须填充 r1,如何使用 XML SCHEMA (XSD) 实现?
使用key/keyref:
<xs:element name="Region">
<xs:complexType>
<xs:sequence>
<xs:element ref="RegionID"/>
<xs:element ref="RegionInfor"/>
<xs:element ref="Subregion"/>
</xs:sequence>
</xs:complexType>
<xs:key name="region-id">
<xs:selector xpath="."></xs:selector>
<xs:field xpath="RegionID"></xs:field>
</xs:key>
<xs:keyref refer="region-id" name="subregion-constraint">
<xs:selector xpath="Subregion"></xs:selector>
<xs:field xpath="RegionIDAssociation"></xs:field>
</xs:keyref>
</xs:element>