xslt中两个字符串之间的字符串比较

时间:2015-03-27 09:36:17

标签: xml xslt

我使用下面的代码来检查两个字符串内容是否相等但是它不起作用,因为我使用的是watson explorer id

<xsl:variable name="str1" select="./td[4]"/>
<xsl:variable name="str2" select="./td[2]"/>

<xsl:if test="$str1 = $str2">
  true 
</xsl:if>

请告诉我如何使用xslt查找两个字符串的内容是否相等,因为我尝试使用compare(str1,str2),但它也没有 为我工作,因为我正在使用xslt 1.0 verson

1 个答案:

答案 0 :(得分:1)

XML:

<Sample>`<AccountName1>SREE</AccountName1>`<AccountName2>SREE</AccountName2>`<SortCode>789-88-8907</SortCode>`<CardNumber>4545-6767-9876-8764</CardNumber>`<address>j-89-8999</address>`</Sample>

XSL:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:regexp="http://exslt.org/regular-expressions" xmlns:dp="http://www.datapower.com/extensions" >
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()"> 
<xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match = "*[local-name()='AccountName1' or local-name()='AccountName2']">
    <xsl:variable name = "var1">
 <xsl:value-of select = "/*[local-name()='Sample']/*[local-name()='AccountName1']/text()"/>
  </xsl:variable>
<xsl:variable name = "var2">
 <xsl:value-of select = "/*[local-name()='Sample']/*[local-name()='AccountName2']/text()"/>
</xsl:variable>
 <xsl:message dp:priority="debug"> First: <xsl:value-of select = "$var1"/> </xsl:message>
         <xsl:message dp:priority="debug"> Second: <xsl:value-of select = "$var2"/> </xsl:message>
<xsl:choose>
        <xsl:when test = "$var1=$var2">
<xsl:message dp:priority = "debug">Both are same </xsl:message>
                <xsl:copy>
                <xsl:value-of select = "."/>
            </xsl:copy>
</xsl:when>
        <xsl:otherwise>
            <xsl:message dp:priority = "debug">Both are different </xsl:message>
                <xsl:copy>
<xsl:value-of select="regexp:replace(*[local-name()='AccountName2'],'','',$var1)"/>
            </xsl:copy>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template> 


</xsl:stylesheet>