XSLT分组和求和

时间:2017-01-09 13:55:50

标签: xml xslt xslt-grouping

我是XSLT的新手,需要根据每个订单的ID总计项目的总价格(Quantity * UnitPrice),并使用XSLT 1.0在每个项目组的末尾打印。 这是我的示例XML

<Orders>
<Order>
    <Reference>234</Reference>
    <Item>
        <ID>10</ID>
        <Quantity>1</Quantity>
        <UnitPrice>2</UnitPrice>
    </Item>
    <Item>
        <ID>10</ID>
        <Quantity>2</Quantity>
        <UnitPrice>3</UnitPrice>
    </Item>
    <Item>
        <ID>10</ID>
        <Quantity>2</Quantity>
        <UnitPrice>2</UnitPrice>
    </Item>
    <Item>
        <ID>20</ID>
        <Quantity>2</Quantity>
        <UnitPrice>4</UnitPrice>
    </Item>
</Order>
<Order>
    <Reference>456</Reference>
    <Item>
        <ID>10</ID>
        <Quantity>2</Quantity>
        <UnitPrice>2</UnitPrice>
    </Item>
    <Item>
        <ID>20</ID>
        <Quantity>2</Quantity>
        <UnitPrice>2</UnitPrice>
    </Item>
</Order>
</Orders>

所需的输出XML在

之下
<SAPOrders>
<Order>
    <Reference>234</Reference>
    <Item>
        <Quantity>1</Quantity>
        <UnitPrice>2</UnitPrice>
    </Item>
    <Item>
        <Quantity>2</Quantity>
        <UnitPrice>3</UnitPrice>
    </Item>
    <Item>
        <Quantity>2</Quantity>
        <UnitPrice>2</UnitPrice>
        <Total>12</Notes>
    </Item>
    <Item>
        <Quantity>2</Quantity>
        <UnitPrice>4</UnitPrice>
        <Total>8</Notes>
    </Item>
</Order>
<Order>
    <Reference>456</Reference>
    <Item>
        <Quantity>2</Quantity>
        <UnitPrice>2</UnitPrice>
        <Total>4</Notes>
    </Item>
    <Item>
        <Quantity>2</Quantity>
        <UnitPrice>2</UnitPrice>
        <Total>4</Total>
    </Item>
</Order>
</SAPOrders>

1 个答案:

答案 0 :(得分:0)

这里有两个问题:(1)按项目ID按顺序对项目进行分组,(2)计算每个这样的小组的小计。

第一个问题相对简单,可以使用Muenchian grouping方法解决。第二个问题更难,因为XSLT 1.0不允许对计算结果求和。

以下样式表首先预先计算每个项目的延长价格并将结果存储在变量中。然后它对变量进行操作,对项目进行分组并对每个组进行小计。

XSLT 1.0

$onInit

演示:http://xsltransform.net/jz1PuPz