XSLT xsl:key - 从报告中排除输入

XSLT xsl:key - exclude input from report

`

<Fruits>
    <Fruit>
        <Name>Mango</Name>
        <Price>20</Price>
        <Vendor>Vendor1</Vendor>
        <State>AK</State>
        <Status>Delivered</Status>
        <ProductCode>123</ProductCode>
    </Fruit>
    <Fruit>
        <Name>Apple</Name>
        <Price>34</Price>
        <Vendor>Vendor2</Vendor>
        <State>AS</State>
        <Status>Delivered</Status>
        <ProductCode>111</ProductCode>
    </Fruit>
    <Fruit>
        <Name>Mango</Name>
        <Price>20</Price>
        <Vendor>Vendor3</Vendor>
        <State>FL</State>
        <Status>Delivered</Status>
        <ProductCode>123</ProductCode>
    </Fruit>
    <Fruit>
        <Name>Papaya</Name>
        <Price>5</Price>
        <Vendor>Vendor4</Vendor>
        <State>CA</State>
        <Status>Sold</Status>
        <ProductCode>222</ProductCode>
</Fruit>
</Fruits>

`

我不想将 Mango 包含在报告中,因为状态是已交付到具有相同 ProductCode、Price 和 Status 的另一个州。

预期输出:

ProductCode Fruit Price 111 Apple 34 222 Papaya 5

像这样:

<xsl:for-each-group select="Fruit" 
  group-by="string-join((ProductGroup, Price, Status), '~')">
  <xsl:apply-templates select="current-group()[last()=1]"/>
</xsl:for-each-group>

谓词[last()=1]的作用是只处理大小为1的组。