首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于多分组加终止的门坎和

基于多分组加终止的门坎和
EN

Stack Overflow用户
提问于 2012-10-26 05:54:59
回答 1查看 1.1K关注 0票数 2

我想使用一些xslt获得一个更好的below.Please文件,XMLXSLT1.0提供了很多对.Thanks的支持。

代码语言:javascript
复制
<!-- entry xml -->
    <Pallets>
    <Pallet>
    <PalletNumber>2</PalletNumber>
    <Product>1</Product>
    <Quantity>2</Quantity>
    </Pallet>
    <Pallet>
    <PalletNumber>2</PalletNumber>
    <Product>1</Product>
    <Quantity>4</Quantity>
    </Pallet>
    <Pallet>
    <PalletNumber>2</PalletNumber>
    <Product>2</Product>
    <Quantity>1</Quantity>
    </Pallet>
    <Pallet>
    <PalletNumber>3</PalletNumber>
    <Product>1</Product>
    <Quantity>2</Quantity>
    </Pallet>
    <Pallet>
    <PalletNumber>4</PalletNumber>
    <Product>2</Product>
    <Quantity>2</Quantity>
    </Pallet></Pallets>

我需要总结每个托盘号码和产品的数量(见下面的第一个节点),根据.Also第一次出现在xml.Results中的第一次出现,需要在掌上数字值的右边部分使用xml.Results序列号:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<!-- upgraded xml --> 
    <Pallets><Pallet>
    <PalletNumber>2_1</PalletNumber>
    <Product>1</Product>
    <Quantity>6</Quantity>
    </Pallet>
    <Pallet>
    <PalletNumber>2_2</PalletNumber>
    <Product>2</Product>
    <Quantity>1</Quantity>
    </Pallet>
    <Pallet>
    <PalletNumber>3_1</PalletNumber>
    <Product>1</Product>
    <Quantity>2</Quantity>
    </Pallet>
    <Pallet>
    <PalletNumber>4_1</PalletNumber>
    <Product>2</Product>
    <Quantity>2</Quantity>
    </Pallet></Pallets>
EN

回答 1

Stack Overflow用户

发布于 2012-10-26 09:09:30

不能100%确定新PalletNumber的逻辑是正确的(这里是凌晨3:00 ),但是下面的XSLT1.0用给定的输入返回所需的输出.

XML输入

代码语言:javascript
复制
<Pallets>
    <Pallet>
        <PalletNumber>2</PalletNumber>
        <Product>1</Product>
        <Quantity>2</Quantity>
    </Pallet>
    <Pallet>
        <PalletNumber>2</PalletNumber>
        <Product>1</Product>
        <Quantity>4</Quantity>
    </Pallet>
    <Pallet>
        <PalletNumber>2</PalletNumber>
        <Product>2</Product>
        <Quantity>1</Quantity>
    </Pallet>
    <Pallet>
        <PalletNumber>3</PalletNumber>
        <Product>1</Product>
        <Quantity>2</Quantity>
    </Pallet>
    <Pallet>
        <PalletNumber>4</PalletNumber>
        <Product>2</Product>
        <Quantity>2</Quantity>
    </Pallet>
</Pallets>

XSLT1.0

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:key name="kPalletProduct" match="Pallet" use="concat(PalletNumber,'-',Product)"/>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="Pallets">
        <xsl:copy>
            <xsl:for-each select="Pallet[generate-id()=generate-id(key('kPalletProduct',concat(PalletNumber,'-',Product))[1])]">
                <xsl:copy>
                    <PalletNumber>
                        <xsl:value-of select="concat(PalletNumber,'_',count(preceding::Pallet[PalletNumber=current()/PalletNumber and not(Product=current()/Product)][1])+1)"/>
                    </PalletNumber>
                    <Product>
                        <xsl:value-of select="Product"/>
                    </Product>
                    <Quantity>
                        <xsl:value-of select="sum(key('kPalletProduct',concat(PalletNumber,'-',Product))/Quantity)"/>
                    </Quantity>
                </xsl:copy>
            </xsl:for-each>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

输出

代码语言:javascript
复制
<Pallets>
   <Pallet>
      <PalletNumber>2_1</PalletNumber>
      <Product>1</Product>
      <Quantity>6</Quantity>
   </Pallet>
   <Pallet>
      <PalletNumber>2_2</PalletNumber>
      <Product>2</Product>
      <Quantity>1</Quantity>
   </Pallet>
   <Pallet>
      <PalletNumber>3_1</PalletNumber>
      <Product>1</Product>
      <Quantity>2</Quantity>
   </Pallet>
   <Pallet>
      <PalletNumber>4_1</PalletNumber>
      <Product>2</Product>
      <Quantity>2</Quantity>
   </Pallet>
</Pallets>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13081509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档