2013-11-03 68 views
0

我有一個模板,顯示text(),然後遍歷所有孩子並應用模板。問題是,它正在將text()重新放回我已處理的頁面。在XSLT For-Each中,如何跳過文本節點?

對於我的生活,我無法找到for-each select的正確語法來跳過text()節點。

例XSLT模板

<xsl:template match="Task"> 
<li> 
    <u> 
    <xsl:value-of select="text()"/> 
    </u> 
    <ul> 
    <xsl:for-each select="."> 
     <xsl:apply-templates /> 
    </xsl:for-each> 
    </ul> 
</li> 
</xsl:template> 

示例XML

<Task> 
    This is my main task. 
    <Task> 
     This is a sub-task. 
    </Task> 
</Task> 

實施例的不期望的輸出

  • 這是我的主要任務。
    • 這是我的主要任務。
    • 這是一個子任務。

回答

2

我想你想更換

<ul> 
    <xsl:for-each select="."> 
     <xsl:apply-templates /> 
    </xsl:for-each> 
    </ul> 

<xsl:if test="*"> 
    <ul> 
     <xsl:apply-templates select="*"/> 
    </ul> 
    </xsl:if> 
+0

你是個巫師!非常感謝,它效果很好。我甚至沒有想過使用apply-templates來抓住所有的孩子。我很困擾自己循環。 – TyCobb