XPathでは、特定の要素に焦点を当てて分析したいと思います。
...
<field>aaa</field>
...
<field>bbb</field>
...
<field>aaa (1)</field>
...
<field>aaa (2)</field>
...
<field>ccc</field>
...
<field>ddd (7)</field>
テキストコンテンツである要素を見つけたいと思います(可能な列挙は別として、一意です。上記の例では、bbb、ccc、およびdddになります。
次のXPathは、一意の値を提供します。
distinct-values(//field[matches(normalize-space(.), ' \([0-9]\)$')]/substring-before(., '(')))
ここで、それを拡張し、すべての個別の値に対して別のXPathを実行します。つまり、いずれかで始まるフィールドの数をカウントし、カウントが1より大きいフィールドを取得します。
これらは、その特定の値に等しいフィールドコンテンツであるか、その値で始まり、その後に「(」が続く可能性があります。問題は、そのXPathの2番目の部分で、その部分自体のコンテキストを参照する必要があることです。同時に前者の文脈に。
次のXPathでは、「。」を使用する代わりに-を使用します。コンテキストとして-c_outerとc_innerを使用します。
distinct-values(//field[matches(normalize-space(.), ' \([0-9]\)$')]/substring-before(., '(')))[count(//field[(c_inner = c_outer) or starts-with(c_inner, concat(c_outer, ' ('))]) > 1]
「。」は使えません。明らかな理由で両方のために。しかし、どのようにして特定の値、または内部式内の外部式から現在の個別の値を参照できますか?
それも可能でしょうか?