我的 XML 结构如下:
ROOT
|_ SetOfBandC (*)
| |_ SetOfB (1)
| | |_ ElementB (*)
| | |_ ElementB__Key
| |_ SetOfC (1)
| |_ ElementC (*)
| |_ ElementC__Key
|_ ElementD (*)
|
|_ SetOfBandC__Key
|_ ElementD__Key
|
|_ ElementD->SetOfBandC__Keyref
|_ ElementD->ElementB__Keyref
在这个结构中,我可以有多个SetOfBandC以及多个ElementBand ,但每个ElementC只有 1 个SetofBand 。SetOfCSetOfBandC
问题是ElementD有一个 keyref 引用一个特定的SetOfBandC和另一个引用ElementB该集合的一个,但是 XML Validator 在检查ElementD->ElementB__Keyref' 的有效性时它只搜索最后一个 SetOfBandC,而不是所有的,或者更好的是,在一个被引用ElementD->SetOfBandC__Keyref。因此,当ElementD->ElementB__Keyref引用ElementB不在 last 中的an 时SetOfBandC,验证将不起作用。
这是我的ElementD->ElementB__Keyref:
<xs:keyref name="ElementD->ElementB__Keyref" refer="tns:ElementB__Key ">
<xs:selector xpath="tns:ElementD" />
<xs:field xpath="@elementD_ref" />
</xs:keyref>
我的ElementB__Key:
<xs:key name="ElementB__Key">
<xs:selector xpath="tns:ElementB" />
<xs:field xpath="@elemB_name" />
</xs:key>
其中 tns 是我的目标命名空间。我错过了什么?
PS:我的代码中的名称不同,其中没有->。