xslt:检查变量是否为空

时间:2016-12-09 13:56:31

标签: validation xslt

以下代码验证输入(即12012016为12.01.2016),

<xsl:template name="handleDate">    
  <xsl:param name="input"/>   
  <xsl:value-of select="substring($input, 9, 2)" />
  <xsl:text>.</xsl:text><xsl:value-of select="substring($input, 6, 2)" />
  <xsl:text>.</xsl:text><xsl:value-of select="substring($input, 1, 4)" />
</xsl:template>

但是每当一个日期为空(未填充)时,结果我在输出中只得到2个点(..),当我尝试在其他系统中导入它时出现错误,因为(..)不是有效日期。 我尝试了这个,但仍然无效:

<xsl:template name="handleDate">
  <xsl:param name="input"/>
  <xsl:choose>
    <xsl:when test="input!= ''">
      <xsl:value-of select="substring($input, 9, 2)" />
      <xsl:text>.</xsl:text><xsl:value-of select="substring($input, 6, 2)" />
      <xsl:text>.</xsl:text><xsl:value-of select="substring($input, 1, 4)" />
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select=" '' " />
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>             

<xsl:call-template name="handleDate">
  <xsl:with-param name="input" select="Field[@guid='123']/@xmlConvertedValue" />
</xsl:call-template>

输入是例如:

  

name; date; name2

输出应该是:

  

test1 ;; test2(如果日期为空白)

1 个答案:

答案 0 :(得分:2)

var NavLink = React.createClass({ contextTypes: { router: React.PropTypes.object }, render() { return ( <Link {...this.props}></Link> ); } }); 表达式中,您忘记了变量和参数名称的test前缀:

$

因此,此处<xsl:when test="input!= ''"> 被评估为元素名称而不是变量或参数的名称。你需要的是:

input

试试并告诉我们它是怎么回事。