Установка: я использую XPath 2.0. Но внутри Altova Stylevision см. мой комментарий позже.
У меня есть следующая структура XML:
<?xml version="1.0" encoding="UTF-8"?>
<entries>
<bla>
<blub>222</blub>
</bla>
<bla>
<blub>222</blub>
</bla>
<bla>
<blub>123</blub>
</bla>
<bla>
<blub>234</blub>
</bla>
<bla>
<blub>123</blub>
<!--I want to find the number of distinct elements before the first occurance of a blub element with the same value as the current node - so for this node the result should be one (two times 222 before the first appearance of 123)-->
</bla>
</entries>
При анализе этого файла я хотел бы знать при каждом появлении blub: сколько различных значений blub существует до первого появления blub с тем же значением, что и текущий узел.
Итак, в основном сначала определяем, где первое появление булла с тем же значением, что и текущий узел, а затем выясняем количество различных блабов до этого.
Одна из моих проблем заключается в том, что Altova не поддерживает функцию current(). Цитата: «Обратите внимание, что функция current() является функцией XSLT, а не функцией XPath, и поэтому ее нельзя использовать в автоматических вычислениях и условных шаблонах StyleVision. Чтобы выбрать текущий узел в выражении, используйте выражение for XPath 2.0. "
Так что любое решение, которое могло бы обойтись без функции current(), было бы отличным;)
Спасибо всем!
Стево