编辑:我想我找到了答案,但我会稍微开放一下,看看是否有人有更正/改进。
我在 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>
在解析家属福利时,我想获取员工福利元素中存在的元素。所以在上面的例子中,我想得到 1/1/2001 作为受抚养人的开始日期。我想要 2001 年 1 月 1 日,而不是 2004 年 2 月 3 日,因为受抚养人的福利具有福利名称 ABC,将员工的福利与相同的福利名称相匹配。
相对于 /root/employee/dependent/benefits/benefit 的哪个 xpath 将为具有与从属福利名称相同的福利名称的父员工下的福利产生福利起始值?(注意我不提前知道字面值是什么,我不能只寻找'ABC',我必须匹配依赖项的利益名称元素中的任何值。
我正在努力:
../../../benefits/benefit[benefitname=??what??]/benefit_start
我不知道如何在 xpath 中间引用当前节点的祖先(因为我认为“。”在我有 ??what?? 时将引用员工/福利的福利节点。
编辑:我想我想要的是“current()/benefitname” ??what?? 是。似乎可以与撒克逊人一起使用,我还没有在 etl 工具中尝试过。