想要确定XML中是否存在BBB。我可以有效地回应它,如下所示。如何有效搜索PRODUCT_CODE节点以确定组中是否存在BBB?
XML:
<ECOMM_VARS>
<PRODUCT_CODE>AAA</PRODUCT_CODE>
<PRODUCT_CODE>BBB</PRODUCT_CODE>
<PRODUCT_CODE>CCC</PRODUCT_CODE>
</ECOMM_VARS>
XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="PRODUCT_CODE">
<xsl:value-of select="concat(., '
')"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
答案 0 :(得分:1)
测试存在是评估if
或choose
中的XPath谓词表达式的结果:
<xsl:template match="/">
<xsl:choose>
<xsl:when test="//PRODUCT_CODE[text()='BBB']">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:template>
如果任何true
节点的文字等于<PRODUCT_CODE>
,则会输出'BBB'
。
答案 1 :(得分:1)
您可以在匹配的模板上使用谓词
以下示例仅匹配第一次(由[1]
表示)<PRODUCT_CODE>
元素的文本与字符串'BBB'
匹配。
<xsl:template match="PRODUCT_CODE[text() = 'BBB'][1]">
<!-- Only matches the first time 'BBB' occurs -->
<xsl:value-of select="concat(., '
')"/>
</xsl:template>
如果确实存在一个或多个带有<PRODUCT_CODE>
文字的'BBB'
元素,则它与完全匹配一次。