XSLT - 删除多个节点并添加新节点

时间:2015-08-31 11:11:49

标签: xml xslt xslt-2.0

这可能是一个简单的xslt问题。我有xml如下,

<doc>
    <chap>
        <p>This is a para</p>
    </chap>
</doc>

我需要删除<doc><chap>节点,并将节点添加到结果三。

所以输出应该是,

<new>
   <p>This is a para</p>
</new>

当我写一个模板

<xsl:template match="doc">
      <new><xsl:apply templates/></new>
   </template>

它将<chap>添加到结果树。

当我将模板写入<chap>

 <xsl:template match="chap">
      <new><xsl:apply templates/></new>
   </template>

它将<doc>添加到结果树。

我无法抑制像<xsl:template match="chap"/>这样的任何元素。因为它也删除了子节点。

如何使用xsl获得所需的输出?

1 个答案:

答案 0 :(得分:1)

使用<xsl:template match="doc"><xsl:apply-templates/><xsl:template>,然后您可以使用

<xsl:template match="chap">
      <new><xsl:apply templates/></new>
</template>

以及您可能也拥有的身份转换模板(尽管您尚未展示)。