Xslt XSL:选择节点中的所有文本,特定类型的节点除外

Xslt XSL:选择节点中的所有文本,特定类型的节点除外,xslt,Xslt,如何输出节点中的所有文本,包括其子节点中的文本,同时排除“a”节点中的文本?如果您当前正在处理节点 <xsl:value-of select="."/> 应该返回所有文本内容使用文本节点的内置模板规则,将它们复制到结果中。即使对于您指定的新处理模式(“下面代码中的“除a之外的所有”)来说,内置规则也会起作用:对于元素,(递归地)处理子元素;对于文本节点,复制。您只需覆盖其中一项,即我的网站上的规则。我相信这就是您要寻找的: <xsl:for-each select="//

如何输出节点中的所有文本,包括其子节点中的文本,同时排除“a”节点中的文本?


如果您当前正在处理节点

<xsl:value-of select="."/>


应该返回所有文本内容

使用文本节点的内置模板规则,将它们复制到结果中。即使对于您指定的新处理模式(“下面代码中的“除a之外的所有”)来说,内置规则也会起作用:对于元素,(递归地)处理子元素;对于文本节点,复制。您只需覆盖其中一项,即我的网站上的
规则。

我相信这就是您要寻找的:

<xsl:for-each select="//text()[not(ancestor::a)]">
  <xsl:value-of select="."/>
</xsl:for-each>


它选择所有不是锚定标记子项的文本节点。

谢谢!我可以排除标记吗?这将选择包含非锚定标记文本的每个节点。他想选择不在标记中的所有节点的文本。谢谢!我可以排除标签吗?
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="myNode">
    <!-- Process children -->
    <xsl:apply-templates mode="all-but-a"/>
  </xsl:template>

          <!-- Don't process <a> elements -->
          <xsl:template mode="all-but-a" match="a"/>

</xsl:stylesheet>
<xsl:for-each select="//text()[not(ancestor::a)]">
  <xsl:value-of select="."/>
</xsl:for-each>