如何按顺序使用XSLT解析嵌套标签? (第二部分)

时间:2018-05-22 07:55:54

标签: xslt nested transformation

我遇到类似How to parse nested tags using XSLT in sequance?的类似问题,但解决方案并不匹配

我的源:

<BodyText Status="ARC">Lorem ipsum dolor <Emphasis>THIS IS BOLD</Emphasis> amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. </BodyText>

结果:

 <p Status="ARC">Lorem ipsum dolor  <b>THIS IS BOLD</b> amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. </p>

但是,我只想要一个p而不是p状态=&#34; ARC&#34;因为状态剂量适合我的targetSchema。

这是我的代码

        <!-- ********* BodyText ************************************************************************************************** -->
   <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <!-- ********* BodyText ************************************************************************************************** -->
    <xsl:template match="BodyText">
        <p>
         <xsl:apply-templates select="@*|node()"/>
        </p>
    </xsl:template>


<!-- ********* Emphasis ***** bold, italic, underline, Default bold **************************************************** -->
  <xsl:template match="Emphasis[@type='bold']">
        <b>
            <xsl:apply-templates select="node()"/>
        </b>
    </xsl:template>
  <xsl:template match="Emphasis[@type='italic']">
        <i>
            <xsl:apply-templates select="node()"/>
        </i>
    </xsl:template>
 <xsl:template match="Emphasis[@type='underline']">
        <u>
            <xsl:apply-templates select="node()"/>
        </u>
    </xsl:template>
  <xsl:template match="Emphasis">
        <b>
            <xsl:apply-templates select="node()"/>
        </b>
    </xsl:template> 

1 个答案:

答案 0 :(得分:0)

<BodyText>的模板中,还会应用属性值@*

<xsl:template match="BodyText">
    <p>
        <xsl:apply-templates select="@*|node()"/>
    </p>
</xsl:template>

将此模板更改为

<xsl:template match="BodyText">
    <p>
        <xsl:apply-templates select="node()"/>
    </p>
</xsl:template>