- PR -

xsl:include にて変数の使用は?

1
投稿者投稿内容
斎藤
会議室デビュー日: 2002/10/28
投稿数: 5
投稿日時: 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"/> のような指定をしても無理な様子でし
た。根本的に無理なのでしょうか。

どなたか、可否をご存知の方いらっしゃいましたら、教えてもらえますか。
よろしくお願いします。

斎藤
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 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 ]
井上孝司
ぬし
会議室デビュー日: 2001/09/08
投稿数: 668
お住まい・勤務地: 東京都
投稿日時: 2002-10-28 10:42
井上です。

PDF に変換する際に DOM を使ってコードを書いているのであれば、スタイルシートのファイル名情報を XML 文書から読み取って、その情報を使って読み込むスタイルシートのファイル名を使い分ける、というわけにはまいりませんか ?
_________________
www.kojii.net
斎藤
会議室デビュー日: 2002/10/28
投稿数: 5
投稿日時: 2002-10-28 11:53
MMXさん、井上孝司さん、素早い返答ありがとうございます。

そうでございますか・・・。
私の方で試してみた限りでは無理でしたので、それが全てだと受け止められず、諦めきれず投稿した次第です。
XMLファイルから指定はしてみたりはしたのですが、どうしてもうまい具合にはいかなかったもので・・・
何分、初心者なもので分からない事だらけです。
これで諦めがつきました。ありがとうございました。

document 関数については順次勉強していきたいと思っています。
又、よろしくお願いします。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2002-10-30 00:30
あらためて、検討してみました。スタイルシートの可変化の方式を

XSLT で原始的なのは、 埋め込みの処理命令、ブラウザ表示で使える。
(XSLT変換では スタイルシートと処理データは別々なのが)

ここの最初の問題の形は、共通固定のスタイルシートが親(フレームワーク)
になっていて、その一部分が可変部になっていて、それを処理対象から
指定する形です。

逆の形も作れるのでは、(共通部と可変部のXSLTが分離できているなら)
可変部のスタイルシートの中で共通部のシートをinclude/importする、
継承サブクラスをつくるような組み立てで。これなら、処理対象から
指定で呼び出しても良いし、 <?xml-stylesheet ならなにもしなくてよくなります。

テンプレートの優先順位など慣れが必要ですが。
1

スキルアップ/キャリアアップ(JOB@IT)