当前位置 : 主页 > 网页制作 > xml >

xml – Xslt:将节点添加到根元素

来源:互联网 收集:自由互联 发布时间:2021-06-13
我有简单的 XML文件: MyRoot Value key="TARGET"foo/Value Value key="MODEL"bar/Value Value key="MANUFACTURER"bla/Value/MyRoot 我想使用XSLT向MyRoot添加一个Value节点.我无法弄清楚如何. 结果应该是: MyRoot Value k
我有简单的 XML文件:

<MyRoot>
   <Value key="TARGET">foo</Value>
   <Value key="MODEL">bar</Value>
   <Value key="MANUFACTURER">bla</Value>
</MyRoot>

我想使用XSLT向MyRoot添加一个Value节点.我无法弄清楚如何.

结果应该是:

<MyRoot>
   <Value key="TARGET">foo</Value>
   <Value key="MODEL">bar</Value>
   <Value key="MANUFACTURER">bla</Value>
   <Value key="NEWNODE">yeahIMadeIt</Value>
</MyRoot>

到目前为止我所拥有的是:

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

但是这会将新的Value节点放在根节点下:

<MyRoot>
   <Value key="TARGET">foo</Value>
   <Value key="MODEL">bar</Value>
   <Value key="MANUFACTURER">bla</Value>
</MyRoot>
<Value key="NEWNODE">yeahIMadeIt</Value>
你走在正确的轨道上.您需要更改模板匹配.尝试:

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

<xsl:template match="MyRoot">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()" />
        <Value key="NEWNODE">yeahIMadeIt</Value>
    </xsl:copy>
</xsl:template>
网友评论