我正在尝试将两个路径传递给JavaScript和XSLT的JavaScript函数。看来在下面的示例HTML中,使用“../xsl/filename
”在xslt()函数中对我不起作用。如果我将路径指定为“./filename
”,尽管这确实有效。
有没有人知道如何解决这个问题或找到一些方法可以指定一个没有绝对路径引用的兄弟文件夹?我宁愿不必更改我的文件路径,因为我的开发环境是使用xslt设置的,示例数据和源代码以特定方式构建。
提前致谢 Jamen
<html>
<head>
<title></title>
<script type="text/javascript" src="../lib/jsunit/app/jsUnitCore.js"></script>
<script type="text/javascript" src="../lib/jquery-1.2.3.js"></script>
<script type="text/javascript" src="../lib/jquery.xslt.js"></script>
</head>
<body>
<div id="bla"></div>
<script type="text/javascript">
$('#bla').xslt("../sampledata/response1.xml", "../xslt/resultFormatter.xsl");
//function testjQuery() {
// $('#bla').xslt("../sampledata/response1.xml", "../xslt/resultFormatter.xsl");
//}
</script>
</body>
</html>
答案 0 :(得分:1)
一个现实的例子可以让我以最快的方式深入研究这个问题,但取而代之的是......
我不得不做一些调试,我很害怕。
您可以引用至少一个级别的相对路径,因为拉入JS源文件的标题也会这样做,因此排除了Web服务器的问题。
处理和提取资源似乎发生在客户端,因此打开一个Firebug控制台或其他东西,让您了解JS环境中发生的事情。
如果你在那里画一个空白,请深入了解来源。
看一下
中的源代码http://johannburkard.de/software/xsltjs/apidoc/overview-summary-jquery.xslt.js.html
有两种不同的路径,
if (document.recalc) { // IE 5+
// EDIT : Path 1
} else if ( /* EDIT : conditions */) { // Mozilla 0.9.4+, Opera 9+
// EDIT : Path 2
} // EDIT : No final else, so a silent failure
让你悲伤的第二个参数与正则表达式匹配,
var str = /^\s*</;
在两条路径中。无论你要走哪条路,都要设置断点并自己测试这些情况(使用你一直在使用的xslt参数值)。消除可能性并继续沿着处理链走下去,直到找到失败点。
我猜在原作者没有预料到相对路径的地方有一个正则表达式匹配/字符串处理错误。