2011-10-06 52 views
0

我想知道如果XSLT可以选择删除元素的内容,如果字符超过200.下面我使用所有的内容元素。XSLT中的子字符串错误

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

警告:XSLTProcessor中:: transformToXml() [xsltprocessor.transformtoxml]:'select'表达式不计算为节点集。在线路20上

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

嗯...我不太明白你在做什么,但我会通过检查字符串长度接近它在一个if块内部..也许你的解决方案是光滑的(正如我所说的,我不太明白它)... – Aerik

+0

这可能是你的问题。这将返回一个字符串,而该字符串不会评估某个节点。你确定这是你想要做的吗? – FailedDev

+0

@FailedDev节点是内容|描述。你是这个意思吗 ? – EnexoOnoma

回答

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

select指定的XPath表达式以上属性的index.php,是xs:string类型。

但是,在XSLT 1.0和XSLT 2.0模板中,只能应用于节点上 - 而不能应用于字符串。这就是为什么你会收到报告的错误信息。

在我看来,你最想的是

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

谢谢你的回答。 – EnexoOnoma

+0

@mtopia:不客气。 –