我的 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
以及多个ElementB
and ,但每个ElementC
只有 1 个SetofB
and 。SetOfC
SetOfBandC
问题是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:我的代码中的名称不同,其中没有->
。