IBM® Content Manager は、ユーザー定義のスキーマを、 システムにインポートできるストレージ・スキーマに変換するために、 グラフィカル・インターフェースと API の両方を提供しています。
このツールでは、XSLT 照会スクリプトを生成することもできます。 このスクリプトは、マッピングの一部としてリポジトリーに保存できます。このスクリプトを使用すると、 XML 文書をユーザー定義のスキーマからストレージ・スキーマに自動変換するアプリケーションをプログラムすることができます。
XML スキーマ・マッピング・ツールは、 スキーマ・マッピングを開発する際の次のようなシナリオをサポートします。
XML スキーマ・マッピング・ツール API は、もともと z/OS® ではサポートされていません。つまり、スキーマ変換のために、これらの API (DKSchemaConverter、DKDocumentConverter、DKMapperException の各クラス、または、com.ibm.mm.sdk.xml.schema.* の各クラスなど) を z/OS で実行することはできないということです。ただし、最初に z/OS 以外のプラットフォーム (例えば Windows) で XML スキーマ・マッピング・ツールを使用して変換を実行してから、生成した XSD ファイルまたは XML ファイルを z/OS 上の IBM Content Manager にインポートすることは可能です。インポートは次の 3 つの方法のいずれかで実行できます。
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] );
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");
