我遇到类似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>
答案 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>