特定路径的不同值组合

Distinct combination of value for a specific path

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

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

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

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>

你可以试试

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