2015-12-04 6 views
0

Вот мой xslt. Любая причина, по которой boolean ($ x) выводит true, когда boolean ($ y) печатает false, когда оба они имеют одинаковое значение. Единственное отличие состоит в том, что x получает свою пустую строку, вызывая шаблон.XSLT boolean пустой строки возвращает true

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
    <xsl:variable name="x"> 
     <xsl:call-template name="tmplate"></xsl:call-template> 
    </xsl:variable> 

    ###x-bool:[<xsl:value-of select="boolean($x)"/>] 
    ###x:[<xsl:value-of select="$x"/>] 

    <xsl:variable name="y" select="''"/> 
    ###y-bool:[<xsl:value-of select="boolean($y)"/>] 
    ###y:[<xsl:value-of select="$y"/>] 

    </xsl:template> 

    <xsl:template name="tmplate"> 
    <xsl:value-of select="''"/> 
    </xsl:template> 
</xsl:stylesheet> 

ответ

1

единственное отличие состоит в том, что х получает пустую строку с помощью вызова шаблона.

Нет, это не только difference.When вы определяете переменную как:

<xsl:variable name="y" select="''"/> 

тип данных переменной является string. Но когда вы определили его как:

<xsl:variable name="x"> 
    <xsl:value-of select="''"/> 
</xsl:variable> 

тип данных result-tree-fragment. Он содержит текстовый узел, содержащий пустую строку. Поэтому он не пуст и будет оцениваться как true() при преобразовании в boolean.

+0

oh ok. Я не знаю об этом. Спасибо – iRamesh

+0

@ michael..done .. ty – iRamesh

Смежные вопросы