XSD 1.1 断言属性必须存在于文档中

XSD 1.1 assert attribute must be present in document

使用 XSD 1.1 是否可以断言某个属性存在于其他地方。

示例:

<root>
  <someelement>
    <lookup name="test"/>
    <bla>
      <lookup name="tbl2"/>
      <morebla>
        <evenmore>
          <lookup name="tbl2"/>
        </evenmore>
      </morebla>
    </bla>
  </someelement>
  <table name="test">
    ...
  </table>
  <table name="tbl2">
    ...
  </table>
</root>

我如何断言元素查找具有在 table 元素中使用的名称?

断言需要在根元素上,因为不可能断言元素树,但我如何断言每个查找元素,无论它在文档结构中的什么位置?

请记住,在 XPath 2.0 比较 $s1 = $sequence2 returns 为真当且仅当 $s1(或其任何元素,如果它是一个序列)存在于 $sequence2 中。所以你可以使用这个简单的 XPath 测试你的断言:

every $lookupName in descendant-or-self::lookup/@name satisfies $lookupName = descendant-or-self::table/@name