IBM Content Manager, バージョン 8.5      サポート:  Oracle, DB2, Java

XML スキーマ・マッピング・ツールを使用した、 ユーザー定義スキーマのストレージ・スキーマへのマッピング

IBM® Content Manager は、ユーザー定義のスキーマを、 システムにインポートできるストレージ・スキーマに変換するために、 グラフィカル・インターフェースと API の両方を提供しています。

このツールでは、XSLT 照会スクリプトを生成することもできます。 このスクリプトは、マッピングの一部としてリポジトリーに保存できます。このスクリプトを使用すると、 XML 文書をユーザー定義のスキーマからストレージ・スキーマに自動変換するアプリケーションをプログラムすることができます。

XML スキーマ・マッピング・ツールは、 スキーマ・マッピングを開発する際の次のようなシナリオをサポートします。

まったく新しいストレージ・スキーマでスキーマ・マッピングを作成する
ユーザー定義のスキーマをまったく新しいストレージ・スキーマに変換したり、 ストレージ・スキーマとマッピングの両方を変更したりすることができます。 これにより、ストレージ・スキーマからの項目タイプの作成、マッピング名の割り当て、 マッピングのリポジトリーへの保存を行うことができます。
既存のストレージ・スキーマでスキーマ・マッピングを作成する
ユーザー定義のスキーマを以前に作成したストレージ・スキーマに手動でマップして、 ユーザー定義のスキーマをストレージ・スキーマに変換することができます。 その後、このツール機能を呼び出して、新しい XSLT 照会スクリプトを生成できます。さらに、 マッピング名の割り当て、およびマッピングのリポジトリーへの保存を行うことができます。
既存のスキーマ・マッピングを修正する
以前に作成したマッピングを (マッピング名を使用して) 再オープンし、 そのマッピングとストレージ・スキーマの両方を変更することができます。これにより、 変更したストレージ・スキーマ、ユーザー定義のスキーマ、および新規 XSLT 照会スクリプトを、 リポジトリーに再度保存できるようになります。
API を使用する場合の第 1 段階として、 DKSchemaConverter クラス内のメソッドを使用して XML スキーマを変換します。 このメソッドにより、以下のタスクが実行されます。
convert()
ユーザー定義のスキーマをストレージ・スキーマに変換し、 オプションで、そのマッピングを XSLT 照会スクリプトとしてリポジトリーに保存します。
getStorageSchema()
変換したストレージ・スキーマを検索します。
getXSLTQuery()
XML 文書をユーザー定義のスキーマからストレージ・スキーマに自動変換することのできる、 XSLT 照会スクリプトを検索します。
API を使用する第 2 段階として、 DKDocumentConverter クラス内のメソッドを使用して XML 文書を変換します。 このメソッドにより、以下のタスクが実行されます。
getSchemaMappingNames()
リポジトリーからスキーマ・マッピング名を検索します。
getXSLTQuery()
XML 文書をユーザー定義のスキーマからストレージ・スキーマに自動変換することのできる、 XSLT 照会スクリプトを検索します。
transformXMLDocument()
XSLT 照会スクリプトを使用して、 検索した XML 文書を変換します。
deleteSchemaMapping()
リポジトリーからスキーマ・マッピングを削除します。

z/OS における XML サービスのサポート

XML スキーマ・マッピング・ツール API は、もともと z/OS® ではサポートされていません。つまり、スキーマ変換のために、これらの API (DKSchemaConverterDKDocumentConverterDKMapperException の各クラス、または、com.ibm.mm.sdk.xml.schema.* の各クラスなど) を z/OS で実行することはできないということです。ただし、最初に z/OS 以外のプラットフォーム (例えば Windows) で XML スキーマ・マッピング・ツールを使用して変換を実行してから、生成した XSD ファイルまたは XML ファイルを z/OS 上の IBM Content Manager にインポートすることは可能です。インポートは次の 3 つの方法のいずれかで実行できます。

例: XML スキーマの変換

Java™
import com.ibm.mm.sdk.common.DKException;
import com.ibm.mm.sdk.cs.DKDatastoreICM;
import com.ibm.mm.sdk.xml.schema.DKDocumentConverter;
import com.ibm.mm.sdk.xml.schema.DKMapperException;
…
DKDatastoreICM cmDatastore = new DKDatastoreICM();
    cmDatastore.connect(cmDatabase, cmUser, cmPassword, "");
    System.out.println("Connected.");
    File inputSchema = new File ( inputUserSchema );
    DKSchemaConverter converter = new DKSchemaConverter
( cmDatastore );
    if (mapName == null) {
        if (converter.convert( inputSchema.toURL(),
 rootElementName)==false)
        {
            System.err.println("dkConvert returned null.");
        }
    } else {
        if (converter.convert( inputSchema.toURL(),
 rootElementName, 
  mapName ) == false)
        {
            System.err.println("dkConvert returned null.");
        }
    }

    System.out.println("STORAGE SCHEMA:");
    System.out.println( converter.getStorageSchema() );
    System.out.println("XSLT Scripts");
    String scripts[] = converter.getXSLTQuery();
    System.out.println( scripts[0] );
    System.out.println("---------------");
    System.out.println( scripts[1] );

例: XML 文書の変換

Java
import com.ibm.mm.sdk.common.DKException;
import com.ibm.mm.sdk.cs.DKDatastoreICM;
import com.ibm.mm.sdk.xml.schema.DKDocumentConverter;
import com.ibm.mm.sdk.xml.schema.DKMapperException;
…
DKDatastoreICM cmDatastore = new DKDatastoreICM();
    cmDatastore.connect(cmDatabase, cmUser, cmPassword, "");
    System.out.println("MAPPING NAMES:");
    Collection names=DKDocumentConverter.
getSchemaMappingNames(cmDatastore);
    System.out.println(names);
    if (mapName == null)
        return;
        String[] query=DKDocumentConverter.
getXSLTQuery(cmDatastore, mapName);
    System.out.println("XSLT Scripts for " + mapName);
    if (query == null)
        System.out.println("NONE.");
    else {
        for (int i = 0;  i < query.length;  i++) {
            if (i > 0)
                System.out.println("--------");
            System.out.println(query[i]);
        }
    }

    if (inputXMLDoc == null)
        return;
        File inputFile = new File( inputXMLDoc );
    File outputFile = new File( "APIoutput.xml");
        DKDocumentConverter.transformXMLDocument
( inputFile.toURL(), 
  query, outputFile );
    System.out.println("Output in APIoutput.xml");


フィードバック

最終更新: 2013 年 12 月
dcmxs012.htm

© Copyright IBM Corp. 2013.