使用 XPath Predicate to select value based on qualifers inside loop
Using XPath Predicate to select value based on qualifers inside loop
我有以下 XSL select 来自 C50602 元素的值,基于 NAD01 元素中的值和使用 Xpath 谓词的 C50601 元素。 NADLoop1 上有一个循环 functoid。
<CustomerReference>
<xsl:value-of select="/*[local-name()='EFACT_D96A_ORDERS']/*[local-name()='NADLoop1'][NAD01 = 'SN']/*[local-name()='RFFLoop2']/*[local-name()='RFF_2']/*[local-name()='C506_2'][C50601 = 'IT']/*[local-name()='C50602']"></xsl:value-of>
</CustomerReference>
代码是脚本 functoid 内的内联 XSLT。但是,当我执行它时,我没有在我的 CustomerReference 元素中获得值,尽管我没有收到任何错误。
传入的RFFLoop2元素如下:
<ns0:RFFLoop2>
<ns0:RFF_2>
<ns0:C506_2>
<C50601>IT</C50601>
<C50602>1135</C50602>
</ns0:C506_2>
</ns0:RFF_2>
</ns0:RFFLoop2>
我使用了此处的 xPath 文档https://www.w3schools.com/xml/xpath_syntax.asp
我当前的谓词有什么问题?我希望将值“1135”映射到我的 CustomerReference 元素。
我试过了。
//*[local-name()='RFFLoop2']/*[local-name()='RFF_2']/*[local-name()='C506_2'][C50601 = 'IT']/*[local-name()='C50602']
在 freeformatter.com 中,您的 xpath 工作正常。
尝试将[NAD01 = 'SN']
更改为[*[local-name()='NAD01'] = 'SN']
我有以下 XSL select 来自 C50602 元素的值,基于 NAD01 元素中的值和使用 Xpath 谓词的 C50601 元素。 NADLoop1 上有一个循环 functoid。
<CustomerReference>
<xsl:value-of select="/*[local-name()='EFACT_D96A_ORDERS']/*[local-name()='NADLoop1'][NAD01 = 'SN']/*[local-name()='RFFLoop2']/*[local-name()='RFF_2']/*[local-name()='C506_2'][C50601 = 'IT']/*[local-name()='C50602']"></xsl:value-of>
</CustomerReference>
代码是脚本 functoid 内的内联 XSLT。但是,当我执行它时,我没有在我的 CustomerReference 元素中获得值,尽管我没有收到任何错误。
传入的RFFLoop2元素如下:
<ns0:RFFLoop2>
<ns0:RFF_2>
<ns0:C506_2>
<C50601>IT</C50601>
<C50602>1135</C50602>
</ns0:C506_2>
</ns0:RFF_2>
</ns0:RFFLoop2>
我使用了此处的 xPath 文档https://www.w3schools.com/xml/xpath_syntax.asp
我当前的谓词有什么问题?我希望将值“1135”映射到我的 CustomerReference 元素。
我试过了。
//*[local-name()='RFFLoop2']/*[local-name()='RFF_2']/*[local-name()='C506_2'][C50601 = 'IT']/*[local-name()='C50602']
在 freeformatter.com 中,您的 xpath 工作正常。
尝试将[NAD01 = 'SN']
更改为[*[local-name()='NAD01'] = 'SN']