【发布时间】:2012-06-04 14:51:38
【问题描述】:
我有两个 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/*...?
【问题讨论】:
-
“所有这些都需要在 XQuery 中发生”并不完全准确。 XQuery 是通过一些 hacky 字符串连接代码生成的,因此我可以执行任何我想要创建查询的字符串操作。我的意思是我不能做一些事情,比如抓取一组匹配的节点,然后将
f(x)应用于该组中的每个节点(除非我可以在 Oracle SQL 中这样做,但性能可能不太理想)。