我正在尝试根据不同标记的属性获取不同的值。 我的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>
如果聚会代码=“ADV”
,我正试图在name1中获取值我尝试使用以下表达式,但它不起作用:
<xsl:if test="value-of select=("ns1:parties/ns1:party/@code")='ADV'">
<td>1st Advising Bank Name: <xsl:value-of select="ns1:parties/ns1:party/name1/></td>
有人有任何想法吗?
提前致谢
答案 0 :(得分:3)
您正在寻找的表达式是
<xsl:if test="parties/party/@code='ADV'">
<td>1st Advising Bank Name: <xsl:value-of select="parties/party[@code='ADV']/name1" /></td>
</xsl:if>
注意,我在这里排除了ns1
名称空间前缀,因为显示的XML示例没有声明任何名称空间。
或者,使用模板匹配。使用xsl:apply-templates
选择匹配的party
元素
<xsl:apply-templates select="parties/party[@code='ADV']" />
然后有一个匹配它的模板
<xsl:template match="party">
<td>1st Advising Bank Name: <xsl:value-of select="name1" /></td>
</xsl:template>