2017-03-16 131 views
1

我definded以下變量:如何在XSLT中檢查變量是否爲空或空?

<xsl:variable name="pica036E" 
         select="recordData/record/datafield[@tag='036E']" /> 
<xsl:variable name="pica036F" 
         select="recordData/record/datafield[@tag='036F']" /> 

現在我需要做的一個條件,如果變量pica036E是不是空的,pica036F是空的顯示以下信息,否則顯示另一條消息。 這是我的代碼,但我沒有任何輸出。 「空或空」正確定義?

<xsl:choose> 
         <xsl:when test="$pica036E != '' and $pica036F = ''"> 
         <xsl:message> 
         036F no 036E yes  
          </xsl:message> 
         </xsl:when> 

         <xsl:otherwise> 
         <xsl:message> 
           036E no 036F yes 
          </xsl:message> 
         </xsl:otherwise> 
        </xsl:choose> 

回答

2

在XPath,X = Y方式(如果有的對x在X,Y在Y滿足X = Y),而X!= Y手段(如X中一些對x, y中的y滿足x!= y)。

這意味着如果X或Y是空序列,那麼X = Y和X!= Y都是假的。

例如,$pica036E != ''測試$pica036E中是否有值不是零長度字符串。如果$pica036E中沒有值,則沒有值滿足此條件。

因此,在XPath中使用!=始終是代碼異味。通常,而不是X != Y,你應該寫not(X = Y)

2

檢查以下代碼。我覺得你的輸出得到

<xsl:when test="not($pica036E = '') and $pica036F = ''"> 
2

在XSLT中,帶文本內容的變量也可以用作布爾變量。 非空內容表示爲真,空內容表示虛假

這樣的條件,也可以寫爲:

<xsl:when test="$pica036E and not($pica036F)"> 

記住not功能(未操作)。

相關問題