セットアップ: 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>
I ファイルを解析するとき、ブロブが出現するたびに知りたいと思います。現在のノードと同じ値を持つブロブが最初に出現する前に、ブロブの個別の値がいくつあるか。
したがって、基本的には、最初に現在のノードと同じ値を持つ blub が最初に出現した場所を特定し、それから前の個別の blub の数を計算します。
私の問題の 1 つは、Altova が current() 関数をサポートしていないことです。引用: 「current() 関数は XPath 関数ではなく XSLT 関数であるため、StyleVision の自動計算および条件付きテンプレートでは使用できないことに注意してください。式で現在のノードを選択するには、XPath 2.0 の for 式を使用します。 "
したがって、 current() 関数なしで実行できるソリューションはどれも素晴らしいでしょう;)
皆さんありがとう!
ステボ