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

前端之家收集整理的这篇文章主要介绍了xml – Xslt:将节点添加到根元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有简单的 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>

猜你在找的XML相关文章