2015-09-08 3 views
0

Я пытаюсь отправить переменную, которая находится в Javascript, в XSLT-шаблон, когда я его вызываю (через параметр).Xpath не читает параметр правильно?

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

Javascript:

var children = document.getElementsByTagName("rect"); 

for (var i = 0; i < children.length; i++) { 
    children[i].addEventListener("click", function() { onElementClick(this.id); }, false); 
} 

function onElementClick(id) { 
    console.log(id); 
    console.log(<xsl:call-template name='getData'><xsl:with-param name='id'>id</xsl:with-param></xsl:call-template>); 
} 

Выше код у меня есть. Как вы можете видеть, он получает элемент SVG (rect) и отправляет идентификатор функции, когда щелкает прямоугольник. Затем он должен вызвать функцию для получения данных xml, связанных с этим идентификатором прямоугольника.

XSL:

<xsl:template name="getData"> 
    <xsl:param name="id"/> 
    <xsl:value-of select="//*[id[text() = $id]]"/> 
</xsl:template> 

Выход заключается в следующем:

LOG: БУС-0015
LOG:

Первые выводит Javascript ID, а вторые выходы результат выражения xpath. Я знаю, что выражение xpath корректно, потому что, если я задаю переменную вручную в шаблоне с тем же самым текстом, он найдет ожидаемые данные. Я думаю, что это, может быть, как это передать его в шаблон xsl? Но когда я меняю код, чтобы он просто возвращал значение параметра, который был передан, он печатает то же самое, что и предыдущий console.log (id).

+1

это второй консоль.log ... псевдо код? –

+0

Можете ли вы обновить свой код? Это недействительный JavaScript. – Abel

ответ

0

Выполнение JavaScript + XSLT - это хорошая идея, чтобы проверить Sarissa. Это тонкая обертка, чем обработка XSLT с использованием XSLT-процессора браузера. На странице примера это demonstrated how to set parameters.

Кроме того, в вашем фрагменте это параметр шаблона. Установка параметров таблицы стилей из браузера означает настройку глобальных параметров. Для вызова точки входа это имеет мало значения, но для этого вам нужно будет объявить параметр xsl:param на корневом уровне.

Смежные вопросы