使用 xslt1 从特定节点中删除所有文本并从 xml 中删除所有标签

Strip all the text from a specific node and remove all tags from xml using xslt1

我正在尝试从 xml 文档中删除所有标签,我只需要从特定节点中删除所有文本。更清楚地看下面的例子:

<root>
   <p>My 1st Semester Visual</p>
   <p>
      <b>Self Reflection</b>
   </p>
   <p>The activity</p>
   <content-block>
      <div class="imageWrapper" />
   </content-block>
   <p id="5fce699db97470099ea6c7e6">    </p>
   <content-block>
      <div class="carousel">
         <div class="carouselHeader" />
         <div class="carouselNavbar">
            <div class="carouselNavbarThumbnails" />
         </div>
      </div>
      My Space Unit Flyer
   </content-block>
   <div>
      <br />
   </div>
</root>

结果:

<root><text>My 1st Semester VisualSelf ReflectionThe activity
      My Space Unit Flyer
   </text><contentBlocks>2</contentBlocks></root>

预期结果:我还需要删除 <content-block>.

中的文本
<root><text>My 1st Semester VisualSelf ReflectionThe activity
   </text><contentBlocks>2</contentBlocks></root>

我的 xslt:

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>

    <!-- Strip out white space -->
    <xsl:strip-space elements="*"/>

    <!-- Strip out all html tags, only leaving text contents -->
    <xsl:template match="*">
        <xsl:apply-templates/>
    </xsl:template>

    <xsl:template match="root">
        <root>
            <text>
                <xsl:apply-templates/>
            </text>
            <contentBlocks>
                <xsl:if test="//content-block">
                    <xsl:value-of select="count(//content-block)"/>
                </xsl:if>
                <xsl:if test="figure">
                    <xsl:value-of select="count(figure)"/>
                </xsl:if>
            </contentBlocks>
        </root>
    </xsl:template>
</xsl:transform>

提前致谢

<!-- Add this to your code. It suppresses content-block. -->
<xsl:template match="content-block"/>