Как передать значение переменной XSL в функцию JavaScript - PullRequest
9 голосов
/ 29 мая 2011

Я пытаюсь передать значение переменной xsl в функцию javascript.

Моя переменная xsl

<xsl:variable name="title" select="TITLE" />

Я передаю значение, подобное этому

<input type="button" value="view" onclick="javascript:openPage('review.html?review=$title')" />

я пробовал приведенный выше код разными способами, но получаю ошибки.

<script type="text/javascript">
                    function jsV() {
                    var jsVar = '<xsl:value-of select="TITLE"/>';
                    return jsVar;
                    }
                </script>

                <input type="button" value="view" onclick="javascript:openPage('javascript:jsV()')" />

I also tried 

<input type="button" value="view" onclick="javascript:openPage('review.html?review='\''
    +$title+'\')" />

Есть ли альтернативный способ или я делаю это неправильно?

Ответы [ 3 ]

4 голосов
/ 29 мая 2011

Вот рабочий пример, как это сделать:

Это преобразование:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*">
   <xsl:variable name="vTitle" select="TITLE"/>

     <input type="button" value="view"
     onclick="javascript:openPage('review.html?review={$vTitle}')" />
 </xsl:template>

</xsl:stylesheet>

при применении к этому документу XML (документ XML не был предоставлен!):

<contents>
 <TITLE>I am a title</TITLE>
</contents>

дает требуемый, правильный результат :

<input type="button" value="view" 
 onclick="javascript:openPage('review.html?review=I am a title')"/>

Объяснение : Использование AVT (шаблоны значений атрибутов).

4 голосов
/ 29 мая 2011

Вы забыли о {}:

<input type="button" value="view" onclick="javascript:openPage('review.html?review={$title}')" />
3 голосов
/ 22 октября 2014

Можно также получить доступ к переменной xsl из кода JavaScript в том же файле, выполнив следующие действия:

<xsl:variable name="title" select="TITLE"/>

<script type="text/javascript">
    function getTitle() {
        var title = <xsl:value-of select="$title"/>;
        return title;
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...