オプションの要約
以下はXmlTransformで使用可能なすべてのオプションの一覧です。後述の各ステップでは、これらのオプションを論理的に分類して詳しく説明します。さらに詳しく知りたい場合は、XmlTransform APIを参照してください。
contentsBaseName -- 目次ファイルのベース名(indexなど)
contentsToParent -- 目次を親ディレクトリと同じディレクトリの
どちらに置くかをブール値で指定
debug -- Trueの場合にすべて(ライブラリを含む)の
診断を有効にする
diagList -- アクティブにする診断を1文字の文字列で指定
dirList -- 処理対象のディレクトリをコンマで区切って指定
enable -- 処理を行う場合はTrue、
レポートのみの場合はFalse
generateContents -- 目次を生成するかどうかをブール値で指定
generatorNode -- ジェネレータ情報で置き換えるノードのタグ名
groupIdXpath -- 各ファイル内のグループIDノードを指す
簡単なXpath
groupPlaceHolder -- 目次ファイル内でファイルリストを挿入する
タグの名前
help -- この一覧を表示する
inExtension -- 処理対象のファイルの拡張子
inputSchemaSource -- 入力の検証用グローバルスキーマファイル
outExtension -- 変換後のファイルの拡張子
outputSchemaSource -- 出力の検証用グローバルスキーマファイル
processAll -- Trueの場合、日付スタンプをチェックせずに
処理する
sourcePath -- 変換元のXMLツリーのルート
startDepth -- ツリーの最上位から各自の相対ルートまでの
ディレクトリ数
targetPath -- 変換先のXMLツリーのルート
validateInputToSchema -- 入力の検証をブール値で指定
validateOutputToSchema -- 出力の検証をブール値で指定
validateXslBySchema -- 必要なXSLファイルの検証をブール値で指定
xslName -- 各ディレクトリのプライマリXSLファイル
xslParmList -- XSLパラメータをコンマで区切って指定
xslSchema -- XSLファイルのスキーマファイルの名前
xslTransform -- XSL変換をブール値で指定
XmlTransformで利用可能なオプションのうち、このアプリケーション固有でないものを以下に示します。CleanCode診断システムを使用するアプリケーションであれば、必ずこれらのオプションを使用できます。Diagnostic APIのすべてが説明されたドキュメントをこちらで参照できます。
.*_DIAG -- すべてのクラスの診断レベル CREATE_DIAG -- オブジェクト作成の診断レベル DIAG_LEVEL -- 診断マスク ENV_DIAG -- システム環境の診断レベル FORMATTER -- Webチャネルの書式設定のクラス名 LOG_DIAG_NAME -- 通常のメッセージのベースファイル名 LOG_DIR -- ログファイルの作成先ディレクトリ LOG_ERR_NAME -- 警告/エラーメッセージのベースファイル名 OUTPUT_DIAG -- 通常のメッセージの出力チャネル OUTPUT_ERR -- 警告/エラーメッセージの出力チャネル SHOW_THREAD -- スレッド情報の表示/非表示の切り替え TRACE_DIAG -- メソッド入/出の診断レベル TRACE_INDENT -- ネストされた出力のインデント文字列 VERSION_DIAG -- モジュールのバージョン管理の診断レベル WARNINGS_ON -- 警告メッセージの表示/非表示の切り替え
サンプルプロジェクトの完全なパラメータファイルをリスト2に示します。以降では、各オプションに値を正しく設定する方法についてさらに詳しく説明します。
ステップ1:何を?
XmlTransformでは多数のブール型オプションを使用して、各機能の有効と無効を切り替えます。
- xslTransformでは、指定されたXSLTを使用してファイルを検証するだけでなく、入力から出力へ変換を行うことを指定します。
- generateContentsでは、入力ツリー内に目次ファイルを生成することを指定します(前述の目次テンプレートファイルを使用)。
- validateInputToSchemaでは、XMLスキーマ定義を使用して入力を検証することを指定します。
- validateOutputToSchemaでは、XMLスキーマ定義を使用して出力を検証することを指定します。
- validateXslBySchemaは高度な目的に使用されるオプションで、XSLファイルそのものを検証することを指定します(xslTransformが有効になっていればどのエラーもすぐに見つかるのであまり使用されません)。
ステップ2:どこへ?
入力ファイルのツリーの場所(sourcePath)と出力ファイルのツリーの生成場所(targetPath)を指定します。指定しなければ、デフォルトでどちらも現在のディレクトリにセットされます。次に、入力ファイルの拡張子(inExtension)と出力ファイルの拡張子(outExtension)を指定します。デフォルトではinExtensionがxml、outExtensionがhtmlです。
ステップ3:何を使って?
各ファイルを変換するには、変換情報を定義したXSLファイルをxslNameに指定する必要があります。絶対パスで指定した場合、XmlTransformはすべてのサブディレクトリに対してそのファイルを使用しますが、ファイル名のみ(stuff.xslなど)を指定した場合は、処理対象のサブディレクトリ内でその名前のファイルを探します。ファイルが見つからなければルートディレクトリ(sourcePath)を探します。これを利用して、XSLファイルを柔軟に指定することができます。つまり、グローバルなXSL定義を1つ指定し、一方で特別な処理が必要なサブディレクトリでは定義を上書きすればよいのです。あるいは、ルートにXSLファイルを置かず、処理を行いたいサブディレクトリにだけXSLファイルを格納するという方法も便利です。
特定のサブディレクトリで目次を生成する場合は、XMLテンプレートファイルを指定する必要があります。これは他のファイルと同じく普通のXMLファイルですが、前にも説明したように、他のファイルを参照してリストを作成するためのプレースホルダが1つ以上記述されます。テンプレートファイルの名前は、「_myDir.xml」などのように、アンダースコア(_)、contentsBaseNameの値、ドット(.)、inExtensionの値を並べるというルールに従って作成しなければなりません。
XmlTransformはテンプレートにデータを挿入し、データが挿入されたファイルを中間ファイルとして入力ファイルツリーに格納します。この中間ファイルの名前は、目次ファイルを参照先ファイル群と同じディレクトリに格納するか、その親ディレクトリに格納するか(contentsToParent)によって変わります。同じディレクトリに格納する場合は、テンプレートと同じベース名(contentsBaseName)、ドット(.)、inExtensionの値を並べた名前になります(アンダースコアは付けません)。さらに、目次項目を目次テンプレートのどこに挿入するかを、グループプレースホルダ(groupPlaceHolder)で指定する必要があります。
中間ファイルは変換元のツリーに作成されるので、目次ファイルをうっかり上書きしないように注意する必要があります。しかし、それをXmlTransformでチェックすることはできません。なぜなら、前回の実行時に作成されたファイルと区別が付かないからです。そのため、生成される中間ファイルの指定のノードにジェネレータIDの文字列を書き込み、そのノードの存在を調べてファイルを上書きしてよいかを判断するようになっています。このジェネレータIDの文字列をXMLのどの要素で受け取るかはgeneratorNodeオプションに指定します。最後に、目次ファイルの生成ではgroupIdXpathオプションが必要です。ここには各ファイルのグループ識別子の検索に使用するXPath式を指定します。
