0

重複の可能性:
2つのXMLファイルをマージして属性値を変更する

2つのxmlファイルがあります。それらをマージして、いくつかの属性を使用して計算を行いたいと思います。いくつかのアイデアを提供してください。標準のxslthttp ://informatik.hu-berlin.de/mergeを使用してファイルをマージしています。

ファイル1:カバレッジbranch-rate = "0.5125" branch-total = "50" line-rate = "0.00593031875463"

ファイル2:カバレッジbranch-rate = "0.5" branch-total = "40" line-rate = "1.0"

期待される結果ファイルカバレッジbranch-rate="(0.5125 * 50 + 05 * 40)/(50 + 40)" branch-total = "50" line-rate = "0.00593031875463"

4

1 に答える 1

0

<coverage>ファイル1とファイル2はそれぞれ、指定した属性を持つ単一の要素で構成されていると想定しました。また、常に2つのファイルがあり、それ以上は存在しないと想定しました。すべての計算があなたの結果に対してどのように機能するかわからなかったので、私は推測しました。計算をより簡潔で読みやすくするために、必要以上に多くの変数を使用しました。

助けを求めるときは、もっと明確にする必要があります。

<?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 に答える