Разрешить одноуровневую папку в функции JavaScript - PullRequest
1 голос
/ 07 апреля 2010

Я пытаюсь передать в функцию JavaScript два пути для XML и XSLT. Может показаться, что в приведенном ниже примере 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>

1 Ответ

2 голосов
/ 07 апреля 2010

Живой пример дал бы мне самый быстрый способ углубиться в это, но вместо этого ..

Боюсь, тебе придется немного отладить.

Вы можете ссылаться на относительные пути по крайней мере на один уровень глубиной, потому что заголовки, извлекающие исходные файлы JS, также делают это, что исключает проблемы с веб-сервером.

Кажется, что обработка и извлечение ресурсов происходит на стороне клиента, поэтому откройте консоль 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, которые вы использовали). Исключите возможности и продолжайте идти по цепочке обработки, пока не найдете свою точку отказа.

Я предполагаю, что где-то внизу есть ошибка с обработкой совпадений / регулярных выражений, когда первоначальный автор не ожидал относительных путей.

...