给出以下xml:
<root>
<families>
<family familyname="Flintstone">
<member name="Fred"/>
<member name="Wilma"/>
</family>
<family familyname="Rubble">
<member name="Barney"/>
<member name="Betty"/>
<member name="Bamm-Bamm"/>
</family>
</families>
<employees>
<employee name="Fred" familyname="Flintstone"/>
<employees>
</root>
是否可以在xsd中构建一个key / keyref约束来验证empployee的有效性?
以下内容不适用于密钥(keyref是直接向前):
<xs:key name="Individuals">
<xs:selector xpath="./families/family/member"/>
<xs:field xpath="@name"/>
<xs:field xpath="../@familyname"/>
</xs:key>
是否有有效的替代方案?
答案 0 :(得分:0)
不,如上所述,这是不可能的。我认为“有效替代”是实现您的意图的,即使它涉及对XML的更改。
在这种情况下,只需向成员添加新的强制属性(@key作为示例)元素。这意味着您应该从员工中删除name + familyname,然后添加密钥。
它会更像是一个“数据库”......好处:
我意识到你的插图是一个真实场景的模型,因此我的最后一个好处可能与你的实际情况无关。不过,这是一种应该适用的思维方式。