2017-01-02 51 views
-1

我輸入添加總量並把它添加到一個新的標籤

<Invoice> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>1</Consolidated_Invoice_ID> 
    <Line>1</Line> 
    <Gross_Invoice_Amount>1110</Gross_Invoice_Amount> 
    </Invoice_Details> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>1</Consolidated_Invoice_ID> 
    <Line>2</Line> 
    <Gross_Invoice_Amount>1110</Gross_Invoice_Amount> 
    </Invoice_Details> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>2</Consolidated_Invoice_ID> 
    <Line>1</Line> 
    <Gross_Invoice_Amount>2220</Gross_Invoice_Amount> 
    </Invoice_Details> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>2</Consolidated_Invoice_ID> 
    <Line>2</Line> 
    <Gross_Invoice_Amount>2220</Gross_Invoice_Amount> 
    </Invoice_Details> 
    </Invoice> 

我想要的格式的輸出中:

<Invoice> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>1</Consolidated_Invoice_ID> 
    <Line>1</Line> 
    <Gross_Invoice_Amount>1110</Gross_Invoice_Amount> 
    </Invoice_Details> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>1</Consolidated_Invoice_ID> 
    <Line>2</Line> 
    <Gross_Invoice_Amount>1110</Gross_Invoice_Amount> 
    </Invoice_Details> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>1</Consolidated_Invoice_ID> 
    <Line>3</Line> 
    <Gross_Invoice_Amount>22220</Gross_Invoice_Amount> 
    </Invoice_Details> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>2</Consolidated_Invoice_ID> 
    <Line>1</Line> 
    <Gross_Invoice_Amount>2220</Gross_Invoice_Amount> 
    </Invoice_Details> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>2</Consolidated_Invoice_ID> 
    <Line>2</Line> 
    <Gross_Invoice_Amount>2220</Gross_Invoice_Amount> 
    </Invoice_Details> 
    <Invoice_Details> 
    <Consolidated_Invoice_ID>2</Consolidated_Invoice_ID> 
    <Line>3</Line> 
    <Gross_Invoice_Amount>4440</Gross_Invoice_Amount> 
    </Invoice_Details> 
    </Invoice> 

發票ID的值和行值將被創建爲添加所有相同ID的總數的新元素。

條件: 只有在任何可用的id中至少有一個毛重值時,才需要毛值。如果沒有毛值可用,則不需要。

+0

請加任何XSLT的1.0標籤或XSLT的2.0並詳細說明您正在使用的XSLT版本。 – Madeyedexter

+0

Soa接受這兩個版本..感謝 –

回答

0

這裏是一個XSLT 1.0解決方案:

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" /> 

<xsl:key name="invoices" match="Invoice/Invoice_Details" use="Consolidated_Invoice_ID"/> 
    <xsl:template match="/"> 
     <Invoice> 
     <xsl:for-each select="Invoice/Invoice_Details[count(.|key('invoices',Consolidated_Invoice_ID)[1])=1]"> 
      <xsl:variable name="details" select="key('invoices',Consolidated_Invoice_ID)"/> 
      <xsl:copy-of select="$details"/> 
      <!--Add a new record with gross amount and total--> 
      <Consolidated_Invoice_ID> 
      <xsl:value-of select="Consolidated_Invoice_ID"/> 
      </Consolidated_Invoice_ID> 
      <Line> 
      <xsl:value-of select="count($details)+1"/> 
      </Line> 
      <Gross_Invoice_Amount> 
      <xsl:value-of select="sum($details/Gross_Invoice_Amount)"/> 
      </Gross_Invoice_Amount> 
     </xsl:for-each> 
     </Invoice> 
    </xsl:template> 
</xsl:transform> 
+0

這是一個工作轉換:http://xsltransform.net/jz1PuPw – Madeyedexter