내 XML 구조는 다음과 같다 :이 구조에서XML 스키마 : 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
뿐만 아니라 각 SetOfBandC
여러 ElementB
및 ElementC
, 만 1 SetofB
및 SetOfC
로 .
문제는 ElementD
특정 SetOfBandC
그 세트의 ElementB
를 참조하는 또 다른 하나를 참조하는 keyref이 있지만 XML 검사기가 ElementD->ElementB__Keyref
의 타당성을 검사 할 때 그것은 단지 마지막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
: TNS 내 대상 네임 스페이스입니다
<xs:key name="ElementB__Key">
<xs:selector xpath="tns:ElementB" />
<xs:field xpath="@elemB_name" />
</xs:key>
. 내가 뭘 놓치고 있니?
추신 : 내 코드의 이름은 다르며 여기에 ->
이 없습니다.
올리기가 그렇게하지 선호하는 것 전체 스키마 – Sprotty
@Sprotty을하지만 난 그것을 기록했다. – RVKS