Моя XML структура выглядит следующим образом:XML Schema: KeyRef иерархически нижний элемент
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
и ElementC
, но только 1 SetofB
и SetOfC
для каждого SetOfBandC
,
Проблема заключается в том, что ElementD
имеет KeyRef ссылающегося конкретный SetOfBandC
и еще один ссылающиеся на ElementB
этого набора, но валидатор XML при проверке СИЛЫ ElementD->ElementB__Keyref
«s он ищет только в последногоSetOfBandC
, а не во всех них или, лучше, в том, что указано ElementD->SetOfBandC__Keyref
. Итак, когда ElementD->ElementB__Keyref
ссылается на ElementB
, который не находится в последних 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>
Где ТНС это мое пространство имен. Что мне не хватает?
PS: имена в моем коде разные, и в них нет ->
.
сообщение вся схема – Sprotty
@Sprotty я предпочел бы не делать этого, но я отправил его. – RVKS