【问题标题】:Muenchian Grouping, Sorting & Filtering using XSLT version 1.0使用 XSLT 1.0 版的 Muenchian 分组、排序和过滤
【发布时间】:2014-02-06 09:58:04
【问题描述】:

我有一个如下的 XML:

<?xml version="1.0" encoding="utf-8"?>
<EnterpriseDocument ClientID="1000101" CreationTimestamp="2013-12-20T00:03:40.740" InterfaceName="InterfaceExport" ClientName="Zomba" CreationSource="Base" Version="1.0">
  <BusinessUnitList>
    <BusinessUnit buName="Site 1" buCode="0001" countryCode="TD">
      <FuelItemList>
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0001" priceType="Liquid" serviceType="Great" startDate="2013-12-19" startTime="10:15" />
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0001" priceType="Liquid" serviceType="Great" startDate="2013-12-16" startTime="12:58" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="10:15" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-12-19" startTime="16:20" />
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="10:15" />
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-12-19" startTime="16:20" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0001" priceType="LiquidNitrogen" serviceType="Great" startDate="2013-12-19" startTime="23:58" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0001" priceType="LiquidNitrogen" serviceType="Great" startDate="2013-12-18" startTime="13:58" />
      </FuelItemList>
    </BusinessUnit>
    <BusinessUnit buName="Site 2" buCode="0002" countryCode="GK">
      <FuelItemList>        
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0001" priceType="Liquid" serviceType="Great" startDate="2013-12-19" startTime="12:15" />
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="18:20" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0001" priceType="LiquidNitrogen" serviceType="Great" startDate="2013-12-19" startTime="22:58" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="12:15" />       
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0001" priceType="Liquid" serviceType="Great" startDate="2013-12-16" startTime="17:58" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="18:20" />       
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="12:15" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0001" priceType="LiquidNitrogen" serviceType="Great" startDate="2013-12-18" startTime="15:58" />
      </FuelItemList>
    </BusinessUnit> 
  </BusinessUnitList>
</EnterpriseDocument>

我需要得到如下输出:

<?xml version="1.0" encoding="utf-8"?>
<EnterpriseDocument ClientID="1000101" CreationTimestamp="2013-12-20T00:03:40.740" InterfaceName="InterfaceExport" ClientName="Zomba" CreationSource="Base" Version="1.0">
  <BusinessUnitList>
    <BusinessUnit buName="Site 1" buCode="0001" countryCode="TD">
      <FuelItemList>
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="10:15" />
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="10:15" />    
      </FuelItemList>     
    </BusinessUnit> 
    <BusinessUnit buName="Site 2" buCode="0002" countryCode="GK">
      <FuelItemList>
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="12:15" />       
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="12:15" />
      </FuelItemList>
    </BusinessUnit>
    <BusinessUnit buName="Site 2" buCode="0002" countryCode="GK">
      <FuelItemList>
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="18:20" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="18:20" />
      </FuelItemList>
    </BusinessUnit>
    <BusinessUnit buName="Site 1" buCode="0001" countryCode="TD">
      <FuelItemList>        
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-12-19" startTime="16:20" />       
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-12-19" startTime="16:20" />        
      </FuelItemList>     
    </BusinessUnit> 
  </BusinessUnitList>
</EnterpriseDocument>

实现上述目标必须遵循的规则如下:

  1. 输出必须仅包含 FuelItemExtID= 2 或 3 的燃料项目。[过滤]
  2. 必须根据业务单位内每个燃料项目的 startDate 和 startTime 对输出进行排序。 [按升序排序,最新在上]
  3. 必须根据 startDate 和 startTime 组合的唯一值对输出进行分组。 [基于 concat(@startDate, '+', @startTime]的分组]

注意:我只需要 XSLT 1.0 版本的解决方案。

如果您需要任何说明,请告诉我。

我的尝试如下:

<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt"
        xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var"
        exclude-result-prefixes="msxsl var" version="1.0">
    <xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />

    <xsl:key name="GroupByStartDateTime" match="//FuelItem" use="concat(@startDate, '+', @startTime)" />

    <xsl:template match="/" >
        <EnterpriseDocument InterfaceName="{//@InterfaceName}" Version="{//@Version}" CreationTimestamp="{//@CreationTimestamp}" CreationSource="{//@CreationSource}" ClientID="{//@ClientID}" ClientName="{//@ClientName}" >
            <BusinessUnitList>
                <xsl:for-each select="//BusinessUnit">
                    <xsl:variable name="businessUnit" select="."/>
                    <xsl:for-each select="$businessUnit/FuelItemList/FuelItem">
                        <xsl:sort select="@startDate" />
                        <xsl:sort select="@startTime" />
                        <xsl:variable name="fuelItem" select="."/>
                        <xsl:for-each select="$fuelItem[generate-id() = generate-id(key('GroupByStartDateTime',concat(@startDate, '+', @startTime)))]">
                            <xsl:if test="@fuelItemExtID=2 or @fuelItemExtID=3">
                                <BusinessUnit buCode="{../../@buCode}" buName="{../../@buName}" countryCode="{../../@countryCode}" >
                                    <FuelItemList>
                                        <xsl:apply-templates select="key('GroupByStartDateTime',concat(@startDate, '+', @startTime))" mode="Item" />
                                    </FuelItemList>
                                </BusinessUnit>
                            </xsl:if>
                        </xsl:for-each>
                    </xsl:for-each>
                </xsl:for-each>
            </BusinessUnitList>
        </EnterpriseDocument>
    </xsl:template>

    <xsl:template match="FuelItem" mode="Item">
        <FuelItem
          fuelItemID="{@fuelItemID}"
          fuelItemExtID="{@fuelItemExtID}"
          fuelItemName="{@fuelItemName}"
          price="{@price}"
          startDate="{@startDate}"
          startTime="{@startTime}"
          priceType="{@priceType}"
          serviceType="{@serviceType}"
            />
    </xsl:template>
</xsl:stylesheet>

输出如下:

<EnterpriseDocument InterfaceName="InterfaceExport" Version="1.0" CreationTimestamp="2013-12-20T00:03:40.740" CreationSource="Base" ClientID="1000101" ClientName="Zomba">
    <BusinessUnitList>
        <BusinessUnit buCode="0001" buName="Site 1" countryCode="TD">
            <FuelItemList>
                <FuelItem fuelItemID="0000002" fuelItemExtID="2" fuelItemName="Fuel_2" price="2.0001" startDate="2013-08-17" startTime="10:15" priceType="LiquidSynthetic" serviceType="Great" />
                <FuelItem fuelItemID="0000003" fuelItemExtID="3" fuelItemName="Fuel_3" price="3.0001" startDate="2013-08-17" startTime="10:15" priceType="LiquidHydrogen" serviceType="Great" />
            </FuelItemList>
        </BusinessUnit>
        <BusinessUnit buCode="0001" buName="Site 1" countryCode="TD">
            <FuelItemList>
                <FuelItem fuelItemID="0000002" fuelItemExtID="2" fuelItemName="Fuel_2" price="2.0001" startDate="2013-12-19" startTime="16:20" priceType="LiquidSynthetic" serviceType="Great" />
                <FuelItem fuelItemID="0000003" fuelItemExtID="3" fuelItemName="Fuel_3" price="3.0001" startDate="2013-12-19" startTime="16:20" priceType="LiquidHydrogen" serviceType="Great" />
            </FuelItemList>
        </BusinessUnit>
        <BusinessUnit buCode="0002" buName="Site 2" countryCode="GK">
            <FuelItemList>
                <FuelItem fuelItemID="0000002" fuelItemExtID="2" fuelItemName="Fuel_2" price="2.0001" startDate="2013-08-17" startTime="12:15" priceType="LiquidSynthetic" serviceType="Great" />
                <FuelItem fuelItemID="0000003" fuelItemExtID="3" fuelItemName="Fuel_3" price="3.0001" startDate="2013-08-17" startTime="12:15" priceType="LiquidHydrogen" serviceType="Great" />
            </FuelItemList>
        </BusinessUnit>
        <BusinessUnit buCode="0002" buName="Site 2" countryCode="GK">
            <FuelItemList>
                <FuelItem fuelItemID="0000003" fuelItemExtID="3" fuelItemName="Fuel_3" price="3.0001" startDate="2013-08-17" startTime="18:20" priceType="LiquidHydrogen" serviceType="Great" />
                <FuelItem fuelItemID="0000002" fuelItemExtID="2" fuelItemName="Fuel_2" price="2.0001" startDate="2013-08-17" startTime="18:20" priceType="LiquidSynthetic" serviceType="Great" />
            </FuelItemList>
        </BusinessUnit>
    </BusinessUnitList>
</EnterpriseDocument>

【问题讨论】:

  • 你尝试解决这个问题的例子在哪里?
  • 我很抱歉最初没有分享我的尝试。

标签: xml xslt grouping biztalk


【解决方案1】:

第一件事:您的 Muenchian 分组设置不正确:您需要选择组中第一个的项目。而不是:

<xsl:for-each select="//BusinessUnit[generate-id() = generate-id(key('GroupByBusinessUnit',@buCode))]">

你应该有:

<xsl:for-each select="//BusinessUnit[generate-id() = generate-id(key('GroupByBusinessUnit', @buCode)[1])]">

除此之外,在我看来,这可以简化为:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='xml' version='1.0' encoding='utf-8' indent='yes'/>

<xsl:key name="similarItems" match="FuelItem[@fuelItemExtID=2 or @fuelItemExtID=3]" use="concat(../../@buCode, '+', @startDate, '+', @startTime)" />

<xsl:template match="/EnterpriseDocument">
<xsl:copy>
<xsl:apply-templates select="@*"/>
    <BusinessUnitList>
        <xsl:for-each select="//FuelItem[generate-id() = generate-id(key('similarItems', concat(../../@buCode,  '+', @startDate, '+', @startTime))[1])]">
        <xsl:sort select="@startDate" data-type="text" order="ascending"/>
        <xsl:sort select="@startTime" data-type="text" order="ascending"/>
            <BusinessUnit>
                <xsl:apply-templates select="../../@*"/>
                <xsl:for-each select="key('similarItems', concat(../../@buCode, '+', @startDate, '+', @startTime))">
                <xsl:sort select="@fuelItemExtID" data-type="number" order="ascending"/>
                    <xsl:copy-of select="."/>
                </xsl:for-each>
            </BusinessUnit>
        </xsl:for-each>
    </BusinessUnitList>
</xsl:copy>
</xsl:template>

<xsl:template match="@*">
    <xsl:copy/>
</xsl:template>

</xsl:stylesheet>

应用于您的原始输入时:

<?xml version="1.0" encoding="utf-8"?>
<EnterpriseDocument ClientID="1000101" CreationTimestamp="2013-12-20T00:03:40.740" InterfaceName="InterfaceExport" ClientName="Zomba" CreationSource="Base" Version="1.0">
  <BusinessUnitList>
    <BusinessUnit buName="Site 1" buCode="0001" countryCode="TD">
      <FuelItemList>
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0001" priceType="Liquid" serviceType="Great" startDate="2013-12-19" startTime="10:15" />
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0001" priceType="Liquid" serviceType="Great" startDate="2013-12-16" startTime="12:58" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="10:15" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-12-19" startTime="16:20" />
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="10:15" />
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-12-19" startTime="16:20" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0001" priceType="LiquidNitrogen" serviceType="Great" startDate="2013-12-19" startTime="23:58" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0001" priceType="LiquidNitrogen" serviceType="Great" startDate="2013-12-18" startTime="13:58" />
      </FuelItemList>
    </BusinessUnit>
    <BusinessUnit buName="Site 2" buCode="0002" countryCode="GK">
      <FuelItemList>        
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0001" priceType="Liquid" serviceType="Great" startDate="2013-12-19" startTime="12:15" />
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="18:20" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0001" priceType="LiquidNitrogen" serviceType="Great" startDate="2013-12-19" startTime="22:58" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="12:15" />       
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0001" priceType="Liquid" serviceType="Great" startDate="2013-12-16" startTime="17:58" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="18:20" />       
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="12:15" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0001" priceType="LiquidNitrogen" serviceType="Great" startDate="2013-12-18" startTime="15:58" />
      </FuelItemList>
    </BusinessUnit> 
  </BusinessUnitList>
</EnterpriseDocument>

结果是:

<?xml version="1.0" encoding="utf-8"?>
<EnterpriseDocument ClientID="1000101" CreationTimestamp="2013-12-20T00:03:40.740" InterfaceName="InterfaceExport" ClientName="Zomba" CreationSource="Base" Version="1.0">
  <BusinessUnitList>
    <BusinessUnit buName="Site 1" buCode="0001" countryCode="TD">
      <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="10:15"/>
      <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="10:15"/>
    </BusinessUnit>
    <BusinessUnit buName="Site 2" buCode="0002" countryCode="GK">
      <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="12:15"/>
      <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="12:15"/>
    </BusinessUnit>
    <BusinessUnit buName="Site 2" buCode="0002" countryCode="GK">
      <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-08-17" startTime="18:20"/>
      <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-08-17" startTime="18:20"/>
    </BusinessUnit>
    <BusinessUnit buName="Site 1" buCode="0001" countryCode="TD">
      <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0001" priceType="LiquidSynthetic" serviceType="Great" startDate="2013-12-19" startTime="16:20"/>
      <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0001" priceType="LiquidHydrogen" serviceType="Great" startDate="2013-12-19" startTime="16:20"/>
    </BusinessUnit>
  </BusinessUnitList>
</EnterpriseDocument>

使用您的替代输入:

<?xml version="1.0" encoding="utf-8"?>
<EnterpriseDocument ClientID="1000001" CreationTimestamp="2014-01-10T13:56:47.259" InterfaceName="InterfaceExport" ClientName="Zomba" CreationSource="Base" Version="1.0">
  <BusinessUnitList>
    <BusinessUnit buName="Site 1" buCode="0001" countryCode="TD">
      <FuelItemList>
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0050" priceType="Liquid" serviceType="Great" startDate="2014-01-10" startTime="13:45" />
        <FuelItem fuelItemID="0000001" fuelItemName="Fuel_1" fuelItemExtID="1" price="1.0100" priceType="Liquid" serviceType="Great" startDate="2014-01-10" startTime="13:46" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0050" priceType="LiquidSynthetic" serviceType="Great" startDate="2014-01-10" startTime="13:45" />
        <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0100" priceType="LiquidSynthetic" serviceType="Great" startDate="2014-01-10" startTime="13:46" />
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0050" priceType="LiquidHydrogen" serviceType="Great" startDate="2014-01-10" startTime="13:45" />
        <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0100" priceType="LiquidHydrogen" serviceType="Great" startDate="2014-01-10" startTime="13:46" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0050" priceType="LiquidNitrogen" serviceType="Great" startDate="2014-01-10" startTime="13:45" />
        <FuelItem fuelItemID="0000004" fuelItemName="Fuel_4" fuelItemExtID="4" price="4.0100" priceType="LiquidNitrogen" serviceType="Great" startDate="2014-01-10" startTime="13:46" />
      </FuelItemList>
    </BusinessUnit>
  </BusinessUnitList>
</EnterpriseDocument>

结果将是:

<?xml version="1.0" encoding="utf-8"?>
<EnterpriseDocument ClientID="1000001" CreationTimestamp="2014-01-10T13:56:47.259" InterfaceName="InterfaceExport" ClientName="Zomba" CreationSource="Base" Version="1.0">
  <BusinessUnitList>
    <BusinessUnit buName="Site 1" buCode="0001" countryCode="TD">
      <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0050" priceType="LiquidSynthetic" serviceType="Great" startDate="2014-01-10" startTime="13:45"/>
      <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0050" priceType="LiquidHydrogen" serviceType="Great" startDate="2014-01-10" startTime="13:45"/>
    </BusinessUnit>
    <BusinessUnit buName="Site 1" buCode="0001" countryCode="TD">
      <FuelItem fuelItemID="0000002" fuelItemName="Fuel_2" fuelItemExtID="2" price="2.0100" priceType="LiquidSynthetic" serviceType="Great" startDate="2014-01-10" startTime="13:46"/>
      <FuelItem fuelItemID="0000003" fuelItemName="Fuel_3" fuelItemExtID="3" price="3.0100" priceType="LiquidHydrogen" serviceType="Great" startDate="2014-01-10" startTime="13:46"/>
    </BusinessUnit>
  </BusinessUnitList>
</EnterpriseDocument>

【讨论】:

  • 感谢您的回答。但是,您共享的代码存在问题。首先,企业文档的属性没有出现在输出中。我可以补充一下,不是问题。其次,脚本在特定情况下失败。检查下面的输入文件。
  • @user3205378 我相信我现在已经解决了这两个问题。
  • 太棒了,完美运行。请您解释一下,备用输入文件的问题是什么。
  • @user3205378 问题是关键匹配所有类型的燃料项目;因此,位于其组中的第一个燃料项目(按 BusinessUnit+startDate+startTime)不一定属于类型 2 或 3。如果答案适合您,请通过接受它来结束此问题。
  • 由于是这个论坛的新手,我不知道如何关闭。你能指导我吗?我点击了勾号并接受它作为答案。我还需要做其他事情吗?
猜你喜欢
  • 2018-03-28
  • 2021-11-20
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 2019-12-07
  • 2015-04-26
  • 2017-07-12
  • 2022-11-11
相关资源
最近更新 更多