XQuery中的XPath组合

时间:2012-06-04 14:51:38

标签: xpath xquery

我有两个XPath,f(x)g(y),以及一些XML x

x = <example>
  <a>
    <number>1</number>
  </a>
  <b>
    <letter>A</letter>
  </b>
  <c>
    <number>2</number>
  </c>
</example>

f(x) = /example/*

g(y) = /number|/letter

如何在XQuery中编写h(x)h(x) = g(f(x))代表任何g(x)?我提前不知道g(x)所以我无法修改它。如有必要,我可以修改f(x)。所有这些都需要在XQuery中发生,因为它是Oracle查询的一部分。

h(x) = g(f(x)) = $data/example/*...

2 个答案:

答案 0 :(得分:1)

我可能对这个问题感到困惑,但如果我理解正确,那么答案就是

let $f := FFFF return $f/(GGGG)

其中FFFF和GGGG是对应于f(x)和g(y)的表达式

但我假设你的例子错了,当你写了

g(y) = /number|/letter

你的意思

g(y) = number|letter

即。相对选择而不是绝对选择。

答案 1 :(得分:0)

一种方法是连接字符串:

h(x, g_postfix) = '$data/example/*' + g_postfix

显然要照顾'|'这需要拆分,连接然后加入。

另一种方法是传递“g”函数的名称,然后创建动态SQL,在循环中通过f()返回的节点列表中执行它。