- PR -

document関数について

1
投稿者投稿内容
Angler
ベテラン
会議室デビュー日: 2004/12/21
投稿数: 56
投稿日時: 2005-01-17 17:38
A.xml,B.xml...G.xml, A.xsl,B.xsl...G.xsl, 共通.xml,共通.xslがあります。A.xmlとA.xslをレンダリングするとA.xslに共通.xslがインクルードされているのでAと共通の情報が盛り込まれたモノが完成します。という仕様です。
ですが、現在、共通.xslでA〜G.xmlからの情報をとってくる必要が出てきました。
そこでZ.xslの中にdocument(A.xml)とすれば取得可能なのは解るのですが、document()の中身は共通ですので固定では書けません。
実現させたい内容の意味は

<xsl:for-each select="document('<xsl:value-of select="「A〜G.xmlのうちのどれか」"/>')"></xsl:for-each>

(この書き方はもちろん不可。でもこのような形を実現したい)
このような感じなのですが、どなたか方法が解る方がいらっしゃいましたらご教示ください。よろしくお願いします。
Angler
ベテラン
会議室デビュー日: 2004/12/21
投稿数: 56
投稿日時: 2005-01-17 19:22
共通.xslでは、共通.xmlを呼ぶときに
<xsl:for-each select="document('共通.xml')">〜〜</xsl:for-each>
として呼んでいるのですが、
逆にいうとインクルードした共通.xslでもA.xmlを参照する方法を
ご教示願いたくよろしくお願いします。
Angler
ベテラン
会議室デビュー日: 2004/12/21
投稿数: 56
投稿日時: 2005-01-17 20:57
今、他のやり方として、
A.xsl側に

<xsl:call-template name="page">
<xsl:with-param name="sheetname">A.xsl</xsl:with-param>
</xsl:call-template>

と、記述し、
共通.xsl側に

<xsl:template name="page">
<xsl:param name="sheetname"/>
<xsl:for-each select="document($sheetname)/DOC/BODY">
<fo:block><xsl:value-of select="$sheetname"/>テストです。</fo:block>
</xsl:for-each>
</xsl:template>

と記述してみたのですが、「テストです。」というテキストさえ
表示されません。無知で恥ずかしいばかりですが
ご教示ください。よろしくお願いします。
Angler
ベテラン
会議室デビュー日: 2004/12/21
投稿数: 56
投稿日時: 2005-01-17 22:59
現在、共通.xmlに取りたい情報「A.xml」を持たせることにしました。
そして、共通.xslには以下のように記述してみました。

<xsl:template name="page">
<xsl:for-each select="document('共通.xml')/DOC">
<xsl:variable name="id" select="表ID"/>
<fo:block><xsl:value-of select="$id"/></fo:block>
<xsl:for-each select="document($id)/DOC">
<fo:block><xsl:value-of select="表ID"/></fo:block>
</xsl:for-each>
</xsl:for-each>
</xsl:template>

ようは、共通.xmlから表ID(中にA.xmlと表記)を取得できるので上記、
<fo:block><xsl:value-of select="$id"/></fo:block>
ではA.xmlを表示できるのですが、問題のdocument()の中は「@〜」しか書けない
ものを「$id」と書いているのでエラーとなっています。。。
<xsl:for-each select="document(A.xml)/DOC">
が目標の物なのですが、この部分、どうすることもできません。。。
どなたかお力添えをお願いします。どうかよろしくお願いします。
1

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