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

时间:2015-11-13 00:52:52

标签: xml xslt xslt-2.0 xslkey

`

<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,价格和状态的州。

预期产出:

ProductCode Fruit Price 111 Apple 34 222 Papaya 5

1 个答案:

答案 0 :(得分:0)

这样的事情:

<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时才处理该组。