現在のグループを集計し、集計が特定の条件を満たしている場合にのみレコードを出力するXSLTが入力をグループ化しています。 for-each-groupは正常に動作しますが、予告編のレコードの正確なレコード数は取得できません。ここで XSLT 2.0グループ化、集計、集計および条件
は、サンプル入力です:<Book_Data>
<Book_Entry>
<Book>
<Book_ID>1</Book_ID>
<Book_Name>Test1</Book_Name>
</Book>
<Sales>
<Quantity>2</Quantity>
</Sales>
<Book_Entry>
<Book_Entry>
<Book>
<Book_ID>1</Book_ID>
<Book_Name>Test1</Book_Name>
</Book>
<Sales>
<Quantity>3</Quantity>
</Sales>
<Book_Entry>
<Book_Entry>
<Book>
<Book_ID>2</Book_ID>
<Book_Name>Test2</Book_Name>
</Book>
<Sales>
<Quantity>3</Quantity>
</Sales>
<Book_Entry>
<Book_Entry>
<Book>
<Book_ID>2</Book_ID>
<Book_Name>Test2</Book_Name>
</Book>
<Sales>
<Quantity>-3</Quantity>
</Sales>
<Book_Entry>
</Book_Data>
そして、ここでサンプルXSLT(2.0)である:
<xsl:for-each-group select="Book_Data/Book_Entry" group-by="Book/Book_ID">
<xsl:if test="sum(current-group()/Sales/Quantity) != 0">
<xsl:value-of select="Book/Book_ID"/>
<xsl:value-of select="Book/Book_Name"/>
</xsl:if>
</xsl:for-each-group>
<xsl:value-of select="count(distinct-values(Book_Data/Book_Entry/Book/Book_ID[sum(../../Sales/Quantity) != 0]))"/>
問題は、トップセクションが正しく唯一の本1.出力されますが、トレーラーは両方をカウント私は外側の文脈でBook_IDを参照するために合計をどのように調整するかを理解できません。
を(確かに積み上げるするという意味ではありません期待される出力を示してください。そのような文字列?)。 –