在XSLT For-Each中,如何跳过文本节点?

时间:2013-11-03 18:08:13

标签: xml xslt xpath

我有一个显示text()的模板,然后遍历所有子项并应用模板。问题是它正在将text()吐出到我已经处理过的页面上。

对于我的生活,我找不到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>

示例不受欢迎的输出

  
      
  • 这是我的主要任务。   
        
    • 这是我的主要任务。
    •   
    • 这是一项子任务。
    •   
  •   

1 个答案:

答案 0 :(得分:2)

我想你要替换

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

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