輸入xml包含不同裝運的多個重複記錄。 記錄1,2和3屬於一次裝運,記錄1,2和3屬於另一批貨物。 輸出應該像輸出xml。每批貨物都被轉換爲Root-Element
。根據起始元素對兄弟組進行分組
輸入:
<?xml version = '1.0' encoding = 'UTF-8'?>
<Root-Element>
<RECORD1>
<C2>500000000222725718846C </C2>
<C3>3014 </C3>
<C4> DELVRY02 </C4>
</RECORD1>
<RECORD2>
<C2> 50000000022272571880</C2>
<C3>000010000000200</C3>
<C4>9659666341109001 </C4>
</RECORD2>
<RECORD3>
<C2> 50000000022272</C2>
<C3>5718800000</C3>
<C4>200000103002</C4>
</RECORD3>
<RECORD1>
<C2>5000000002227ABCD </C2>
<C3>3014 </C3>
<C4> DELVRY02 </C4>
</RECORD1>
<RECORD2>
<C2> 50000000022272571880</C2>
<C3>000010000000200</C3>
<C4>9659666341109001 </C4>
</RECORD2>
<RECORD3>
<C2> 50000000022272</C2>
<C3>5718800000</C3>
<C4>200000103002</C4>
</RECORD3>
</Root-Element>
輸出:
<?xml version="1.0"?>
<Root-Element>
<shipment>
<RECORD1>
<C2>500000000222725718846C </C2>
<C3>3014 </C3>
<C4> DELVRY02 </C4>
</RECORD1>
<RECORD2>
<C2> 50000000022272571880</C2>
<C3>000010000000200</C3>
<C4>9659666341109001 </C4>
</RECORD2>
<RECORD3>
<C2> 50000000022272</C2>
<C3>5718800000</C3>
<C4>200000103002</C4>
</RECORD3>
</shipment>
<shipment>
<RECORD1>
<C2>5000000002227ABCD </C2>
<C3>3014 </C3>
<C4> DELVRY02 </C4>
</RECORD1>
<RECORD2>
<C2> 50000000022272571880</C2>
<C3>000010000000200</C3>
<C4>9659666341109001 </C4>
</RECORD2>
<RECORD3>
<C2> 50000000022272</C2>
<C3>5718800000</C3>
<C4>200000103002</C4>
</RECORD3>
</shipment>
</Root-Element>
我想這下面XSLT,但它給一個問題。
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="items" match="Root-Element/*"
use="generate-id(preceding-sibling::RECORD1[1])"/>
<xsl:template match="/Root-Element">
<Root-Element>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="RECORD1"/>
</Root-Element>
</xsl:template>
<xsl:template match="RECORD1">
<shipment>
<xsl:copy-of select="."/>
<xsl:copy-of select="key('items', generate-id())"/>
</shipment>
</xsl:template>
</xsl:stylesheet>
輸出與上面的XSLT越來越:
<?xml version="1.0"?>
<Root-Element>
<shipment>
<RECORD1>
<C2>500000000222725718846C </C2>
<C3>3014 </C3>
<C4> DELVRY02 </C4>
</RECORD1>
<RECORD2>
<C2> 50000000022272571880</C2>
<C3>000010000000200</C3>
<C4>9659666341109001 </C4>
</RECORD2>
<RECORD3>
<C2> 50000000022272</C2>
<C3>5718800000</C3>
<C4>200000103002</C4>
</RECORD3>
<RECORD1><!-- it should not come....This is the issue -->
<C2>5000000002227ABCD </C2>
<C3>3014 </C3>
<C4> DELVRY02 </C4>
</RECORD1>
</shipment>
<shipment>
<RECORD1>
<C2>5000000002227ABCD </C2>
<C3>3014 </C3>
<C4> DELVRY02 </C4>
</RECORD1>
<RECORD2>
<C2> 50000000022272571880</C2>
<C3>000010000000200</C3>
<C4>9659666341109001 </C4>
</RECORD2>
<RECORD3>
<C2> 50000000022272</C2>
<C3>5718800000</C3>
<C4>200000103002</C4>
</RECORD3>
</shipment>
</Root-Element>
我編輯了你的標題和你的一些文本,因爲它的公式化方式你的問題乍一看就像它問如何創建一些無效的XML。 (現在的2個關閉投票可能是由於這一點。) – Louis