次の例では、<xsl:copy-of select="">マッピング定義の使用方法を示します。<xsl:copy-of select="">マッピング定義では、列と要素の名前が一致します。
この例を実行する前に、必要な権限を持つテスト ユーザーが作成され、必要なテーブルが作成されていることを確認します。参照整合性ルールについては、XSLT_SHRED_BATCHとXSLT_SHREDの例の設定を参照してください。
XMLソース文書を格納するために使用するステージング テーブルにデータを挿入します。
DELETE Offer; DELETE Input_Docs; INSERT INTO input_docs VALUES(1, CREATEXML('<?xml version="1.0"?> <Root> <predictixOfferMessage> <Offer><offerid>1000001</offerid></Offer> <mediaBlock> <mediaBlockid>90000000010001</mediaBlockid> <parentofferid>1001</parentofferid> </mediaBlock> </predictixOfferMessage> <predictixOfferMessage> <Offer><offerid>1000002</offerid></Offer> <mediaBlock> <mediaBlockid>90000000010002</mediaBlockid> <parentofferid>1002</parentofferid> </mediaBlock> </predictixOfferMessage> </Root>'));
スタイルシート マッピングによってXSLT_SHRED_BATCHストアド プロシージャを呼び出し、ステージング入力テーブルに格納されるXMLデータをシュレッドします。次の引数を呼び出しに使用します。
- queryStringは、次のようになります: SEL id, xmldoc FROM xsltuser.Input_Docs.
- xsltMapping引数は、スタイルシートを入力とするCREATEXML関数を呼び出すことで指定します。このスタイルシートは、XML文書に適用されます。
- この例では、externalContextはNULLです。
- resultCodeは:res.で返されます。操作が成功すると0が返されます。
CALL TD_SYSXML.XSLT_SHRED_BATCH('SEL id, xmldoc FROM xsltuser.Input_Docs', createxml('<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/Root"> <Transaction> <Insert> <Table> <xsltuser.Offer> <xsl:for-each select="predictixOfferMessage"> <Row> <xsl:copy-of select="Offer/offerid"/> <xsl:copy-of select="mediaBlock/mediaBlockid"/> </Row> </xsl:for-each> </xsltuser.Offer> </Table> </Insert> </Transaction> </xsl:template> </xsl:stylesheet>'), NULL,:res);
結果: ターゲット テーブルで更新されたデータを表示するには次を実行します。SELECT offerid, mediaBlockid FROM Offer;
offerid mediaBlockid ---------- --------------------------------- 1000001 90000000010001 1000002 90000000010002