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