DTD と EDD の作成
XML文書をFrameMakerで開いてフォーマットするには、DTDとEDDが必要です。 簡単なドキュメントをDocbookで記述してみるで作成した XML文書(secondlife.xml) を使ってDTD,EDD作成手順を示します。
XMLはDocbookで記述しているためそのDTDを使うことも可能ですが、 Docbookの膨大な要素を管理したくないので、 ここでは、現在処理しようとしているXML文書用のDTDを trang と FrameMakerを使って機械的に 作り出す方法を使います。
STEP1) secondlife.xml から my.xsd を生成(trangを使用)
trangを使うと、 XML文書からスキーマ(DTD,XSD,RNG等)を推測して作成してくれます。
詳しい手順はTragを使って、DTDを簡単に作成する をご覧ください。
trang は XML文書中(secondlife.xml)にDOCTYPE宣言があるとエラーになります。 trang に渡す前に、DOCTYPE宣言を削除しておきます。
ここでは、 ここでの説明では こちらのページで紹介したxml-normailzer を使用してDOCTYPE宣言を取り除きますが、 テキストエディタを使って手動で削除しても問題ありません。
$ cp secondlife.xml secondlife_removedoctype.xml
$ java -jar xml-normailzer --removedoctype secondlife_removedoctype.xml
$ java -jar trang.jar -I xml -O xsd secondlife_removedoctype.xml my.xsd
xsdはXMLSchemaのデフォルト拡張子です。 上記コマンドで、secondlife.xml から my.xsd(XMLSchema)を生成します。
trang はXMLSchemaだけでなくDTDにも対応しています。 したがってXMLSchemaではなくDTDを直接生成した方が話が早いのですが、 エラーになり、生成できない場合があります。(今回の場合のように) DTDが生成できない場合は、今回のようにXSDを生成して、XSDからDTDへの変換は FrameMakerで行います。
STEP2) my.xsd から my.dtd と my.eddを生成(FrameMakerを使用)
FrameMaker7.2 以降で、XMLSchema に対応しています。 以下の手順で生成します。
- FrameMakerを起動します。(製品インタフェースが "構造化 FrameMaker" に設定されている必要あり)
- メニューから【構造化ツール - スキーマを開く】を選択
- ファイル選択ダイアログで my.xsd を選択
- ファイル保存ダイアログで ファイル名 my.dtd として保存
- アプリケーションの選択ダイアログで アプリケーションなし を選択し、続けるボタンをクリック
- タイプの選択ダイアログで XML を選択
- 名称未設定ファイルとしてFrameMakerドキュメントが表示される
以上で、DTD(my.dtd( と EDD(edd.fm) が生成されました。
今回使用したファイルと完成したファイル
- 元になるXML文書
- 完成したファイル