How do I get a less than in a javascript for loop in XSL to work?

余生长醉 提交于 2019-12-23 15:17:19

问题


I am using CDATA to escape the script but in IE8's debugger I still get this message: "Expected ')'" in the for loop conditions. I am assuming it still thinks that the ; in the < generated by CDATA is ending the loop conditions.

Original script in my XSL template:

<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>

Code generated after transformation (from IE8 debugger):

<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>

Error reported by IE8 debugger: Expected ')' login.xml, line 29 character 30 (which is right after the first "form.length")


回答1:


You need to disable output escaping explicitly.

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

As Kyle note in the comments, in particular you need to

(1) remove the CDATA tags and

(2) insert <xsl:text disable-output-escaping="yes">&lt;</xsl:text> where you need the character not to be escaped.



来源:https://stackoverflow.com/questions/3035058/how-do-i-get-a-less-than-in-a-javascript-for-loop-in-xsl-to-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!