XSLT - 删除一些标签但按顺序保留内容

时间:2011-10-13 01:30:35

标签: html xslt

我有标记,我想删除/转换某些标记,但保留数据。

例如:

<div>This is some <b>bold</b> text inside of a div</div>
<p>This is <u>another <b>formatted</b></u> string...<br /></p>

应该成为这个:

<p>This is some <b>bold</b> text inside of a div</p>
<p>This is another <b>formatted</b> string...</p>

由于嵌套,使用apply-templates匹配每个条件不起作用。

你会怎么做呢?

1 个答案:

答案 0 :(得分:1)

听起来像是修改后的identity transform的工作,如下所示:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>

    <!--This is the identity template -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>

    <!--This template turns all <div> into <p>-->
    <xsl:template match="div">
        <p>
            <xsl:apply-templates select="@*|node()"/>
        </p>
    </xsl:template>

    <!--This template removes all <u> and continues processing -->
    <xsl:template match="u">
        <xsl:apply-templates select="@*|node()"/>
    </xsl:template>

</xsl:stylesheet>