2016-04-07 4 views
-3

xmlに論理wrtの1つについて助けが必要です。私は以下のように出力を必要とする2つのxmlノードを同じパスでマージしてその合計を出力する

<Root> 
<Element> 
<ElementId>Fruits</ElementId> 
<ElementDes>Apple</ElementDes> 
<ElementValue>100</ElementValue> 
</Element> 
<Element> 
<ElementId>Fruits</ElementId> 
<ElementDes>Mango</ElementDes> 
<ElementValue>200</ElementValue> 
</Element> 
<ElementId>Vegetables</ElementId> 
<ElementDes>Potato</ElementDes> 
<ElementValue>300</ElementValue> 
</Element> 
<Element> 
<ElementId>Vegetables</ElementId> 
<ElementDes>Brinjal</ElementDes> 
<ElementValue>400</ElementValue> 
</Element> 
</Root> 

:(要素IDの同じ種類の合計):

<Root> 
<Element> 
<ElementId>Fruits</ElementId> 
<ElementDes>AppleMango</ElementDes> 
<ElementValue>300</ElementValue> 
</Element> 
<ElementId>Vegetables</ElementId> 
<ElementDes>PotatoBrinjal</ElementDes> 
<ElementValue>700</ElementValue> 
</Element> 
</Root> 

誰もがこれで私を助けてください、私は以下のような4つのノードがありますか?

+0

。例:https://docs.oracle.com/javase/tutorial/jaxp/stax/index.html – mrbela

+0

XSLT 2.0アプローチについては、https://www.w3.org/TR/xslt20/#grouping-examplesを参照してください。 XSLT 2.0とSaxon 9のJavaを併用することができます。 –

+0

タグは既にXSLT @mrbelaを使用しています:-) – Vampire

答えて

1

と仮定すると、あなたの入力データが有効なXMLになります(あなたの例ではない)、これは予想される結果を生成します:JavaでXMLを使用するためのフレームワークがたくさんあります

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

    <xsl:template match="Root"> 
     <xsl:copy> 
     <xsl:for-each-group select="Element" group-by="ElementId"> 
      <Element> 
       <xsl:apply-templates select="@* | ElementId"/> 
       <ElementDes><xsl:value-of select="current-group()/ElementDes" separator=""/></ElementDes> 
       <ElementValue><xsl:value-of select="sum(current-group()/ElementValue)"/></ElementValue> 
      </Element> 
     </xsl:for-each-group> 
     </xsl:copy> 
    </xsl:template> 

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

お返事ありがとうございます! :) –

関連する問題