2015-03-27 6 views
0

Я использую ниже код для проверки, является ли содержимое двух строк равны или нет, но он не работает, как я использую Watson исследователь идентификаторсравнение строк между двумя строками в XSLT

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

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

скажите, пожалуйста, как найти используя XSLT ли содержание двух строк равно или нет, как я пытался с помощью сравнения (str1, str2), но это также не работает для меня, как я использую XSLT 1.0 Версон

+0

Просим выслать достаточно кода, чтобы воспроизвести проблему. Не говорите «это не работает»; сообщите нам, каков ваш ожидаемый результат и что вы на самом деле получаете. –

+0

Не говорите нам, что что-то «не работает». Расскажите, как это не получается. Downvoting. –

+0

спасибо Майкл, теперь моя проблема решена актуально, я сравнивал две строки с = operator, поэтому для того же содержимого он выдавал false, когда я начинал отлаживать инструмент, я обнаружил, что в одной из строк в начале было добавлено одно пространство, из-за чего он возвращал false, сравнивая его с другими –

ответ

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>