大きなXMLファイルをレコードカウンタに基づいて複数のファイルに分割する必要があります。XSLT 1.0を使用してXSLT 1.0をカウンタ値として使用するXMLファイルを分割する
特定のノード値は、ファイルごとに1回だけ使用できます。これらの値は、各ファイルにあるようにコピーする必要があります。 Likeヘッダー情報またはpurchaseOrder番号
私はxslt 1.0バージョンを使用する必要があります。私のミドルウェアシステムに2.0サポートパーサーがありません。 サンプルファイルは次のようになります。上記ファイルで
<?xml version="1.0" encoding="UTF-8"?>
<ns0:HeaderOffile xmlns:ns0="http://cdpa.com/xix/ALS">
\t <EPBody>
\t \t <EList>
\t \t \t <AgEvent>
\t \t \t \t <parentId>77777</parentId>
\t \t \t \t <childId>
\t \t \t \t \t <epic>400</epic>
\t \t \t \t \t <epic>401</epic>
\t \t \t \t </childId>
\t \t \t \t <extensions>
\t \t \t \t \t <SExtension>
\t \t \t \t \t \t <epic>400</epic>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <PName>SERVICE</PName>
\t \t \t \t \t \t \t <PValue>03</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t </SExtension>
\t \t \t \t \t <OneTimeForFile>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <PName>ZFIELD1</PName>
\t \t \t \t \t \t \t <PValue>ROYAL</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <ParameterName>ZFIELD2</ParameterName>
\t \t \t \t \t \t \t <PValue>GOLD</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t </OneTimeForFile>
\t \t \t \t </extensions>
\t \t \t </AgEvent>
\t \t \t <AgEvent>
\t \t \t \t <parentId>88888</parentId>
\t \t \t \t <childId>
\t \t \t \t \t <epic>300</epic>
\t \t \t \t \t <epic>301</epic>
\t \t \t \t </childId>
\t \t \t \t <extensions>
\t \t \t \t \t <SExtension>
\t \t \t \t \t \t <epic>300</epic>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <PName>SERVICE</PName>
\t \t \t \t \t \t \t <PValue>03</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t </SExtension>
\t \t \t \t </extensions>
\t \t \t </AgEvent>
\t \t \t <AgEvent>
\t \t \t \t <parentId>99999</parentId>
\t \t \t \t <childId>
\t \t \t \t \t <epic>200</epic>
\t \t \t \t \t <epic>201</epic>
\t \t \t \t </childId>
\t \t \t \t <extensions>
\t \t \t \t \t <SExtension>
\t \t \t \t \t \t <epic>200</epic>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <PName>SERVICE</PName>
\t \t \t \t \t \t \t <PValue>03</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t </SExtension>
\t \t \t \t </extensions>
\t \t \t </AgEvent>
\t \t </EList>
\t </EPBody>
</ns0:HeaderOffile>
Iは、それぞれ100個のAGEventノードについては、例えば、Iが設定されたカウントのAGEventノードでファイルを分割する必要があります。ファイルに560のAGEventノードがある場合、5つのファイルにそれぞれ100個のファイルが6つあり、最後の6番目のファイルには60個のAGEventノードがあります。
OneTimeForFileノードは、入力ファイルで1回だけ使用できるため、ファイルごとに1回目のAGEventノードに1回コピーする必要があります。
完全なXSLTスクリプトを作成して私に質問をさせてください。 ウェブを検索して問題の解決策を見つけました。
私はpost hereで試しました!達成されていません。 あなたの貴重な時間を高く評価します。 ありがとうございます。
XSLT 1.0では、入力を複数の出力ファイルに分割する手段がありません。あなたのプロセッサがそれをサポートしているなら、EXSLTの 'exsl:document'拡張命令を使うことができます。それ以外の場合は、パラメータを100ずつ増やすたびに複数の変換を実行するように、呼び出し側アプリケーションに指示する必要があります。呼び出し側アプリケーションに 'AGEvent'ノードの総数を渡す方法を見つける必要があります。 - P.S.あなたがリンクしている質問には何の関係もありません。 –
それを調べてくれてありがとう。私はそれを解決した。 – Nag