2011-10-06 50 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:不客氣。 –