我有两个相同结构的xml,我只想要最终xml中的属性总和。如下面的input1.xml和input2.xml,atribute数据集的值为20,input2的值为30,因此output.xml的值应为= 50
input1.xml
<?xml version="1.0" encoding="UTF-8"?>
<chart xmlns=" "
labelStep="1"
showValues="0"
anchorRadius="1"
>
<categories>
<category Label="Technical RATH"/>
<category Label="Technical RATH2"/>
</categories>
<dataset>
<set value="20" color="a5cf5a"/>
<set value="10" color="b5cf5a"/>
</dataset>
</chart>
input2.xml
<?xml version="1.0" encoding="UTF-8"?>
<chart xmlns=" "
labelStep="1"
showValues="0"
anchorRadius="1"
>
<categories>
<category Label="Technical RATH"/>
<category Label="Technical RATH2"/>
</categories>
<dataset>
<set value="30" color="a5cf5a"/>
<set value="150" color="b5cf5a"/>
</dataset>
</chart>
和output.xml应为
<?xml version="1.0" encoding="UTF-8"?>
<chart xmlns=" "
labelStep="1"
showValues="0"
anchorRadius="1"
>
<categories>
<category Label="Technical RATH"/>
<category Label="Technical RATH2"/>
</categories>
<dataset>
<set value="50" color="a5cf5a"/>
<set value="160" color="b5cf5a"/>
</dataset>
</chart>
答案 0 :(得分:1)
您需要修复这些文档中命名空间的内容,并根据以下内容进行调整,但除此之外,您可以执行此操作:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="set/@value">
<xsl:attribute name="value">
<xsl:value-of select="number(.) + number(document('source2.xml')/chart/dataset/set/@value)"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>