使用xslt将父节点添加到XML的一个或多个子节点

时间:2014-09-08 13:58:36

标签: xslt

我是XSLT的新手,我正在尝试完成以下案例

我有以下格式的xml

<A>
    <B>..</B>
    <C>..</C>
     ..
    <Z>..</Z>
</A>

我正在尝试不久之后添加一个新节点,以便最终的xml将转换为

<A>
   <aa>
      <B>..</B>
      <C>..</C>
       ..
       <X>...</X>
   </aa>
</A>

为了实现这个目的,我编写了以下xslt代码

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

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

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

通过使用这个我得到以下输出

<A>
   <aa>
      <B>..</B>
   </aa>
      <C>..</C>
       ..
       <X>..</X>
</A>

我不确定需要对xslt进行哪些更改以实现所需的输出

1 个答案:

答案 0 :(得分:0)

如果您想将A的所有孩子都包裹在 aa中,那么您需要在匹配A的模板中执行此操作,而不是{ {1}}。

B