編集:答えを見つけたと思いますが、誰かが修正/改善を行っているかどうかを確認するために、少し開いたままにします。
Talend の etl ツールで xpath を使用しています。私はこのようなxmlを持っています:
<root>
<employee>
<benefits>
<benefit>
<benefitname>CDE</benefitname>
<benefit_start>2/3/2004</benefit_start>
</benefit>
<benefit>
<benefitname>ABC</benefitname>
<benefit_start>1/1/2001</benefit_start>
</benefit>
</benefits>
<dependent>
<benefits>
<benefit>
<benefitname>ABC</benefitname>
</benefit>
</dependent>
扶養家族の福利厚生を解析するとき、従業員の福利厚生要素に存在する要素を取得したいと考えています。したがって、上記の例では、扶養家族の開始日として 2001 年 1 月 1 日を取得したいと考えています。2004 年 2 月 3 日ではなく、2001 年 1 月 1 日が必要です。これは、扶養家族の福利厚生名が ABC であり、従業員の福利厚生と同じ福利厚生名と一致するためです。
/root/employee/dependent/benefits/benefit に相対的などの xpath が、依存する福利厚生名と同じ福利厚生名を持つ親従業員の下の福利厚生の benefit_start の値を生成しますか? (リテラル値がどうなるかは前もってわからないことに注意してください。単に「ABC」を探すことはできません。扶養家族のbenefitname要素に含まれる値と一致する必要があります。
私はしようとしています:
../../../benefits/benefit[benefitname=??what??]/benefit_start
xpath の途中で現在のノードの祖先を参照する方法がわかりません ("." を持っている時点で ??what?? が従業員/福利厚生の福利厚生ノードを参照するため)。
編集:私が欲しいのは「current()/benefitname」だと思います??what?? は。saxon で動作するようですが、etl ツールではまだ試していません。