Sat, February 7, 2009
DocBook + FrameMakerによるドキュメント制作、作業環境の構築
DocBook,FrameMaker,XMLを使って作業をしていると、
XMLインスタンスからDTDを作成したり、XSLTで変換したり、
XMLを読みやすい形式でインデント付けたり・その逆(不要なスペースの削除)、
といったことを頻繁に行います。
これらをCygwin上で簡単に実行できるようにコマンド化します。
TOC
- XMLインスタンスからDTDを作成するためのコマンド trang の作成
- XSLTでXMLを変換するためのコマンド saxon の作成
- XMLにインデントを追加して読みやすくするコマンド pretty の作成
- XMLのスペースを削除するコマンド unpretty の作成
事前準備
$HOME/bin にパスを通しておく
.bashrc に以下の記述を追加
export PATH=$HOME/bin:$PATH
javaコマンドにパスを通しておく
JavaVMを通常の手順でインストールするとパスは通るので省略。
XMLインスタンスからDTDを作成するためのコマンド trang の作成
trang.jar を $HOME/bin/lib/tran.jar に配置した上で、以下のコマンドを $HOME/bin/trang に作成
#!/bin/bash
java -jar `cygpath -wp $HOME/bin/lib/trang.jar` $*
$ chmod 755 ~/bin/trang
例:trangを使ってXMLインスタンスからDTDを生成
$ trang -I xml -O dtd foo.xml foo.dtd
XSLTでXMLを変換(saxon)
sanxonのファイル一式を を $HOME/bin/lib/saxon/ に配置した上で、以下のコマンドを $HOME/bin/saxon に作成
#!/bin/bash
java -jar `cygpath -wp $HOME/bin/lib/saxon/saxon9.jar` $*
$ chmod 755 ~/bin/saxon
XMLにインデントを追加して読みやすくするコマンド pretty の作成
jdomを利用して、XMLインスタンスにのインデントを追加、 人間が読みやすい形式に変換します。
- jdom.jar を $HOME/bin/lib/jdom.jar に配置
- PrettyXML.java を $HOME/bin/lib/PretryXML.java に配置
- javac --classpath jdom.jar PrettyXML.java にて PrettyXML.class を生成
その上で、以下のコマンドを $HOME/bin/pretty に作成
#!/bin/bash
java -cp `cygpath -wp $HOME/bin/lib/jdom.jar:$HOME/bin/lib` PrettyXML $*
$ chmod 755 ~/bin/pretty
例
$ pretty foo.xml > foo-with-indent.xml
XMLのスペースを削除するコマンド unpretty の作成
prettyコマンドの逆の処理を行います。 インデントを削除および無駄なスペースの削除を行います。
- jdom.jar を $HOME/bin/lib/jdom.jar に配置
- UnPrettyXML.java を $HOME/bin/lib/UnPretryXML.java に配置
- javac --classpath jdom.jar UnPrettyXML.java にて UnPrettyXML.class を生成
その上で、以下のコマンドを $HOME/bin/unpretty に作成
#!/bin/bash
java -cp `cygpath -wp $HOME/bin/lib/jdom.jar:$HOME/bin/lib` UnPrettyXML $*
$ chmod 755 ~/bin/unpretty
例
$ unpretty foo.xml > foo-nospace.xml