- - PR -
document関数について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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> (この書き方はもちろん不可。でもこのような形を実現したい) このような感じなのですが、どなたか方法が解る方がいらっしゃいましたらご教示ください。よろしくお願いします。 |
|
投稿日時: 2005-01-17 19:22
共通.xslでは、共通.xmlを呼ぶときに
<xsl:for-each select="document('共通.xml')">〜〜</xsl:for-each> として呼んでいるのですが、 逆にいうとインクルードした共通.xslでもA.xmlを参照する方法を ご教示願いたくよろしくお願いします。 |
|
投稿日時: 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> と記述してみたのですが、「テストです。」というテキストさえ 表示されません。無知で恥ずかしいばかりですが ご教示ください。よろしくお願いします。 |
|
投稿日時: 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