2012-04-27 6 views
1

Возможно ли обрабатывать параметр функции javascript в XSLT, где сценарий находится между тегами. <script type=text/javascript>....</script>. Если возможно, кто-то может привести пример. Благодарю.Передача параметров сценарию javascript в xslt

+0

Вы хотите * генерировать * '' или * вызов * а функция Javascript в процессе трансформации и использовать результат этого вызова далее в трансформация? –

ответ

2

Я думаю, что вы путаетесь между двумя вещами: XSLT - это то, что используется (в данном случае) для генерации HTML/javascript - как только созданный HTML/javascript будет получен браузером, тогда javascript может быть запущен , Я не знаю о какой-либо такой концепции XSLT, «передающей» переменную функции javascript.

Я думаю, вы хотите что-то вроде этого XSLT ...

<script type="text/javascript"> 
    var myVar = "<xsl:value-of select="XPATHVALUE"/>"; 
    <xsl:text disable-output-escaping="yes"><![CDATA[ 
    function myFunc(){ 
     alert(myVar); 
    } 
    ]]></xsl:text> 
</script> 

Если поместить основной «тело» JavaScript внутри XSL: текстовый элемент, это означает, что вы не получите пойманы используя зарезервированные символы (например, < > и т. д.).

Сгенерированный HTML/JavaScript, который установлен в браузере будет в конечном итоге, как-то вроде этого, то есть вызова MyFunc будет отображать "привет мир" ...

<script type="text/javascript"> 
    var myVar = "hello world"; 
    function myFunc(){ 
     alert(myVar); 
    } 
</script> 

Обновление

As MichaelKey подчеркнул, что элемент < xsl: text > не нужен. Это должно производить то же самое ...

<script type="text/javascript"> 
    var myVar = "<xsl:value-of select="XPATHVALUE"/>"; 
    <![CDATA[ 
    function myFunc(){ 
     alert(myVar); 
    } 
    ]]> 
</script> 
+1

Вам не нужно отключать вывод-вывод. Сериализатор знает, что он создает элемент сценария и должен соответствующим образом обрабатывать контент (если это не так, это ошибка). –

+0

Я этого не осознавал. Я дам ему обойтись без него, но если память мне поможет, Visual Studio (где я делаю всю свою работу XSLT) начинает показывать ошибки форматирования, поэтому я бы даже не попытался запустить его – freefaller

+0

@MichaelKay Как вы говорите, элемент не нужен, но вам все равно нужно использовать , иначе попытка перевода .NET не понравится зарезервированным символам, таким как &, < и > – freefaller

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