<xsl:output indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="root">
<xsl:copy>
<xsl:for-each-group select="RemittanceInformation" group-by="IndividualRemittance/ExchangeAssignedPolicyID">
<xsl:copy>
<xsl:variable name="pos" select="position()"/>
<xsl:apply-templates select="EntityAssignedNumber, IndividualRemmittance, current-group()/RemittanceDetail">
<xsl:with-param name="pos" select="$pos"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
<xsl:template match="EntityAssignedNumber">
<xsl:param name="pos"/>
<xsl:copy>
<xsl:value-of select="/root/RemittanceInformation[1]/EntityAssignedNumber + $pos - 1"/>
</xsl:copy>
</xsl:template>
私はO/Sに超便利マルタンhonnenからこのコードを持って、特定の種類が含まれていないすべてのノードを無視して、それぞれのためのコピーそれがしないことの1つは、タイプRemittanceInformationのノードがIndividualRemmittanceを持たない場合、それはまったくコピーしないということです。
私は、IndividualRemmittanceが存在する場合にそれらをグループ化して重複がないようにします(コードはそれを既に実行しています)。しかし、IndividualRemmittanceなしでRemittanceInformationを実行すると、通常通り。
これを行うには何を変更する必要がありますか?
コードを理解しようとしましたか?どの部分を変更する必要があると思われますか?やってみました?あなたの試行の結果は何でしたか? – Tomalak
グループ化は "IndividualRemittance/ExchangeAssignedPolicyID"で実行されますが、私はどうしたらいいのか分かりません... IndividualRemittanceが存在しないときはグループ化しません。私はその状態を設定する方法を知らない。 –
さて、あなたはそれらをグループ化するのではなく、それらをコピーしたくありません。それは2つのことです。言い換えれば、あなたがしたいのは、1)グループ分けの対象から除外し、2)別々にコピーすることです。 – Tomalak