2
<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>
我想從/限制值在ActiveServer指定的那些或PassiveServer
在XSD,我嘗試以下方法:
<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包含」2 @ db1「作爲值,即使它在PassiveServer中指定,它也不會有效。 – 2012-02-09 21:30:37