加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 22:42:47 所属栏目:百科 来源:网络整理
导读:我有简单的 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="
我有简单的 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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读