2011-07-18 117 views
3

我有簡單的XML文件:XSLT:添加節點到根元素

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

,我想添加一個值節點使用XSLT MyRoot。我無法弄清楚如何。

的結果應該是:

<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> 

但是,這把新的價值節點的根節點下:

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

到目前爲止,您有什麼XSL? – Fishcake

回答

7

你」重新走上正軌。你需要改變你的模板匹配。請嘗試:

<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> 
+0

是的,就是這樣。剩下的一件事:新的Value節點獲得了屬性xmlns =「」。我如何防止添加此屬性的轉換? yeahIMadeIt martin