登陆 免费注册 提交网站
站长资讯 >> 站长学院 >> 网络编程
 2007-08-17 10:36浏览: 3046 次

谈谈XHTML中CDATA

 浅说XHTML中CDATA

  近来,随着XHTML(可扩展HTML)标准的出现,标签也经历了一些改变。该标签不再用language特性,而用type特性声明内嵌代码或要加入的外部文件的mime类型,Javascript的mime类型是"text/javascript"。例如:

Example Source Code

 

 Title of Page

 

 var i = 0;

 

 

 

 

 

 

  即使许多浏览器不完全支持XHTML,但大多数开发者现在都用type特性,而不用language特性,以提供更好的XHTML支持。省略language特性不会带来任何问题,因为如前所述,所有浏览器都默认的该属性值为Javascript。

  XHTML的第二个改变是使用CDATA段。XML中的CDATA段用于声明不应被解析为标签的文本(XHTML也是如此),这样就可以使用特殊字符,如小于(<)、大于(>)、和号(&)和双引号("),而不必使用它们的字符实体。考虑下面的代码:

Example Source Code

 function compare(a, b) {

 if (a < b) {

 alert(“A is less than B”);

 } else if (a > b) {

 alert(“A is greater than B”);

 } else {

 alert(“A is equal to B”);

 }

}

  这个函数相当简单,它比较数字a和b,然后显示消息说明它们的关系。但是,在XHTML中,这段代码是无效的,因为它使用了三个特殊符号,即小于、大于和双引号。要修正这个问题,必须分别用这三个字符的XML实体<、>和"替换它们:

Example Source Code

function compare(a, b) {

if (a < b) {

alert("A is less than B");

} else if (a > b) {

131

Javascript in the Browser

alert("A is greater than B");

} else {

alert("A is equal to B");

}

}

  这段代码存在两个问题。首先,开发者不习惯用XML实体编写代码。这使代码很难读懂。其次,在Javascript中,这种代码实际上将视为有语法错,因为解释程序不知道XML实体的意思。用CDATA段即可以以常规形式(即易读的语法)编写Javascript代码。正式加入CDATA段的方法如下:

Example Source Code

function compare(a, b) {

if (a < b) {

alert(“A is less than B”);

} else if (a > b) {

alert(“A is greater than B”);

} else {

alert(“A is equal to B”);

}

}

]]>

  虽然这是正式方式,但还要记住,大多数浏览器都不完全支持XHTML,这就带来主要问题,即这在Javascript中是个语法错误,因为大多数浏览器还不认识CDATA段。

  当前使用的解决方案模仿了“对旧浏览器隐藏”代码的方法。使用单行的Javascript注释,可在不影响代码语法的情况下嵌入CDATA段:

Example Source Code

//

function compare(a, b) {

if (a < b) {

alert(“A is less than B”);

} else if (a > b) {

alert(“A is greater than B”);

} else {

alert(“A is equal to B”);

}

}

//]]>

网站首页 - 关于我们 - 联系我们 - 友情链接 - 帮助中心
Copyright ©2007-2022 www.Aisila.com All Rights Reserved
苏ICP备20008864号-4