我在使用XML document()调用时遇到了一个非常奇怪的问题。
我的代码很简单,但结果很奇怪。我创建了一系列变量来描述特定文件的路径。然后我用文件($ varname)来引入文件。它可以工作,但是从我们的一个子域引入文件而不是我想要的文件。
以下是代码:
<xsl:variable name="serverSecure" >https://www.mywebsite.com</xsl:variable>
<xsl:variable name="dirCorrected"><xsl:value-of select="normalize-space(translate($dir, '\', '/'))" /></xsl:variable>
<xsl:variable name="form" ><xsl:value-of select="$serverSecure" /><xsl:value-of select="$dirCorrected" />html/<xsl:value-of select="/page/@name" />.html</xsl:variable>
当页面加载时,它不会显示位于https://www.mywebsite.com/somedir/form/html/的文件,它会显示来自https:// wwwtest .mywebsite.com / somedir / form /的页面HTML /.
在我们将服务器切换为live之前,该服务器作为测试服务器运行,但我们在任何地方都更改了配置。我找不到任何可以指向测试域的东西了。
非常感谢任何和所有帮助!
编辑: 有人告诉我,我在原帖中没有document()函数,对不起。稍后在XSL中调用它:
<xsl:copy-of select="document($form)"/>
为了测试它,我调用了$ form变量的值:
<xsl:value-of select="$form" />
输出是我所期望的,它显示正确通向www服务器的路径。但实际显示的HTML文件是来自wwwtest子域服务器的HTML文件。
答案 0 :(得分:0)
嗯,所有人都可以肯定地说,问题不在于您向我们展示的代码中。某处某处正在拦截请求并重定向它。跟踪问题将是一个逐步消除的过程 - 我要做的第一件事就是尝试重现问题而不涉及任何XSLT代码:当您在浏览器中使用相同的URI或curl时会发生什么?< / p>