Xml XSLT-如果属性等于特定值,如何获取标记的值

Xml XSLT-如果属性等于特定值,如何获取标记的值,xml,xslt,Xml,Xslt,我试图根据不同标记的属性获取不同的值。 我的xml输入: <parties> <party code="ADV" id="BOFAUS3NXXX" extension="1"> <name1>BANK OF AMERICA, N.A.</name1> <city>Code: NY3-222-14-03</city> <street>Bank of Ameri

我试图根据不同标记的属性获取不同的值。 我的xml输入:

<parties>
    <party code="ADV" id="BOFAUS3NXXX" extension="1">
        <name1>BANK OF AMERICA, N.A.</name1>
        <city>Code: NY3-222-14-03</city>
        <street>Bank of America Merrill Lynch Mail</street>
        <country>US</country>
        <swift_address/>
    </party>
    <party code="BNE" id="11111111-1" extension="1">
        <name1>BBA Customer 1</name1>
        <city>PROVIDENCIA</city>
        <street>PROVIDENCIA 1645</street>
        <country>ES</country>
        <swift_address/>
    </party>
</parties>
有人知道吗


提前感谢

您要找的表达方式是

<xsl:if test="parties/party/@code='ADV'">
   <td>1st Advising Bank Name: <xsl:value-of select="parties/party[@code='ADV']/name1" /></td>
</xsl:if>
然后有一个模板来匹配它

<xsl:template match="party">
   <td>1st Advising Bank Name: <xsl:value-of select="name1" /></td>
</xsl:template>

您要寻找的表达式是

<xsl:if test="parties/party/@code='ADV'">
   <td>1st Advising Bank Name: <xsl:value-of select="parties/party[@code='ADV']/name1" /></td>
</xsl:if>
然后有一个模板来匹配它

<xsl:template match="party">
   <td>1st Advising Bank Name: <xsl:value-of select="name1" /></td>
</xsl:template>

谢谢@Tim C,条件有效,但的值无效:第一通知行名称:因为我有两个标签,可以引用parties/party/name1。是否有方法检索特定标记的值。类似的东西实际上不起作用表达式应该起作用。我修改了我的答案来表达这个意思。在这种情况下,最好尝试使用模板匹配。通过这种方式,你可以将上下文更改为相关的party元素,因此表达式将与之相关。谢谢Tim,但这对我不起作用。检查属性是否相等后使用标记合法吗?语法正确,但可能与名称空间有关。您的XML没有名称空间,但通过在XSLT示例中使用前缀ns1,它表明您的实际XML确实有名称空间。也许您也需要在路径中的名称之前加上ns1前缀?谢谢@Tim C,条件有效,但的值无效:第一通知行名称:因为我有两个标签,可以引用parties/party/name1。是否有方法检索特定标记的值。类似的东西实际上不起作用表达式应该起作用。我修改了我的答案来表达这个意思。在这种情况下,最好尝试使用模板匹配。通过这种方式,你可以将上下文更改为相关的party元素,因此表达式将与之相关。谢谢Tim,但这对我不起作用。检查属性是否相等后使用标记合法吗?语法正确,但可能与名称空间有关。您的XML没有名称空间,但通过在XSLT示例中使用前缀ns1,它表明您的实际XML确实有名称空间。也许您也需要在路径中的名称之前加上ns1前缀?