如果子标签和父标签的顺序不符合预期,如何在保留其子标签的同时删除父标签?
xml
输入是:
<div>
<b>
<a>correct info</a>
</b>
</div>
<div>
<b>
<a>additional info</a>
<i>italic form</i>
</b>.
<xsl:template match="b/a">
<xsl:copy-of select="a"/>
</xsl:template>
实际结果是:
<div>
<b/>
</div>
<div>
</b>
<i>italic form</i>
</div>
预期结果:
<div>
<a>correct info</a>
</div>
<div>
<a>additional info</a>
<i>italic form</i>
</div>
答案 0 :(得分:0)
代替:
<xsl:template match="b/a">
<xsl:copy-of select="a"/>
</xsl:template>
尝试:
<xsl:template match="b">
<xsl:copy-of select="a"/>
</xsl:template>
答案 1 :(得分:0)
如果您有特定元素'a'作为'b'的子元素,那么michael.hor的解决方案有效。 id您可以将任何元素作为子元素。 例如,在这里您有一个a和i作为b的孩子
<xsl:template match="b">
<xsl:apply-templates select="@* | node()" mode="suppress"/>
</xsl:template>
<xsl:template match="@* | node()[not(self::b)]" mode="suppress">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="suppress"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>