в XPath Я хотел бы сосредоточиться на определенных элементах и проанализировать их:
...
<field>aaa</field>
...
<field>bbb</field>
...
<field>aaa (1)</field>
...
<field>aaa (2)</field>
...
<field>ccc</field>
...
<field>ddd (7)</field>
Я хочу найти элементы, текстовое содержимое которых (кроме возможного перечисления, является уникальным. В примере aboceэто были бы bbb, ccc и ddd.
Следующий XPath дает мне уникальные значения:
distinct-values(//field[matches(normalize-space(.), ' \([0-9]\)$')]/substring-before(., '(')))
Теперь я хотел бы расширить это и выполнить еще один XPath для всех различных значений,это было бы, чтобы посчитать, сколько полей начинаются с любого из них и получить тех, чей счет больше 1.
Это может быть содержимое поля, равное этому конкретному значению, или оно начинается с этого значенияи сопровождается "(". Проблема в том, что во второй части этого XPath я должен был бы сослаться на контекст самой этой части и на прежний контекст одновременно.
В следующем 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]
Я не могу использовать "." По обоим причинам по очевидным причинам. Но как могЯ ссылаюсь на конкретное или текущее значение, отличное от внешнего выражения во внутреннем выражении?
Это вообще возможно?