在项目开发过程中,我们经常会使用到html和xml,同时我们也需要在页面中写一些javascript脚本,这个时候我们都会使用
<script>
...code...
</script>
或者
<script>
<![CDATA[
...code...
]]>
</script>
前者我就不需要多说了,现在就说说第二种使用在xml中的脚本。
当我们书写js脚本的时候,会判断当前的页面是那种类型,如果是xml,那我们在编写js的时候就必须使用上述的第二种情况了,
否则会遇到如下错误,例如:
xml中的脚本:
<script>
function finStatementHdIdChange(e) {
for(var i=0;i<viewModel.finStatementSource.length;i++){
if(viewModel.finStatementSource[i].rptDate==this.value()){
viewModel.finData.set("roa",viewModel.finStatementSource[i].roa);
viewModel.finData.set("roe",viewModel.finStatementSource[i].roe);
viewModel.finData.set("salesGrowthRate",viewModel.finStatementSource[i].salesGrowthRate);
viewModel.finData.set("repaymentRatio",viewModel.finStatementSource[i].repaymentRatio);
}
}
}
</script>
然后再运行过程中后台会报:
很明显在解析i<viewModel.finStatementSource.length的时候报错了,因此我们这个时候就得使用:
<script>
<![CDATA[
...code...
]]>
</script>
方式去将js包装起来,CDATA 部分中的所有内容都会被解析器忽略,因此你在js中写的是什么,就是什么。
下面我们简单说一下转移字符:
转义字符
非法的 XML 字符必须被替换为实体引用(entity reference)。
假如您在 XML 文档中放置了一个类似 "<" 字符,那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。因此你不能这样写:
<message>if salary < 1000 then</message>
为了避免此类错误,需要把字符 "<" 替换为实体引用,就像这样:
<message>if salary < 1000 then</message>
在 XML 中有 5 个预定义的实体引用:
< | < | 小于 |
> | > | 大于 |
& | & | 和号 |
' | ' | 省略号 |
" | " | 引号 |
注释:严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。
关于XML CDATA的介绍可以阅读官方教程。