我有两个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/*...
?
答案 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()返回的节点列表中执行它。