0

可能重复:
合并 2 个 XML 文件并修改属性值

我有两个 xml 文件。我想合并它们并用一些属性做一些算术。请提供一些想法。我正在使用标准的 xslt http://informatik.hu-berlin.de/merge来合并文件。

文件1:覆盖分支率=“0.5125”分支总=“50”行率=“0.00593031875463”

文件 2:覆盖分支率=“0.5”分支总=“40”行率=“1.0”

预期结果文件覆盖率 branch-rate="(0.5125*50 + 05*40)/(50+40)" branch-total="50" line-rate="0.00593031875463"

4

1 回答 1

0

我假设文件 1 和文件 2 都由一个元素组成<coverage>, 具有您提供的属性。我还假设总会有两个文件,仅此而已。我不确定所有计算如何为您的结果工作,所以我猜了。为了使计算更加简洁易读,我使用了比必要更多的变量。

在寻求帮助时,您应该更加明确。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
        <xsl:variable name = "b1" select="document('file1.xml')/coverage"/>
        <xsl:variable name = "b2" select="document('file2.xml')/coverage"/>
        <xsl:variable name = "b1_br" select="$b1/@branch-rate"/>
        <xsl:variable name = "b1_bt" select="$b1/@branch-total"/>
        <xsl:variable name = "b1_lr" select="$b1/@line-rate"/>
        <xsl:variable name = "b2_br" select="$b2/@branch-rate"/>
        <xsl:variable name = "b2_bt" select="$b2/@branch-total"/>
        <coverage>
            <xsl:attribute name="branch-rate">
                <xsl:value-of select="(($b1_br * $b1_bt) + ($b2_br * $b2_bt)) div ($b1_bt + $b2_bt)"/>
            </xsl:attribute>
            <xsl:copy-of select="$b1/@branch-total"/>
            <xsl:copy-of select="$b1/@line-rate"/>
       </coverage>
     </xsl:template>
</xsl:stylesheet>
于 2012-09-11T07:00:36.710 回答