问题描述
例如:
<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) 来实现?
解决方法
使用密钥/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>