Как я могу получить меньше, чем в JavaScript для цикла в XSL для работы? - PullRequest
4 голосов
/ 14 июня 2010

Я использую CDATA для выхода из сценария, но в отладчике IE8 я по-прежнему получаю это сообщение: «Ожидается») в условиях цикла for.Я предполагаю, что это все еще думает, что;в <, генерируемом CDATA, заканчиваются условия цикла.

Оригинальный скрипт в моем шаблоне XSL:

<script type="text/javascript" language="javascript">  
<![CDATA[
    function submitform(form){
        var oErrorArray = new Array();
        for (i=0;i<form.length;i++) 
        eval("oErrorArray["+i+"]=oError"+i);
        var goForm = true;
        for(i=0;i<form.length;i++) {
            oErrorArray[i].innerHTML = "";
            if(form[i].value="")){
                oErrorArray[i].innerHTML = "Error - input field is blank";
                goForm = false;
            }           
        }
        if(goForm == true) form.submit();
    }
    function resetform(form){
        form.reset();
    }
]]>
</script>

Код, сгенерированный после преобразования (из отладчика IE8) :

<script type="text/javascript" language="javascript">
    function submitform(form){
        var oErrorArray = new Array();
        for (i=0;i&lt;form.length;i++) 
        eval("oErrorArray["+i+"]=oError"+i);
        goForm = true;
        for(i=0;i&lt;form.length;i++) {
            oErrorArray[i].innerHTML = "";
            if(form[i].value="")){
                oErrorArray[i].innerHTML = "Error - input field is blank";
                goForm = false;
            }           
        }
        if(goForm == true) form.submit();
    }
    function resetform(form){
        form.reset();
    }
</script>

Ошибка, обнаруженная отладчиком IE8: Ожидается ')' login.xml, строка 29 символов 30 (которая находится сразу после первой «form.length»))

1 Ответ

3 голосов
/ 14 июня 2010

Вам нужно явно отключить экранирование выхода.

http://www.w3.org/TR/xslt#disable-output-escaping

Как отмечает Кайл в комментариях, в частности вам нужно

(1) удалите теги CDATA и

(2) вставить <xsl:text disable-output-escaping="yes">&lt;</xsl:text>, где вам нужно, чтобы символ не был экранирован.

...