你可以在document()函数中有XSL变量吗?

时间:2011-01-24 16:37:02

标签: xml xslt

这很好用:

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

但这不是:

<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"/>

是否有人在XSLT中甚至允许这样做?如果没有,是否有人推荐使用动态变量打开文件的解决方案?

2 个答案:

答案 0 :(得分: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">

希望有人帮助。

答案 1 :(得分:1)

  

你能拥有XSL变量吗?   document()函数?

如果参数的值是预期的类型(例如URI),则使用变量作为document()函数的参数是完全可以的。当与$full_issue_path连接时,'/info.xml'的值很可能不会产生有效的URI或正确的URI。

如果您希望人们发现您的错误,您需要提供一个完整的示例