| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
正确使用XHTML的冒险
作者:未知    文章来源:网络    点击数:    更新时间:2006-8-12
  引发错误除非是良构的。
为了在script或style块中使用〈、&或者--,你需要用CDATA :
〈script type="text/javascript"〉 
〈![CDATA[ 
... 
]]〉 
〈/script〉
在CDATA里,你可以任何顺序的字符,它们不会被当作XML来解析(除了结束CDATA部分]]〉)。
需要以text/html发送的文档中,CDATA部分的起始和结束标签需要注释掉,以便在不能处理CDATA部分的浏览器中隐藏:
〈script type="text/javascript"〉 
// 〈![CDATA[ 
... 
// ]]〉 
〈/script〉
〈style type="text/css"〉 
/* 〈![CDATA[ */ 
... 
/* ]]〉 */ 
〈/style〉
如果要确保很老的浏览器隐藏CDATA部分,需要使用更为复杂的方法,像在Ian Hickson的Sending XHTML as text/html Considered Harmful中描述的那样:
〈script type="text/javascript"〉 
〈!--//--〉〈![CDATA[//〉〈!-- 
... 
//--〉〈!]]〉 
〈/script〉
〈style type="text/css"〉 
〈!--/*--〉〈![CDATA[/*〉〈!--*/ 
... 
/*]]〉*/--〉 
〈/style〉
一个更好的办法可能是在发送text/html的文档前使用content negotiation脚本来删除任何CDATA部分。
当然,最聪明和安全的途径是把所有的CSS和JavaScript都移动到外部文件中,但不总是现实的做法。
没有会自动补全的元素
在HTML中,假如表格的tbody元素漏写的话浏览器会自动补全,而XHTML不会。如果你没有清楚地添加tbody,它就不会出现。在编写CSS选择器和JavaScript的时候请铭记在心。
用document.write编写的脚本不再工作
在XHTML中使用JavaScript,document.write不会工作。Ian Hickson在Why document.write() doesn’t work in XML解释了原因。你需要使用document.createElementNS()代替。关于更多可以在Experts Exchange中的论坛主题中找到。
这也是Google AdSense不在XHTML中工作的原因之一。那些希望以application/xhtml+xml伺服XHTML并且使用Google广告的人,这儿有一个解决办法:Simon Jessey的Making AdSense work with XHTML。尽管有点麻烦,但还是工作了(我在这里也使用了),同时被Google所认可。
引入样式元素
在XHTML中,为了兼容定义CSS规则的XML方法,你应该使用XML样式表声明(访问 XHTML 1.0, Second Edition: Referencing Style Elements when serving as XML的XML样式表声明和Associating Style Sheets with XML documents的xml-stylesheet处理说明)。要载入外部CSS文件,我们需要使用style元素,同时应该使用XML样式表声明来引入样式元素。为此,使用id属性给style元素一个分解的标识符,然后在XML样式表声明中引入该标识符:
〈?xml-stylesheet href=”stylesheet1.css” type=”text/css”?〉 
〈?xml-stylesheet href=”#stylesheet2” type=”text/css”?〉 
〈!DOCTYPE html 
PUBLIC “-//W3C//DTD 
XHTML 1.0 Strict//EN”

“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”〉

〈html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” 
lang=”en”〉

〈head〉

〈title〉XML stylesheet declaration〈/title〉

〈style type=”text/css” id=”stylesheet2”〉

@import “stylesheet2.css”;

〈/style〉

〈/head〉

我不知道在实际中究竟有多必要,并且不使用XML样式表声明的话会有什么问题。或许有人会指点我的。
CSS的应用规则有些不一样
CSS应用到body的性质(property)并不应用到XHTML的整个文档。最值得注意的是应用背景颜色或者图片。在HTML中,应用到body元素的背景将会覆盖整个页面。在XHTML中,你必须同时样式化html。在Juicy Studio的CSS body Element Test中有这个行为的演示。
在XHTML中作为CSS规则的元素和属性名字是大小写敏感的(而且必须是小写的)。避免问题最简单的办法是,不管在HTML,XHTML还是CSS中所有东西都保持小写。
有挑战,但不是不可能
当我开始为兼容的浏览器伺服XHTML为applica

上一页  [1] [2] [3] 下一页


  • 上一篇文章:

  • 下一篇文章:
  • 相关文章