XSLTを使用した場合にのみ解決できる問題があります。問題は、同じIDを持つ重複したXMLタグが必要ないことですが、複数のタグがあるシナリオでは、両方のタグの数量フィールドを合計する必要があります。これは、以下のXMLで簡単に示すことができます。
入力XML
<root>
<Line>
<Id>4</Id>
<sku>111111</sku>
<quantity>1</quantity>
</Line>
<Line>
<Id>4</Id>
<sku>111111</sku>
<quantity>2</quantity>
</Line>
<Line>
<Id>3</Id>
<sku>222222</sku>
<quantity>1</quantity>
</Line>
<Line>
<Id>3</Id>
<sku>222222</sku>
<quantity>1</quantity>
</Line>
</root>
必要な出力
<root>
<Line>
<Id>4</Id>
<sku>111111</sku>
<quantity>3</quantity>
</Line>
<Line>
<Id>3</Id>
<sku>222222</sku>
<quantity>2</quantity>
</Line>
</root>
XSLT
XSLTを開始しました
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/root">
<root>
<xsl:apply-templates select="orderLine"/>
</root>
</xsl:template>
<xsl:template match="/root/oderLine">
<xsl:if test="not(sku = preceding-sibling::orderLine/sku)"> </xsl:if>
</xsl:template>
</xsl:stylesheet>
IDとSKUの両方を比較する
例
入力
<root>
<Line>
<Id>4</Id>
<sku>111111</sku>
<quantity>1</quantity>
</Line>
<Line>
<Id>4</Id>
<sku>111222</sku>
<quantity>2</quantity>
</Line>
<Line>
<Id>3</Id>
<sku>222222</sku>
<quantity>1</quantity>
</Line>
<Line>
<Id>3</Id>
<sku>222222</sku>
<quantity>1</quantity>a
</Line>
</root>
必要な出力
<root>
<Line>
<Id>4</Id>
<sku>111111</sku>
<quantity>1</quantity>
</Line>
<Line>
<Id>4</Id>
<sku>111222</sku>
<quantity>2</quantity>
</Line>
<Line>
<Id>3</Id>
<sku>222222</sku>
<quantity>2</quantity>
</Line>
</root>
実際の出力
<root>
<Line>
<Id>4</Id>
<sku>111111</sku>
<quantity>3</quantity>
</Line>
<Line>
<Id>3</Id>
<sku>222222</sku>
<quantity>2</quantity>
</Line>
</root>
ご覧のとおり、IDのみが一致しており、SKUも一致していません。