2011-01-24 9 views
1

これはうまく動作します:document()関数でXSL変数を使用できますか?

<xsl:variable 
    name="issue_info_file" 
    select="document('/issues/2010/12/08/info.xml') 
       /page-components/issue-metadata-component/title"/> 

しかし、これはしません。これはさえXSLTで許可されている場合

<xsl:variable 
    name="issue_info_file" 
    select="string(concat($full_issue_path,'/info.xml'))"/> 
<xsl:variable 
    name="issue_title" 
    select="document($issue_info_file) 
       /page-components/issue-metadata-component/title"/> 

は誰もしていますか?そうでない場合は、動的変数を持つファイルを開くためのソリューションをお勧めしますか?

+0

あなたの '$ full_issue_path'変数に間違った値が含まれていない限り、それがうまくいかない理由はありません。 '$ issue_info_file'の値を出力に出力して評価するものを見ることができますか? – biziclop

+1

が{} thingyを使用して動作する可能性があります – Treemonkey

+1

引数の値が期待される型(URIなど)である場合、 'document()'関数の引数として変数を使用することは完全にOKです。 '/ full_issue_path'の値が '/info.xml'と連結された場合、有効なURIまたは正しいURIが生成されない可能性があります。人々があなたのエラーを明らかにすることを望むなら、完全な例を提供する必要があります。 –

答えて

1

document()関数でXSL変数を使用できますか?

はい

document()関数の引数として変数を使用することは、引数の値が期待される型(URIなど)であれば、完全にOKです。おそらく$full_issue_pathの値と'/info.xml'を連結した場合、有効なURIまたは正しいURIが生成されない可能性があります。

あなたの人があなたのエラーを明らかにするためには、という完全な例を提供する必要があります。

+0

$ full_issue_pathが間違っていました。一旦修正されるとうまくいった。 – HumanSky

4

この問題がまだ開いているかどうかはわかりませんが、回答はないようです。私はこのコードを自分のXSLファイルで使っています。

<xsl:variable name="docRoot">../sitemap/</xsl:variable> 
<xsl:variable name="fullDocRoot" select="string(concat($docRoot,'sitemap.xml'))"/> 
<xsl:for-each select="document($fullDocRoot)/root/sitemap/loc"> 

誰かを助ける希望。

関連する問題