以下のようなケースがあります。2 つの xml ファイルのマージに取り組んでいます。両方のファイルで特定のタイプのノードを比較し、特定の属性が同じかどうかを確認します。その属性が同じ場合、そのノードをマージし、そうでない場合は、ファイル 1 のノードをコピーします。以下のロジックを参照してください
for-each(file1/nodes)
boolean variable var set to false
for-each (file2/nodes)
when(some_condition)
var = true
/for-each
if(var = false)
do-something
/for-each
私の問題は、この変数を設定して保持できないことです。私は xslt に非常に慣れていないので、xslt を使用してこれを達成するには助けが必要です。
<xslt:for-each select="$file1_coverage/packages/package">
<xslt:variable name="file1_package_name" select="@name" />
<!-- I want to declare a boolean variable and set it false-->
<xslt:for-each select="$file2_coverage/packages/package">
<xslt:variable name="file2_package_name" select="@name" />
<xslt:choose>
<xslt:when test="$file1_package_name=$file2_package_name">
<!-- Set the boolean variable to true-->
<package>
<xslt:attribute name="branch-rate">
<xslt:value-of select="(($file1_package_branch_rate * $file1_package_branch_total) + ($file2_package_branch_rate * $file2_package_branch_total)) div ($file1_package_branch_total + $file2_package_branch_total)" />
</xslt:attribute>
</package>
</xslt:when>
</xslt:for-each>
<xslt:when test="boolean Variable is false">
<package>
<xslt:copy-of select="$file1_package/@*" />
<xslt:copy-of select="$file1_package/*" />
</package>
</xslt:when>
</xslt:for-each>