XML Schema key / keyref其中keyref不是属性

时间:2016-11-28 15:17:39

标签: xml xpath xsd

我正在编写XML Schema来验证XML文档。

如果一个节点通过将引用节点的id作为ATTRIBUTE引用一个键,我就可以强制执行约束。

<root>
  <A>
    <as id="1"/>
    <as id="2"/>
  </A>
  <B>
    <bs refthisid="1"/>
    <bs refthisid="2"/>
    <bs refthisid="3"/> /* would give an error during validation */
  </B>
</root>

我通过XML Schema中的<xs:key><xs:keyref>元素执行此操作。像这样:

<xs:key name="some_key">
    <xs:selector xpath="root/A/as">
    <xs:field xpath="@id"/>
</xs:key>
<xs:keyref name="some_keyref" refer="some_key">
    <xs:selector xpath="root/B/bs">
    <xs:field xpath="@refthisid"/>
</xs:keyref>

工作正常,但如果refkey是节点的VALUE / TEXT,我该怎么办?像这样:

    <root>
      <A>
        <as id="1"/>
        <as id="2"/>
      </A>
      <B>
        <bs>1</bs>
        <bs>2</bs>
        <bs>3></bs> /* should give an error during validation */
      </B>
    </root>

我无法弄清楚选择器和字段路径中的内容。 : - (

<xs:keyref name="some_keyref" refer="some_key">
    <xs:selector xpath="root/B/bs??????">
    <xs:field xpath="??????"/>
</xs:keyref>

或者是一种完全不同的方法吗? XML并不是我的力量,我的在线搜索完全没有可用的建议。 谢谢!

0 个答案:

没有答案