Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 使用XSL选择替换空字符串_Xslt - Fatal编程技术网

Xslt 使用XSL选择替换空字符串

Xslt 使用XSL选择替换空字符串,xslt,Xslt,我试图用数字替换csv文件中的空值 下面是一个例子: 1111111,11222 所以我试了一下: <xsl:template match="/"> <xsl:apply-templates select="//tr" /> </xsl:template> <xsl:template match="tr"> <document> <content name="title"> <

我试图用数字替换csv文件中的空值

下面是一个例子:

1111111,11222

所以我试了一下:

<xsl:template match="/">

  <xsl:apply-templates select="//tr" />

</xsl:template>

<xsl:template match="tr">
  <document>
     <content name="title">
         <xsl:value-of select="td[1]/text()" />
      </content>
     <content name="loanID">
        <xsl:value-of select="td[1]/text()" />
     </content>
     <content name="cNumber">
        <xsl:variable name="score" select="td[2]/text()" />
        <xsl:choose>
           <xsl:when test="$score=''">
        <xsl:value-of select="550" />
        </xsl:when>
        <xsl:otherwise>
           <xsl:value-of select="td[18]/text()" />
        </xsl:otherwise>
    </xsl:choose>
   </content>
  </document>
 </xsl:template>

当cNumber节点的值在行中为空时,我会不断地得到一个空值,我希望我的代码将空值替换为“550”。我做错了什么?我检查了这个问题,似乎这应该行得通。我正在为此使用一个特殊的应用程序,但我猜这是我的错


谢谢

如果td元素为空,则
td/text()
返回一个空序列/节点集,当您将空序列与“”进行比较时,结果为false。这是许多人建议不要使用
text()
的原因之一。这里您对文本节点不感兴趣,您感兴趣的是td元素的字符串值,为了得到它,您应该使用

<xsl:variable name="score" select="string(td[2])" />

text()的其他用法也不正确,尽管只有在XML输入包含注释或处理指令时才可能出现问题。但是,您应该摆脱这种编码习惯,并替换

<xsl:value-of select="td[1]/text()" />



一般来说,当您在XPath表达式中看到
/text()
时,它通常是错误的。

输入是什么?另外,样式表的输出似乎没有生成CSV文件。
$score
包含
td[2]
的值。当它为空时,显示
550
,当它不为空时,使用
td[18]
的值,但如果
td[18]
为空,该怎么办?我明白了。谢谢你的详细回复。
<xsl:value-of select="td[1]" />