我有简单的 XML文件: MyRoot Value key="TARGET"foo/Value Value key="MODEL"bar/Value Value key="MANUFACTURER"bla/Value/MyRoot 我想使用XSLT向MyRoot添加一个Value节点.我无法弄清楚如何. 结果应该是: MyRoot Value k
<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>