Мой сценарий - xml-idoc, где в idoc у меня есть E1EDP01-POSEX, который повторяется со значением 000001. Я узнаю, как удалить повторяющийся узел, но перед этим мне нужно добавить значения в E1EDP01-MENGE (exposex = 000001 и menge = 2500, Posex = 000001 и menge3000), поэтому я хочу, чтобы Posex = 000001 и menge = 5500.

Как я использовал этот код

<xsl:template match="E1EDP01[not(generate-id() = generate-id(key('kPOSEX', POSEX)[000001]))]"/>

Принимает только значение первого узла. Ниже приведен тот же код

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Invoice>
  <InvoiceDetail>
    <ListOfInvoiceItemDetail>
      <InvoiceItemDetail>
        <InvoiceBaseItemDetail>
          <LineItemNum>
            <BuyerLineItemNum>000002</BuyerLineItemNum>
            <SellerLineItemNum>000001</SellerLineItemNum>
          </LineItemNum>
          <LineItemType>
            <LineItemTypeCoded>Item</LineItemTypeCoded>
          </LineItemType>
          <ItemIdentifiers>
            <PartNumbers>
              <SellerPartNumber>
                <PartNum>
                  <PartID>100356381</PartID>
                </PartNum>
              </SellerPartNumber>
              <BuyerPartNumber>
                <PartNum>
                  <PartID>517801</PartID>
                </PartNum>
              </BuyerPartNumber>
            </PartNumbers>
          </ItemIdentifiers>
          <TotalQuantity>
            <Quantity>
              <QuantityValue>40320.0</QuantityValue>
              <UnitOfMeasurement>
                <UOMCoded>EA</UOMCoded>
              </UnitOfMeasurement>
            </Quantity>
          </TotalQuantity>
          <LineItemReferences>
            <InvoiceReferences>
              <PurchaseOrderReference>
                <PurchaseOrderNumber>
                  <Reference>
                    <RefNum>0045486186</RefNum>
                  </Reference>
                </PurchaseOrderNumber>
                <PurchaseOrderDate>20110825T040000.000Z</PurchaseOrderDate>
                <PurchaseOrderLineItemNumber>000002</PurchaseOrderLineItemNumber>
              </PurchaseOrderReference>
              <ASNNumber>
                <Reference>
                  <RefNum>0805548867</RefNum>
                </Reference>
              </ASNNumber>
              <OtherInvoiceReferences>
                <ListOfReferenceCoded>
                  <ReferenceCoded>
                    <ReferenceTypeCoded>Other</ReferenceTypeCoded>
                    <ReferenceTypeCodedOther>SalesOrderNumber</ReferenceTypeCodedOther>
                    <PrimaryReference>
                      <Reference>
                        <RefNum>0006543680</RefNum>
                      </Reference>
                    </PrimaryReference>
                    <SupportingReference>
                      <Reference>
                        <RefNum>000002</RefNum>
                      </Reference>
                    </SupportingReference>
                  </ReferenceCoded>
                </ListOfReferenceCoded>
              </OtherInvoiceReferences>
            </InvoiceReferences>
          </LineItemReferences>
        </InvoiceBaseItemDetail>
        <InvoicePricingDetail>
          <ListOfPrice>
            <Price>
              <UnitPrice>
                <UnitPriceValue>115.11</UnitPriceValue>
              </UnitPrice>
            </Price>
          </ListOfPrice>
          <Tax>
            <TaxFunctionQualifierCoded>Tax</TaxFunctionQualifierCoded>
            <TaxCategoryCoded>StandardRate</TaxCategoryCoded>
            <TaxTypeCoded>Other</TaxTypeCoded>
            <TaxTypeCodedOther>
              <Identifier>
                <Agency>
                  <AgencyCoded>Other</AgencyCoded>
                  <AgencyCodedOther>Not Specified</AgencyCodedOther>
                </Agency>
                <Ident>National Tax</Ident>
              </Identifier>
            </TaxTypeCodedOther>
            <TaxPercent>10.000</TaxPercent>
            <TaxAmount>464.12</TaxAmount>
          </Tax>
          <InvoiceCurrencyTotalValue>
            <MonetaryValue>
              <MonetaryAmount>4641.24</MonetaryAmount>
            </MonetaryValue>
          </InvoiceCurrencyTotalValue>
        </InvoicePricingDetail>
      </InvoiceItemDetail>
      <InvoiceItemDetail>
        <InvoiceBaseItemDetail>
          <LineItemNum>
            <BuyerLineItemNum>000001</BuyerLineItemNum>
            <SellerLineItemNum>000002</SellerLineItemNum>
          </LineItemNum>
          <LineItemType>
            <LineItemTypeCoded>Item</LineItemTypeCoded>
          </LineItemType>
          <ItemIdentifiers>
            <PartNumbers>
              <SellerPartNumber>
                <PartNum>
                  <PartID>100351756</PartID>
                </PartNum>
              </SellerPartNumber>
              <BuyerPartNumber>
                <PartNum>
                  <PartID>462088</PartID>
                </PartNum>
              </BuyerPartNumber>
            </PartNumbers>
          </ItemIdentifiers>
          <TotalQuantity>
            <Quantity>
              <QuantityValue>37632.0</QuantityValue>
              <UnitOfMeasurement>
                <UOMCoded>EA</UOMCoded>
              </UnitOfMeasurement>
            </Quantity>
          </TotalQuantity>
          <LineItemReferences>
            <InvoiceReferences>
              <PurchaseOrderReference>
                <PurchaseOrderNumber>
                  <Reference>
                    <RefNum>0045486186</RefNum>
                  </Reference>
                </PurchaseOrderNumber>
                <PurchaseOrderDate>20110825T040000.000Z</PurchaseOrderDate>
                <PurchaseOrderLineItemNumber>000001</PurchaseOrderLineItemNumber>
              </PurchaseOrderReference>
              <ASNNumber>
                <Reference>
                  <RefNum>0805548867</RefNum>
                </Reference>
              </ASNNumber>
              <OtherInvoiceReferences>
                <ListOfReferenceCoded>
                  <ReferenceCoded>
                    <ReferenceTypeCoded/>
                    <PrimaryReference>
                      <Reference>
                        <RefNum>0006543680</RefNum>
                      </Reference>
                    </PrimaryReference>
                    <SupportingReference>
                      <Reference>
                        <RefNum>000003</RefNum>
                      </Reference>
                    </SupportingReference>
                  </ReferenceCoded>
                </ListOfReferenceCoded>
              </OtherInvoiceReferences>
            </InvoiceReferences>
          </LineItemReferences>
        </InvoiceBaseItemDetail>
        <InvoicePricingDetail>
          <ListOfPrice>
            <Price>
              <UnitPrice>
                <UnitPriceValue>119.79</UnitPriceValue>
              </UnitPrice>
            </Price>
          </ListOfPrice>
          <Tax>
            <TaxFunctionQualifierCoded>Tax</TaxFunctionQualifierCoded>
            <TaxCategoryCoded>StandardRate</TaxCategoryCoded>
            <TaxTypeCoded>Other</TaxTypeCoded>
            <TaxTypeCodedOther>
              <Identifier>
                <Agency>
                  <AgencyCoded>Other</AgencyCoded>
                  <AgencyCodedOther>Not Specified</AgencyCodedOther>
                </Agency>
                <Ident>National Tax</Ident>
              </Identifier>
            </TaxTypeCodedOther>
            <TaxPercent>10.000</TaxPercent>
            <TaxAmount>450.79</TaxAmount>
          </Tax>
          <InvoiceCurrencyTotalValue>
            <MonetaryValue>
              <MonetaryAmount>4507.94</MonetaryAmount>
            </MonetaryValue>
          </InvoiceCurrencyTotalValue>
        </InvoicePricingDetail>
      </InvoiceItemDetail>
      <InvoiceItemDetail>
        <InvoiceBaseItemDetail>
          <LineItemNum>
            <BuyerLineItemNum>000003</BuyerLineItemNum>
            <SellerLineItemNum>000003</SellerLineItemNum>
          </LineItemNum>
          <LineItemType>
            <LineItemTypeCoded>Item</LineItemTypeCoded>
          </LineItemType>
          <ItemIdentifiers>
            <PartNumbers>
              <SellerPartNumber>
                <PartNum>
                  <PartID>100356381</PartID>
                </PartNum>
              </SellerPartNumber>
              <BuyerPartNumber>
                <PartNum>
                  <PartID>517801</PartID>
                </PartNum>
              </BuyerPartNumber>
            </PartNumbers>
          </ItemIdentifiers>
          <TotalQuantity>
            <Quantity>
              <QuantityValue>60480.0</QuantityValue>
              <UnitOfMeasurement>
                <UOMCoded>EA</UOMCoded>
              </UnitOfMeasurement>
            </Quantity>
          </TotalQuantity>
          <LineItemReferences>
            <InvoiceReferences>
              <PurchaseOrderReference>
                <PurchaseOrderNumber>
                  <Reference>
                    <RefNum>0045486186</RefNum>
                  </Reference>
                </PurchaseOrderNumber>
                <PurchaseOrderDate>20110825T040000.000Z</PurchaseOrderDate>
                <PurchaseOrderLineItemNumber>000003</PurchaseOrderLineItemNumber>
              </PurchaseOrderReference>
              <ASNNumber>
                <Reference>
                  <RefNum>0805548867</RefNum>
                </Reference>
              </ASNNumber>
              <OtherInvoiceReferences>
                <ListOfReferenceCoded>
                  <ReferenceCoded>
                    <ReferenceTypeCoded/>
                    <PrimaryReference>
                      <Reference>
                        <RefNum>0006543680</RefNum>
                      </Reference>
                    </PrimaryReference>
                    <SupportingReference>
                      <Reference>
                        <RefNum>000004</RefNum>
                      </Reference>
                    </SupportingReference>
                  </ReferenceCoded>
                </ListOfReferenceCoded>
              </OtherInvoiceReferences>
            </InvoiceReferences>
          </LineItemReferences>
        </InvoiceBaseItemDetail>
        <InvoicePricingDetail>
          <ListOfPrice>
            <Price>
              <UnitPrice>
                <UnitPriceValue>115.11</UnitPriceValue>
              </UnitPrice>
            </Price>
          </ListOfPrice>
          <Tax>
            <TaxFunctionQualifierCoded>Tax</TaxFunctionQualifierCoded>
            <TaxCategoryCoded>StandardRate</TaxCategoryCoded>
            <TaxTypeCoded>Other</TaxTypeCoded>
            <TaxTypeCodedOther>
              <Identifier>
                <Agency>
                  <AgencyCoded>Other</AgencyCoded>
                  <AgencyCodedOther>Not Specified</AgencyCodedOther>
                </Agency>
                <Ident>National Tax</Ident>
              </Identifier>
            </TaxTypeCodedOther>
            <TaxPercent>10.000</TaxPercent>
            <TaxAmount>696.19</TaxAmount>
          </Tax>
          <InvoiceCurrencyTotalValue>
            <MonetaryValue>
              <MonetaryAmount>6961.85</MonetaryAmount>
            </MonetaryValue>
          </InvoiceCurrencyTotalValue>
        </InvoicePricingDetail>
      </InvoiceItemDetail>
      <InvoiceItemDetail>
        <InvoiceBaseItemDetail>
          <LineItemNum>
            <BuyerLineItemNum>000001</BuyerLineItemNum>
            <SellerLineItemNum>000004</SellerLineItemNum>
          </LineItemNum>
          <LineItemType>
            <LineItemTypeCoded>Item</LineItemTypeCoded>
          </LineItemType>
          <ItemIdentifiers>
            <PartNumbers>
              <SellerPartNumber>
                <PartNum>
                  <PartID>100351756</PartID>
                </PartNum>
              </SellerPartNumber>
              <BuyerPartNumber>
                <PartNum>
                  <PartID>462088</PartID>
                </PartNum>
              </BuyerPartNumber>
            </PartNumbers>
          </ItemIdentifiers>
          <TotalQuantity>
            <Quantity>
              <QuantityValue>56448.0</QuantityValue>
              <UnitOfMeasurement>
                <UOMCoded>EA</UOMCoded>
              </UnitOfMeasurement>
            </Quantity>
          </TotalQuantity>
          <LineItemReferences>
            <InvoiceReferences>
              <PurchaseOrderReference>
                <PurchaseOrderNumber>
                  <Reference>
                    <RefNum>0045486186</RefNum>
                  </Reference>
                </PurchaseOrderNumber>
                <PurchaseOrderDate>20110825T040000.000Z</PurchaseOrderDate>
                <PurchaseOrderLineItemNumber>000001</PurchaseOrderLineItemNumber>
              </PurchaseOrderReference>
              <ASNNumber>
                <Reference>
                  <RefNum>0805548867</RefNum>
                </Reference>
              </ASNNumber>
              <OtherInvoiceReferences>
                <ListOfReferenceCoded>
                  <ReferenceCoded>
                    <ReferenceTypeCoded/>
                    <PrimaryReference>
                      <Reference>
                        <RefNum>0006543680</RefNum>
                      </Reference>
                    </PrimaryReference>
                    <SupportingReference>
                      <Reference>
                        <RefNum>000005</RefNum>
                      </Reference>
                    </SupportingReference>
                  </ReferenceCoded>
                </ListOfReferenceCoded>
              </OtherInvoiceReferences>
            </InvoiceReferences>
          </LineItemReferences>
        </InvoiceBaseItemDetail>
        <InvoicePricingDetail>
          <ListOfPrice>
            <Price>
              <UnitPrice>
                <UnitPriceValue>119.79</UnitPriceValue>
              </UnitPrice>
            </Price>
          </ListOfPrice>
          <Tax>
            <TaxFunctionQualifierCoded>Tax</TaxFunctionQualifierCoded>
            <TaxCategoryCoded>StandardRate</TaxCategoryCoded>
            <TaxTypeCoded>Other</TaxTypeCoded>
            <TaxTypeCodedOther>
              <Identifier>
                <Agency>
                  <AgencyCoded>Other</AgencyCoded>
                  <AgencyCodedOther>Not Specified</AgencyCodedOther>
                </Agency>
                <Ident>National Tax</Ident>
              </Identifier>
            </TaxTypeCodedOther>
            <TaxPercent>10.000</TaxPercent>
            <TaxAmount>676.19</TaxAmount>
          </Tax>
          <InvoiceCurrencyTotalValue>
            <MonetaryValue>
              <MonetaryAmount>6761.91</MonetaryAmount>
            </MonetaryValue>
          </InvoiceCurrencyTotalValue>
        </InvoicePricingDetail>
      </InvoiceItemDetail>
    </ListOfInvoiceItemDetail>
  </InvoiceDetail>
  <InvoiceSummary>
    <NumberOfLines>4.0</NumberOfLines>
    <InvoiceTotals>
      <NetValue>
        <MonetaryValue>
          <MonetaryAmount>22872.94</MonetaryAmount>
        </MonetaryValue>
      </NetValue>
      <GrossValue>
        <MonetaryValue>
          <MonetaryAmount>25160.23</MonetaryAmount>
        </MonetaryValue>
      </GrossValue>
      <TaxValue>
        <MonetaryValue>
          <MonetaryAmount>2287.29</MonetaryAmount>
        </MonetaryValue>
      </TaxValue>
      <TotalAmountPayable>
        <MonetaryValue>
          <MonetaryAmount>25160.23</MonetaryAmount>
        </MonetaryValue>
      </TotalAmountPayable>
    </InvoiceTotals>
    <ListOfTaxSummary>
      <TaxSummary>
        <Tax>
          <TaxFunctionQualifierCoded>Tax</TaxFunctionQualifierCoded>
          <TaxCategoryCoded>StandardRate</TaxCategoryCoded>
          <TaxTypeCoded>Other</TaxTypeCoded>
          <TaxTypeCodedOther>
            <Identifier>
              <Agency>
                <AgencyCoded>Other</AgencyCoded>
                <AgencyCodedOther>Not specified</AgencyCodedOther>
              </Agency>
              <Ident>NationalTax</Ident>
            </Identifier>
          </TaxTypeCodedOther>
          <TaxPercent>10.000</TaxPercent>
          <TaxAmount>2287.29</TaxAmount>
        </Tax>
      </TaxSummary>
    </ListOfTaxSummary>
  </InvoiceSummary>
</Invoice>

И выход

<?xml version="1.0" encoding="UTF-8"?>
<INVOIC01>
  <IDOC BEGIN="1">
    <EDI_DC40 SEGMENT="1">
       <E1EDP01 SEGMENT="1">
      <POSEX>000002</POSEX>
      <MENGE>40320.0</MENGE>
      <MENEE>EA</MENEE>
      <VPREI>115.11</VPREI>
        </E1EDP01>
    <E1EDP01 SEGMENT="1">
      <POSEX>000001</POSEX>
      <MENGE>37632.0</MENGE>
      <MENEE>EA</MENEE>
      <VPREI>119.79</VPREI>
      </E1EDP01>
    <E1EDP01 SEGMENT="1">
      <POSEX>000003</POSEX>
      <MENGE>60480.0</MENGE>
      <MENEE>EA</MENEE>
      <VPREI>115.11</VPREI>
                       </E1EDP01>
    <E1EDP01 SEGMENT="1">
      <POSEX>000001</POSEX>
      <MENGE>56448.0</MENGE>
      <MENEE>EA</MENEE>
    </E1EDP01>
                  </IDOC>
</INVOIC01>

Извините, если файл выглядит странно ... это первый раз, когда я отправляю выходной файл, вы можете увидеть E1EDP01 в этом POSEX и MENGE. Мне нужно удалить повторяющиеся значения в POSEX (EX это должно быть 000001 и должны быть добавлены значения MENGE)

Надеюсь, это имеет смысл.

2
SAP 29 Авг 2011 в 11:04

3 ответа

Лучший ответ

Это преобразование .

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:key name="kByP" match="E1EDP01" use="POSEX"/>

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

 <xsl:template match=
   "E1EDP01[generate-id()
           =
            generate-id(key('kByP', POSEX)[1])
           ]">
  <xsl:copy>
      <xsl:apply-templates select="node()|@*">
         <xsl:with-param name="pNewValue" select=
         "sum(key('kByP', POSEX)/MENGE)"/>
      </xsl:apply-templates>
  </xsl:copy>
 </xsl:template>
 <xsl:template match="E1EDP01"/>

 <xsl:template match="MENGE/text()">
  <xsl:param name="pNewValue"/>
  <xsl:value-of select="$pNewValue"/>
 </xsl:template>
</xsl:stylesheet>

при применении к предоставленному XML-документу (немного исправлено, чтобы сделать его правильно сформированным):

<INVOIC01>
    <IDOC BEGIN="1">
        <EDI_DC40 SEGMENT="1"/>
        <E1EDP01 SEGMENT="1">
            <POSEX>000002</POSEX>
            <MENGE>40320.0</MENGE>
            <MENEE>EA</MENEE>
            <VPREI>115.11</VPREI>
        </E1EDP01>
        <E1EDP01 SEGMENT="1">
            <POSEX>000001</POSEX>
            <MENGE>37632.0</MENGE>
            <MENEE>EA</MENEE>
            <VPREI>119.79</VPREI>
        </E1EDP01>
        <E1EDP01 SEGMENT="1">
            <POSEX>000003</POSEX>
            <MENGE>60480.0</MENGE>
            <MENEE>EA</MENEE>
            <VPREI>115.11</VPREI>
        </E1EDP01>
        <E1EDP01 SEGMENT="1">
            <POSEX>000001</POSEX>
            <MENGE>56448.0</MENGE>
            <MENEE>EA</MENEE>
        </E1EDP01>
    </IDOC>
</INVOIC01>

дает желаемый, правильный результат :

<INVOIC01>
   <IDOC BEGIN="1">
      <EDI_DC40 SEGMENT="1"/>
      <E1EDP01 SEGMENT="1">
         <POSEX>000002</POSEX>
         <MENGE>40320</MENGE>
         <MENEE>EA</MENEE>
         <VPREI>115.11</VPREI>
      </E1EDP01>
      <E1EDP01 SEGMENT="1">
         <POSEX>000001</POSEX>
         <MENGE>94080</MENGE>
         <MENEE>EA</MENEE>
         <VPREI>119.79</VPREI>
      </E1EDP01>
      <E1EDP01 SEGMENT="1">
         <POSEX>000003</POSEX>
         <MENGE>60480</MENGE>
         <MENEE>EA</MENEE>
         <VPREI>115.11</VPREI>
      </E1EDP01>
   </IDOC>
</INVOIC01>

Объяснение :

  1. Правило идентификации копирует каждый узел «как есть». Я добавил параметр с именем pNewValue, который используется только шаблоном, соответствующим любому дочернему текстовому узлу для MENGE - предоставить новое значение (сумму всех MENGE в группе) для вывода.

  2. Для группировки используется мюнхенский метод .

  3. В отличие от решения @empo нам не нужно знать названия дополнительных элементов и их порядок :)

1
Dimitre Novatchev 29 Авг 2011 в 13:54

Итак, вы хотите удалить дубликат POSEX из iDoc XML? Похоже, потому что вы используете

<xsl:template match="E1EDP01[not(generate-id() = generate-id(key('kPOSEX', POSEX)[000001]))]"/>

Я немного адаптировал это:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:key name="kPOSEX" match="E1EDP01" use="POSEX"/>

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

<xsl:template match="E1EDP01[not(generate-id() = generate-id(key('kPOSEX', POSEX)[1]))]">

</xsl:template>

</xsl:stylesheet>

И применив его к вашему примеру iDoc XML, я получаю следующий результат:

<?xml version="1.0" encoding="UTF-8"?><INVOIC01>
<IDOC BEGIN="1">
    <EDI_DC40 SEGMENT="1"/>
        <E1EDP01 SEGMENT="1">
            <POSEX>000002</POSEX>
            <MENGE>40320.0</MENGE>
            <MENEE>EA</MENEE>
            <VPREI>115.11</VPREI>
        </E1EDP01>
        <E1EDP01 SEGMENT="1">
            <POSEX>000001</POSEX>
            <MENGE>37632.0</MENGE>
            <MENEE>EA</MENEE>
            <VPREI>119.79</VPREI>
        </E1EDP01>
        <E1EDP01 SEGMENT="1">
            <POSEX>000003</POSEX>
            <MENGE>60480.0</MENGE>
            <MENEE>EA</MENEE>
            <VPREI>115.11</VPREI>
        </E1EDP01>
</IDOC>
</INVOIC01>

Дубликат (POSEX = 000001) удаляется. Вы этого хотели?

С уважением, Питер

0
Peter 29 Авг 2011 в 11:39

Мне нужно удалить повторяющиеся значения в POSEX (EX это должно быть 000001 и должны быть добавлены значения MENGE)

Вы хотите сгруппировать по POSEX и суммировать значения MENGE для каждой группы.

Следующее преобразование выполняет задачу:

  • Использование правила идентификации для упрощения генерации вывода
  • Использование метода Meunchian для группировки элементов по запросу
  • Использование ключа для вычисления требуемых сумм.

Я дополнительно отсортировал элементы по POSEX .

[XSLT 1.0]

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>
    <xsl:key name="kPOSEX" match="E1EDP01" use="POSEX"/>

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

    <xsl:template match="EDI_DC40">
        <xsl:copy>
            <xsl:apply-templates select="@*
                |
                E1EDP01[generate-id() 
                = generate-id(key('kPOSEX', POSEX)[1])]">
                <xsl:sort select="POSEX" data-type="number"/>
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="E1EDP01">
        <xsl:copy>
            <xsl:apply-templates select="@*|POSEX"/>
            <MENGE>
                <xsl:value-of select="sum(key('kPOSEX',POSEX)/MENGE)"/>
            </MENGE>
            <xsl:apply-templates select="MENEE|VPREI"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

С выходом:

<INVOIC01>
   <IDOC BEGIN="1">
      <EDI_DC40 SEGMENT="1">
         <E1EDP01 SEGMENT="1">
            <POSEX>000001</POSEX>
            <MENGE>94080</MENGE>
            <MENEE>EA</MENEE>
            <VPREI>119.79</VPREI>
         </E1EDP01>
         <E1EDP01 SEGMENT="1">
            <POSEX>000002</POSEX>
            <MENGE>40320</MENGE>
            <MENEE>EA</MENEE>
            <VPREI>115.11</VPREI>
         </E1EDP01>
         <E1EDP01 SEGMENT="1">
            <POSEX>000003</POSEX>
            <MENGE>60480</MENGE>
            <MENEE>EA</MENEE>
            <VPREI>115.11</VPREI>
         </E1EDP01>
      </EDI_DC40>
   </IDOC>
</INVOIC01>
0
Emiliano Poggi 29 Авг 2011 в 12:53