- ベストアンサー
拡張子が一意でないときの makeコマンドの使い方
- 自動化のためにMakefileを使用してXMLファイルを変換する方法について質問しています。
- 要約: 質問者は、msxslコマンドを使用してXMLファイルを変換するためのMakefileを作成しようとしています。しかし、特定のファイルのみを対象にすることができず、全てのファイルが変換されてしまいます。
- 要約: 質問者は、Makefileの記述方法を知りたいと思っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>できれば複数の変換パターンがある場合についても >おしえていただけませんでしょうか? 補足に書かれているように.xmlから.htmlへの変換パターンが複数ある場合ですよね? 元になるファイルのあるディレクトリや出力先ディレクトリが異なるなど区別できるものがあればできなくはないですが、 そうでないなら静的型ルールやサフィックスルールで行うのは無理です (あなただってXML1.xml,XML2.xml,XML3.xmlにはHTML.xslを使って、XML11.xml,XML12.xml,XML13.xmlにはHTML2.xslを使って変換するという事を知らなかったらできないですよね?)。 ですので、やるとするなら ・上にもあげているようにルール毎にファイルを置く場所を変えるなど区別できる何かを用意する ・静的型ルールなどを用いずに変換するルールを全て書く(ただしユーザー定義関数を用いることで簡略化することはできる) あたりになります。
その他の回答 (1)
- wormhole
- ベストアンサー率28% (1626/5665)
all: XML1.html XML2.html XML3.html matome.xml %.html: %.xml <tab>msxsl $< HTML.xsl -o $@ XML1.html: XML1.xml XML2.html: XML2.xml XML3.html: XML3.xml matome.xml: KetsugouXML.xml <tab>msxsl $< matome.xsl -o $@ でできませんか?(変数使うようにするのはご自分でどうぞ)
お礼
ありがとうございます。できました! できれば複数の変換パターンがある場合についても おしえていただけませんでしょうか?
補足
これに加え、別のスタイルシートで変換するグループXML11.xml、XML12.xml、XML13.xmlがある場合はどうすればよいでしょうか? msxsl XML11.xml HTML2.xsl -o XML11.html
お礼
早速のご回答、ありがとうございました。 そのままでは無理なのですね。 「ルールをすべて書く」方法(及びその簡略化)について 試してみることにします。