2013-12-09 2 views
0

Ищет решение, на следующем: Это мой Java-функция, которая устанавливает параметр в мой файл XSL и этот параметр содержит строку запрос, который имеет XPATH syntxпередачи пары, как XPATH expressin в XSLT- Javascript

queryFilter = "*/person[name='John']"; 

function getXSLDoc(xslDocument,xmlDocument,queryFilter) { 
.. 
    var processor = new XSLTProcessor(); 
    processor.setParameter(null,"name",queryFilter); 
.... 
} 

Теперь на моем файл XSLT Я хочу взять QueryFilter строку и использовать его в петле или создать переменный:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns="http://www.w3.org/1999/xhtml"> 
    <xsl:output method="html" indent="yes"/> 

    <xsl:param name="queryFilter"/> 

<!-- Lets say I want to create a local variable and use it to loop on a node --> 

    <xsl:variable name="varFilter" select="$queryFilter"/> 

    <xsl:for-each select="$**varFilter**"> 
     <tr> 
      <xsl:apply-templates select="name"/> 
      .. 
     </tr> 
    </xsl:for-each> 

</xsl:stylesheet> 

Теперь, как я использовать Пары я на моем яваскрипте функции, выражение xpath?

+1

Это XSLT-файл не является действительным. Шаблонов нет. Я бы предложил переписать XSLT. –

+0

Вы пробовали просто использовать параметр * as is *, т. Е. ''? –

+0

Я считаю, что вы пытаетесь сделать динамическую оценку xpath, которая, как мне кажется, не поддерживается в XSLT 1.0 (или 2.0). Однако вы можете использовать функцию расширения. Например, посмотрите http://www.exslt.org/dyn/index.html. –

ответ

1

Нет поддержки для динамического вычисления полного выражения XPath во время выполнения. Но для многих случаев достаточно передать числовое или строковое значение, которое вы используете в сравнении, например.

name = "John"; 

и

processor.setParameter(null,"name",name); 

, а затем в XSLT у вас есть

<xsl:param name="name"/> 

и

<xsl:for-each select="*/person[name = $name]">...</xsl:for-each> 
Смежные вопросы