1 (изменено: alexii, 2011-12-19 19:38:44)

Тема: JScript: Ошибка "Expecting a valid name" для оператора "<" в *.wsf

Доброго времени суток!

Имеется код в WSF файле:

<?xml version="1.0" encoding="utf-8"?>

<job id="T1">
<script language="JScript">

var i = 2;

if (i < 5) {
WScript.Echo(i);
}
</script>
</job>

При запуске скрипта выдаётся сообщение, о том, что "Expecting a valid name" и указывает на место подчёркнутого значения (т.е. "5"). Замена значения на переменную и смена кодировки (на 1251) ничего не меняют. И такая ситуация на всех машинах.

Та же история и с кодом for:

for (var i = 0; i < 3; i++) {
WScript.Echo(i);
}

Можно конечно заменить < на !( >= ), но хотелось бы всё-таки установить причину такого поведения сервера сценариев.

P.S. В IE аналогичный код (в HTML-ом <script>) работает.

2

Re: JScript: Ошибка "Expecting a valid name" для оператора "<" в *.wsf

Всегда пишите код в секции CDATA:

<script language="JScript"><![CDATA[

// код

]]></script>
( 2 * b ) || ! ( 2 * b )

3

Re: JScript: Ошибка "Expecting a valid name" для оператора "<" в *.wsf

Ратибор Редоран пишет:

хотелось бы всё-таки установить причину такого поведения сервера сценариев

wsf-файл это в первую очередь xml-файл, который должен быть well-formed, правильно сформированным. Фрагменты такого xml-файла, содержащие символы < и >, рассматриваются как теги, в результате весь wsf-файл не проходит проверку как правильно сформированный xml-файл. Поэтому весь код (не только jscript, но и vbscript) надо пометить как CDATA - character data, символьные данные. Таково определение тега <script> - содержит только символьные данные.

( 2 * b ) || ! ( 2 * b )

4

Re: JScript: Ошибка "Expecting a valid name" для оператора "<" в *.wsf

Спасибо огромное! Раньше не обращал внимания на эту инструкцию. Теперь буду знать.