给定以下xml代码片段:
<Environment>
...
<MySqlConfiguration>
<ActiveServer>1@db1</ActiveServer>
<PassiveServer>2@db1</PassiveServer>
<Replicate from="1@db1" to="2@db1" />
<Replicate from="2@db1" to="1@db1" />
</MySqlConfiguration>
...
</Environment>我希望将from/to值限制为在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="*"字段选择器不起作用(它不能获得活动/被动服务器元素的文本节点)。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值中获取元素的文本内容?
发布于 2012-02-27 04:59:47
我希望下面的方法能起作用:
<xs:selector xpath=".//ActiveServer|.//PassiveServer"/>
<xs:field xpath="."/>注"|“的优先级最低,因此需要重复".//”。来自XSD Rec的BNF:
Selector ::= Path ( '|' Path )*https://stackoverflow.com/questions/9218975
复制相似问题