Xml 在父节点中添加一个新节点,该节点在xslt中用文本更新

Xml 在父节点中添加一个新节点,该节点在xslt中用文本更新,xml,xslt,Xml,Xslt,我已通过重写子节点更新了XML。现在我需要为标记添加一个新节点 我的XML是: <GrandParent> <Parent> <Child1>test</Child1> <Child2>abc</Child2> <Child3>62</Child3> <Child4>5000061</Child4> </Parent> <Pa

我已通过重写子节点更新了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>

测试
abc
62
5000061
测试
abc
33
5560853
并更新了第一个标签,如下所示:

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

测试
abc
62
dshgfshgfhgf
5000061
测试
abc
33
dshgfshgfhgf
5560853
通过使用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>

dshgfshgfhgf
现在我想在两个父标记中添加一个新节点。如何在不干扰当前代码的情况下执行此操作

我需要在两个父标记中添加一个新节点

添加与父节点匹配的模板,并在其中添加新节点-例如:

<xsl:template match="Parent">
    <xsl:copy>
        <xsl:apply-templates/>
        <new-node>123</new-node>
    </xsl:copy>
</xsl:template>

123

您可能希望编辑问题以使其清晰

只需添加一个新节点

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

dshgfshgfhgf
123

Child3节点将仅在满足条件时更改,否则将保持不变。如果您用相同的值替换所有的Child3,那么它将是“父[Child4]/Child3”

您可以看到我的版本在这里工作:恐怕我没有时间调试您的。首先您要替换Child3节点吗?xml有2个孩子3