XMLシュレッディングはストリーム形式で実行されます。この形式でXML文書は文字のストリームとして1パスで処理されます。この結果の1つとしては、状態が維持されないことが挙げられます。例えば、要素の値は、パーサーが次の要素に移動した時点で破棄されます。それでも、文書中の先行するサブツリーで出現した一部の値が文書全体にわたって使用される場合もあります。
ここで、1つの店舗の1日全体の販売に関する発注を表わすXML文書を考えます。
<purchaseorders> <meta> <store no="12345"/> <date>09/11/2011</date> <meta> <purchaseorder> <!-- content of the purchase order --> </purchaseorder> <purchaseorder> <!--content of the purchase order --> </purchaseorder> <!-- more purchaseorders --> </purchaseorders>
/purchaseorders/meta/date要素は文書内のすべての発注に該当する日付を特定します。この場合、シュレッディング プロセッサは文書処理全体を通じてこの要素を保持する必要があります。メモリの使用量を最小にするには、どの要素を保持する必要があるかをマッピングで示す必要があります。この目的で、以下のようにretainedElements命令を使用します。
<retainedElements> <element ref="_meta_item" path="purchaseorders/meta"/> <!-- more retained element can be appended --> </retainedElements>