これは別のマインドブロワーです。おそらくあなたにとっては簡単です。
2 つのリストがあります。1 つはアイテム ID をグループ ID に接続するマップで、2 つ目は単純な値を持つアイテム リストです。項目値の数をグループ合計に累積する必要があります。もともと、2 つのリストは異なる XML ファイルに基づいていました。
<!-- List 1 mapping-->
<mapping>
<sub id="1" item="a" group="a">
<sub id="2" item="b" group="a">
<sub id="3" item="d" group="b">
<sub id="4" item="e" group="b">
<sub id="5" item="f" group="c">
</mapping>
<!-- List 2 items -->
<items>
<item id="a" val="OK"/>
<item id="b" val="ERROR"/>
<item id="c" val="OK"/>
<item id="d" val="OK"/>
<item id="e" val="OK"/>
<item id="f" val="OK"/>
</items>
私の現在のアプローチ:
<xsl:variable name="failed-total">
<xsl:variable name="groups-total">
<xsl:value-of select="count(mapping//sub[not(@group=preceding-sibling::sub/@group)])"/>
</xsl:variable>
<!--Selecting the unique groups of the first list:-->
<xsl:for-each select="mapping//sub[not(@group=preceding-sibling::sub/@group)]">
<xsl:variable name="failed">
<xsl:value-of select="items/item[@id=current()/@item and val='ERROR']"/>
</xsl:variable>
<!-- TODO: add value of failed to failed-total value -->
</xsl:for-each>
必要な出力:
Number of Groups: 3
Groups failed: 1
リスト 2 を次のように変更します。
<!-- List 2 items -->
<items>
<item id="a" val="ERROR"/>
<item id="b" val="ERROR"/>
<item id="c" val="OK"/>
<item id="d" val="OK"/>
<item id="e" val="OK"/>
<item id="f" val="OK"/>
</items>
次に、同じものを出力する必要があります。原因となる項目 a と be は同じグループに属します。
Number of Groups: 3
Groups failed: 1
どんなヒントでも大歓迎です。