2
:XML-스키마 키/다음 XML-조각을 감안할 때 keyref 문제
<Environment>
...
<MySqlConfiguration>
<ActiveServer>[email protected]</ActiveServer>
<PassiveServer>[email protected]</PassiveServer>
<Replicate from="[email protected]" to="[email protected]" />
<Replicate from="[email protected]" to="[email protected]" />
</MySqlConfiguration>
...
</Environment>
내가 XSD에서 ActiveServer에 규정 된 또는 PassiveServer
에 대한 값으로 /에서 제한 할, 나는 다음을 시도 :
<xs:element name="Environment" type="environment" >
<xs:key name="ServerKey">
<xs:selector xpath=".//ActiveServer|PassiveServer"/>
<xs:field xpath="*"/>
</xs:key>
<xs:keyref name="ServerKeyRef" refer="ServerKey">
<xs:selector xpath=".//Replicate"/>
<xs:field xpath="@from"/>
</xs:keyref>
...
</xs:element>
그러나, 키의 xpath="*"
필드 선택기 (는 액티브/PassiveServer 요소의 텍스트 노드를하지 않습니다) 작동하지 않습니다. xpath="text()"
도 작동하지 않습니다. 다음과 같이하면 :
<xs:element name="Environment" type="environment" >
<xs:key name="ServerKey">
<xs:selector xpath="Environment"/>
<xs:field xpath="ActiveServer|PassiveServer"/>
</xs:key>
<xs:keyref name="ServerKeyRef" refer="ServerKey">
<xs:selector xpath=".//Replicate"/>
<xs:field xpath="@from"/>
</xs:keyref>
...
</xs:element>
작동하지 않습니다 (필드는 하나의 인스턴스를 참조해야하며 그 중 하나만 지정하면 작업 할 수 있음).
필드 xpath 값에서 요소의 텍스트 콘텐츠를 가져 오는 방법을 간과 할 수있는 방법이 있습니까?
좋아, 그래서'XPath를 사용할 수있는 것처럼 = 보이는'키의 필드 값에 대한 ... 그러나, 선택 식'XPath는 = ".// ActiveServer | PassiveServer "는 두 요소 이름 중 첫 번째 일치 (첫 번째 일치, 첫 번째 일치가 아님) 만하므로 keyref는 PassiveServer에 지정되어 있어도 값으로"2 @ db1 "을 포함하는 경우 유효하지 않습니다. –