Проверьте, является ли строка нулевой или пустой в XSLT - PullRequest
307 голосов
/ 05 мая 2009

Как я могу проверить, является ли значение нулевым или пустым с помощью XSL ?

Например, если categoryName пусто? Я использую при выборе конструкции.

Например:

<xsl:choose>
    <xsl:when test="categoryName !=null">
        <xsl:value-of select="categoryName " />
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="other" />
    </xsl:otherwise>
</xsl:choose>

Ответы [ 14 ]

2 голосов
/ 18 августа 2011

Как-то так у меня работает:

<xsl:choose>
  <xsl:when test="string(number(categoryName)) = 'NaN'"> - </xsl:when> 
  <xsl:otherwise> 
    <xsl:number value="categoryName" />
  </xsl:otherwise>
</xsl:choose>

Или наоборот:

<xsl:choose>
  <xsl:when test="string(number(categoryName)) != 'NaN'">
    <xsl:number value="categoryName" />
  </xsl:when> 
  <xsl:otherwise> - </xsl:otherwise>
</xsl:choose>

Примечание. Если вы не проверяете нулевые значения или не обрабатываете нулевые значения, IE7 возвращает -2147483648 вместо NaN.

0 голосов
/ 23 июня 2016

Я на самом деле нашел, что лучше просто проверить длину строки, поскольку много раз поле не является нулевым, просто пустым

0 голосов
/ 10 сентября 2015

Используйте простую categoryName / text () Такой тест прекрасно работает на <categoryName/>, а также <categoryName></categoryName>.

<xsl:choose>
    <xsl:when test="categoryName/text()">
        <xsl:value-of select="categoryName" />
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="other" />
    </xsl:otherwise>
</xsl:choose>
0 голосов
/ 29 июля 2013

По моему опыту лучший способ это:

<xsl:when test="not(string(categoryName))">
    <xsl:value-of select="other" />
</xsl:when>
<otherwise>
    <xsl:value-of select="categoryName" />
</otherwise>
...