XSLT中的子字符串出错

时间:2011-10-06 21:51:06

标签: xml xslt

我想知道如果字符数超过200,XSLT是否可以选择删除元素的内容。下面我将使用所有内容元素。

警告:XSLTProcessor :: transformToXml()[xsltprocessor.transformtoxml]:运行时错误:文件stylesheet.xslt第42行元素在第20行的index.php中应用模板

警告:XSLTProcessor :: transformToXml()[xsltprocessor.transformtoxml]:'select'表达式未计算到节点集。在第20行的index.php中

<xsl:template match="a:content | description">
  <c>
        <xsl:apply-templates select="substring('node() | @*', 1, 200)" />
  </c>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

<xsl:apply-templates select="substring('node() | @*', 1, 200)" />

上面select属性中指定的Xpath表达式属于xs:string

但是,在XSLT 1.0和XSLT 2.0中,模板只能应用于节点 - 而不能应用于字符串。这就是您收到报告的错误消息的原因。

在我看来,你最想要的是

<xsl:value-of select="substring(., 1, 200)" />