首页 > 解决方案 > 使用 Xpath 谓词根据父子节点的值选择节点值

问题描述

我有这个结构,我需要从一个节点中选择一个值,如果它的父级 4 步的子级包含一个特定的值。

到目前为止,我已经尝试了以下 xPath:

<Contact>
    <Id>
        <xsl:value-of select="EFACT_D01B_ORDERS/NADLoop1/CTALoop1/CTA/C056[../../../NAD01 = 'PO']/C05601"/>
    </Id>
</Contact>

我需要的值在 C05601 中。

这是架构的结构,两个重要节点用蓝色标记:

在此处输入图像描述

该结构也是循环的,并在输入文档中出现多次。基本上,如果 NAD01 = "PO",则 C05301 中的值应映射到 Contact/Id 字段。

标签: xmlxsltxpathbiztalk

解决方案


只需将条件移至共同祖先即可...

<xsl:value-of select="EFACT_D01B_ORDERS/NADLoop1[NAD/NAD01 = 'PO']/CTALoop1/CTA/C056/C05601"/>

(注意,我认为您当前的语句不起作用,因为您错过了NAD表达式中的


推荐阅读