Xquery 特定路径的值的不同组合

Xquery 特定路径的值的不同组合,xquery,basex,Xquery,Basex,我有一个XML树,其中每个节点都有一个子节点。如图所示 有没有办法找到与特定路径相关的不同值组合 例如,如果考虑前面例子中的树,我想根据它们的值找到所有不同的标记组合: INPUT: /A/C/D <A value="5.4"><C value="1.7"><D value="0.4"></D></C></A> <A value="5.1"><C value="1.4"><D value="0.

我有一个XML树,其中每个节点都有一个子节点。如图所示

有没有办法找到与特定路径相关的不同值组合

例如,如果考虑前面例子中的树,我想根据它们的值找到所有不同的标记组合:

INPUT: /A/C/D
<A value="5.4"><C value="1.7"><D value="0.4"></D></C></A>
<A value="5.1"><C value="1.4"><D value="0.2"></D></C></A>
<A value="5.1"><C value="1.4"><D value="0.4"></D></C></A>
<A value="5.0"><C value="1.4"><D value="0.2"></D></C></A>
<A value="5.0"><C value="1.5"><D value="0.2"></D></C></A>
<A value="4.9"><C value="1.5"><D value="0.1"></D></C></A>
<A value="4.6"><C value="1.5"><D value="0.2"></D></C></A>
<A value="4.6"><C value="1.4"><D value="0.3"></D></C></A>
<A value="4.4"><C value="1.4"><D value="0.2"></D></C></A>

INPUT: /C/D
<C value="1.4"><D value="0.2"></D></C>
<C value="1.4"><D value="0.3"></D></C>
<C value="1.4"><D value="0.4"></D></C>
<C value="1.5"><D value="0.1"></D></C>
<C value="1.5"><D value="0.2"></D></C>
<C value="1.7"><D value="0.4"></D></C>
输入:/A/C/D
输入:/C/D

您可以尝试以下方法

distinct-values(
   A//C//D/string-join(
     ancestor-or-self::*[self::A|self::C|self::D]/@value, '|'))

你可以试试类似的东西

distinct-values(
   A//C//D/string-join(
     ancestor-or-self::*[self::A|self::C|self::D]/@value, '|'))

你心目中的“路径”语义是什么?XQuery基于XPath,例如,在链接的示例中,XPath
/A/C/D
不选择任何内容,甚至考虑了
根元素:示例中的输入是一个简单的字符串。你说得对,如果你把这个传递给xpath,我就不会得到输出。但我不知道我该怎么做,也不知道路径的类型。你有什么建议吗?你想用什么样的“路径”语义?XQuery基于XPath,例如,在链接的示例中,XPath
/A/C/D
不选择任何内容,甚至考虑了
根元素:示例中的输入是一个简单的字符串。你说得对,如果你把这个传递给xpath,我就不会得到输出。但我不知道我该怎么做,也不知道路径的类型。你有什么建议吗?非常感谢!我根据不同的路径修改了代码并解决了我的问题。非常感谢!我根据不同的路径修改了代码并解决了我的问题。