これが入力ファイルです。
これらのブロックはすべて、表示されて<allocfile>
いないタグでラップされています。なぜでしょうか? そして、これらのブロックはすべて最上位の要素にラップされています<xml>
。
<XML>
<AllocFile>
<alc>1</alc>
<No>11/10</No>
<DT>20090401</DT>
<G_H>147</G_H>
<FUN>125487</FUN>
<oH>11</oH>
<y>9</y>
<AMOUNT>8000000</AMOUNT>
<Code>033195</Code>
<hd1>1234</hd1>
</AllocFile>
<AllocFile>
<alc>2</alc>
<No>14/10</No>
<DT>20090401</DT>
<G_H>147</G_H>
<FUN>125487</FUN>
<oH>11</oH>
<y>9</y>
<AMOUNT>8400000</AMOUNT>
<Code>033195</Code>
<hd1>1234</hd1>
</AllocFile>
<AllocFile>
<alc>3</alc>
<No>74/10</No>
<DT>20090401</DT>
<G_H>147</G_H>
<FUN>125487</FUN>
<oH>11</oH>
<y>9</y>
<AMOUNT>8740000</AMOUNT>
<Code>033195</Code>
<hd1>1234</hd1>
</AllocFile>
<AllocFile>
<alc>2</alc>
<No>74/10</No>
<DT>20090401</DT>
<G_H>117</G_H>
<FUN>125487</FUN>
<oH>19</oH>
<y>9</y>
<AMOUNT>74512</AMOUNT>
<Code>033118</Code>
<hd1>1234</hd1>
</AllocFile>
<AllocFile>
<alc>3</alc>
<No>14/10</No>
<DT>20090401</DT>
<G_H>117</G_H>
<FUN>125487</FUN>
<oH>19</oH>
<y>9</y>
<AMOUNT>986541</AMOUNT>
<Code>033147</Code>
<hd1>1234</hd1>
</AllocFile>
</XML>
出力は
<Header1>
<Hd1>1234</Hd1>
<CodeHeader>
<Code>033195</Code>
<Header2>
<G_H>147</G_H>
<FUN>125487</FUN>
<oH>11</oH>
<y>9</y>
<allocheader>
<alc>1</alc>
<No>11/10</No>
<DT>20090401</DT>
<AMOUNT>8000000</AMOUNT>
</allocheader>
<allocheader>
<alc>2</alc>
<No>14/10</No>
<DT>20090401</DT>
<AMOUNT>8400000</AMOUNT>
</allocheader>
<allocheader>
<alc>3</alc>
<No>74/10</No>
<DT>20090401</DT>
<AMOUNT>8740000</AMOUNT>
</allocheader>
</Header2>
</CodeHeader>
<CodeHeader>
<Code>033118</Code>
<Header2>
<G_H>117</G_H>
<FUN>125487</FUN>
<oH>19</oH>
<y>9</y>
<allocheader>
<alc>2</alc>
<No>74/10</No>
<DT>20090401</DT>
<AMOUNT>74512</AMOUNT>
</allocheader>
</Header2>
</codeHeader>
<CodeHeader>
<Code>033147</Code>
<Header2>
<G_H>117</G_H>
<FUN>125487</FUN>
<oH>19</oH>
<y>9</y>
<allocheader>
<alc>3</alc>
<No>14/10</No>
<DT>20090401</DT>
<AMOUNT>986541</AMOUNT>
</allocheader>
</Header2>
</CodeHeader>
</Header1>
入力ファイルは、複数のキーに基づいてソートおよびグループ化する必要があります。関数と Muenchian メソッドを使用して進めましconcat
たが、Web からはあまり役に立ちませんでした。XSLT 1.0 を使用しています。
グループ分けのルール
ファイル内のすべてのノードには
<hd1>
値があり1234..
、これがキーによる最初のグループになり、出力に次のように表示されます。<Header1>
- グループ化の 2 番目のキーはノード コードです。同じ値を持つノードがグループ化されます。として表示されます。コード ヘッダー
2 番目のキーは、ノード
G_H
、FUN
、oH
、のグループですy
。これらすべてのノードの値が同じである場合、それらはグループ化されます。出力に次のように表示されます<Header2>
ノード
<alc>
、<No>
、 、<DT>
ではグループ化は行われません<AMOUNT>
。それらは、各グループ内で異なる値を持っています。