即使xslt 1.0中不存在该值,也会显示该值

时间:2013-02-22 12:02:01

标签: html combobox xslt-1.0

这是我的xslt代码:

<xsl:choose>
  <xsl:when test="string-length(
                    //Record/CIMtrek_CI_OPEX_200910_FrDiv
                    /text())
                  != 0">
    <select size="1" 
            style="width:100%;" 
            name="CIMtrek_CI_OPEX_200910_FrDiv" 
            id="CIMtrek_CI_OPEX_200910_FrDiv">
      <option>
        <xsl:attribute name="selected">true</xsl:attribute>
        <xsl:value-of select="//Record
                              /CIMtrek_CI_OPEX_200910_FrDiv
                              /text()" />
      </option>
     <option value="S M-SPED">S M-SPED</option>
     <option value="S M-PPPVLD">S M-PPPVLD</option>
   </select>
  </xsl:when>
  <xsl:otherwise>
    <select size="1" 
            style="width:100%;" 
            name="CIMtrek_CI_OPEX_200910_FrDiv" 
            id="CIMtrek_CI_OPEX_200910_FrDiv">
      <option value="0">Select Keywords</option>
      <option value="S M-SPED">S M-SPED</option>
      <option value="S M-PPPVLD">S M-PPPVLD</option>
    </select>
  </xsl:otherwise>
</xsl:choose>

但是当没有值的时候,条件总是存在。

我认为这是不确定的线路成本问题,

<xsl:when 
  test="string-length(
          //Record/CIMtrek_CI_OPEX_200910_FrDiv/text()
        ) != 0">

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您没有显示错误产生输出的输入示例,但我猜测它涉及的XML可能如下所示:

<CIMtrek_CI_OPEX_200910_FrDiv>
  <!--* no value here! *-->
</CIMtrek_CI_OPEX_200910_FrDiv>

如果您不希望元素中的空格计为值,则需要将测试从string-length(...) != 0更改为string-length(normalize-space(...)) != 0或等效值。由于XSLT将事物强制转换为布尔值,因此可以更简洁地编写为normalize-space(...) - 一些熟练的XSLT程序员更喜欢这种形式,而其他人则发现隐式类型强制分散注意力并且更喜欢更明确的形式。

如果您的问题与我推测的一样,那么以下任何一项都应该有所帮助:

<xsl:when 
  test="string-length(
          normalize-space(
            //Record/CIMtrek_CI_OPEX_200910_FrDiv/text()
          )
        ) != 0">

<xsl:when 
  test="normalize-space(
            //Record/CIMtrek_CI_OPEX_200910_FrDiv/text()
        ) != ''">

<xsl:when 
  test="normalize-space(
            //Record/CIMtrek_CI_OPEX_200910_FrDiv/text()
        )">

如果那不是问题,那么你需要更清楚地了解你的问题。