这很好用:
<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中甚至允许这样做?如果没有,是否有人推荐使用动态变量打开文件的解决方案?
答案 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。
如果您希望人们发现您的错误,您需要提供一个完整的示例。