首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML-Schema键/keyref问题

XML-Schema键/keyref问题
EN

Stack Overflow用户
提问于 2012-02-10 05:20:59
回答 1查看 969关注 0票数 2

给定以下xml代码片段:

代码语言:javascript
复制
<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中,我尝试了以下操作:

代码语言:javascript
复制
 <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()"也不起作用。做一些类似的事情:

代码语言:javascript
复制
<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值中获取元素的文本内容?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-27 04:59:47

我希望下面的方法能起作用:

代码语言:javascript
复制
  <xs:selector xpath=".//ActiveServer|.//PassiveServer"/>
  <xs:field xpath="."/>

注"|“的优先级最低,因此需要重复".//”。来自XSD Rec的BNF:

代码语言:javascript
复制
 Selector  ::=  Path ( '|' Path )*
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9218975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档