我通过覆盖子节点更新了我的XML。现在我需要为标签添加一个新节点。
我的XML是:
<GrandParent>
<Parent>
<Child1>test</Child1>
<Child2>abc</Child2>
<Child3>62</Child3>
<Child4>5000061</Child4>
</Parent>
<Parent>
<Child1>test</Child1>
<Child2>abc</Child2>
<Child3>33</Child3>
<Child4>5560853</Child4>
</Parent>
</GrandParent>
并更新了第一个标签,如下所示:
<GrandParent>
<Parent>
<Child1>test</Child1>
<Child2>abc</Child2>
<Child3>62</Child3>
<Child3 >dshgfshgfhgf</Child3>
<Child4>5000061</Child4>
</Parent>
<Parent>
<Child1>test</Child1>
<Child2>abc</Child2>
<Child3>33</Child3>
<Child3>dshgfshgfhgf</Child3 >
<Child4>5560853</Child4>
</Parent>
</GrandParent>
使用XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Parent[Child4='5000061']/Child3[.='62']">
<Child3>dshgfshgfhgf</Child3>
</xsl:template>
</xsl:stylesheet>
现在我想在两个父标签中添加一个新节点。如何在不打扰当前代码的情况下做到这一点?
答案 0 :(得分:0)
我想在两个父标签中添加一个新节点。
添加与父项匹配的模板并在其中添加新节点 - 例如:
<xsl:template match="Parent">
<xsl:copy>
<xsl:apply-templates/>
<new-node>123</new-node>
</xsl:copy>
</xsl:template>
答案 1 :(得分:0)
您可能希望将问题编辑为清晰。
只需添加一个新节点,
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Parent[Child4='5000061']/Child3[.='62']">
<Child3>dshgfshgfhgf</Child3>
</xsl:template>
<xsl:template match="Parent">
<xsl:copy>
<xsl:apply-templates/>
<new-Child>123</new-Child>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Child3节点仅在满足条件时才会更改,否则它将保持不变。如果您将所有Child3替换为相同的值,则为"Parent[Child4]/Child3"