1

我有两个 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

我如何h(x)在 XQuery 中这样h(x) = g(f(x))g(x)呢?我不g(x)提前知道,所以我无法修改它。如果需要我可以修改f(x)。所有这些都需要在 XQuery 中进行,因为它是 Oracle 查询的一部分。

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

4

2 回答 2

1

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

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

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

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

g(y) = /number|/letter

你的意思是

g(y) = number|letter

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

于 2012-06-04T17:22:09.050 回答
0

一种方法是连接字符串:

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

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

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

于 2012-06-04T14:59:55.220 回答