- - PR -
xsl:include にて変数の使用は?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-10-28 09:34
斎藤と申します。こちらでの投稿は初めてとなります。
どうぞよろしくお願いします。 さて、現在 XML -> XSL-FO -> PDF で処理しています。 xml ファイルから xsl ファイルを適用し、その xsl ファイルから別の xsl ファ イルをインクルードしています。 インクルードする際の <xsl:include href=""/> に変数などは使用できないので しょうか? ------------------------------------------------------------------------- 【aaa.xml】xmlファイル <data> ・ ・ ・ <inc_file>xxx.xsl</inc_file> </data> 【bbb.xsl】xslファイル <?xml version="1.0" encoding="Shift_JIS" ?> <xsl:stylesheet version="1.0" ・ ・ ・ <xsl:include href="xxx.xsl"/> </xsl:stylesheet> 【xxx.xsl】インクルード対象の xsl ファイル <?xml version="1.0" encoding="Shift_JIS" ?> <xsl:stylesheet version="1.0" ・ ・ ・ </xsl:stylesheet> ------------------------------------------------------------------------- 上記で示す、「xxx.xsl」ファイルのインクルードを行う際に、例えば「aaa.xml」 に<inc_file>として指定したファイル名を「bbb.xsl」にて変数で取り出し、 include に適用すると言った具合です。 私のほうで試した限りでは、変数ではもちろんの事、 <xsl:include href="/data/inc_file"/> のような指定をしても無理な様子でし た。根本的に無理なのでしょうか。 どなたか、可否をご存知の方いらっしゃいましたら、教えてもらえますか。 よろしくお願いします。 斎藤 |
|
投稿日時: 2002-10-28 10:13
XSLT1.0の仕様ではできません。xsl:include はスタイルシートの
組み立てに使うもので実行時の展開に使うものでないから。 使えそうな書き方は、mode を付けて、apply時に切り替えるとか。 XSLT自身のプログラミング機能は SED,AWK,PERL の列とたとえると 弱AWKあたりです。 スタイルシートの動的ロードによる可変適用なら、 XSLTの外のプログラムで考えたほうがいいのではないでしょうか。 XMLパイプライン処理の環境も試せます。(締め切りがなければ) 展開実行時の可変読み取りには XSLT の組み込み関数の document を使います。2引数の時の説明は理解が難しいかも。 文章がわからない人には??と思います。 [ メッセージ編集済み 編集者: MMX 編集日時 2002-10-28 10:42 ] [ メッセージ編集済み 編集者: MMX 編集日時 2002-10-28 12:01 ] |
|
投稿日時: 2002-10-28 10:42
井上です。
PDF に変換する際に DOM を使ってコードを書いているのであれば、スタイルシートのファイル名情報を XML 文書から読み取って、その情報を使って読み込むスタイルシートのファイル名を使い分ける、というわけにはまいりませんか ? _________________ www.kojii.net |
|
投稿日時: 2002-10-28 11:53
MMXさん、井上孝司さん、素早い返答ありがとうございます。
そうでございますか・・・。 私の方で試してみた限りでは無理でしたので、それが全てだと受け止められず、諦めきれず投稿した次第です。 XMLファイルから指定はしてみたりはしたのですが、どうしてもうまい具合にはいかなかったもので・・・ 何分、初心者なもので分からない事だらけです。 これで諦めがつきました。ありがとうございました。 document 関数については順次勉強していきたいと思っています。 又、よろしくお願いします。 |
|
投稿日時: 2002-10-30 00:30
あらためて、検討してみました。スタイルシートの可変化の方式を
XSLT で原始的なのは、 埋め込みの処理命令、ブラウザ表示で使える。 (XSLT変換では スタイルシートと処理データは別々なのが) ここの最初の問題の形は、共通固定のスタイルシートが親(フレームワーク) になっていて、その一部分が可変部になっていて、それを処理対象から 指定する形です。 逆の形も作れるのでは、(共通部と可変部のXSLTが分離できているなら) 可変部のスタイルシートの中で共通部のシートをinclude/importする、 継承サブクラスをつくるような組み立てで。これなら、処理対象から 指定で呼び出しても良いし、 <?xml-stylesheet ならなにもしなくてよくなります。 テンプレートの優先順位など慣れが必要ですが。 |
1