正确使用XHTML的冒险以及解决办法
作者:网络 文章来源:转载 点击数: 更新时间:2006-1-4
[ 字体:缩小 正常 放大 | 双击自动滚屏 ]
请选择合适的字体颜色:
选择颜色
黑 色
红 色
黄 色
绿 色
橙 色
紫 色
蓝 色
褐 色
墨 绿
深 蓝
赭 石
粉 绿
淡 绿
黄 灰
翠 绿
综 红
砖 红
淡 蓝
暗 红
玫瑰红
紫 红
桔 黄
军 黄
烟 灰
深 灰
灰 蓝
我使用XHTML有些年了,但直至去年夏天我才着眼于如何正确使用,那就是说,以application/xhtml+xml的MIME类型来伺服(server)它。我知道我碰到问题的一些,但问题远非如此。就如你即将发现的一样,当你开始使用真正的XHTML,你会遭遇很多似乎细小但让人困惑的问题。 请注意这不是一篇讨论支持或反对使用XHTML的文章。我只是写下我所知道的潜在的易犯错误,并且让你自己来决定自己的选择:HTML 4.01,为所有浏览器伺服为text/html的XHTML 1.0或者为能够处理其的浏览器伺服为application/xhtml+xml而其他浏览器则伺服为text/html的XHTML 1.0。否则有些东西会完全不一样。 每当我遭遇到它们发生的场合,我开始了解一个又一个的问题。有些情况下我必须花很多时间来查找问题并且在找到解决办法之前求助于其他人。但我在其中学到不少东西,我将把我已经使用XHTML后应该知道的都告诉你。 注意我这里提及的问题只会发生在能正确处理application/xhtml+xml MIME类型的用户代理中,而因此XHTML被作为XML。这也可能是这里不提及XHTML的早期使用的原因——很少有人使用这样的浏览器,所以几乎不会有人因只伺服为text/html的XHTML所烦忧。 今天,实际上把XHTML伺服为application/xhtml+xml正慢慢变得平常。我所知道的理由有两个: 1. 使用Firefox,Mozilla,Opera。Safari和其他兼容XHTML浏览器的人数增加了很多,所以你不再仅仅为自己和伙伴这样做。嗯。或许你就这样做,当将影响更多人。 2. 在web开发者之间,对XHTML的真正面目是什么的觉醒越来越多了。使用XHTML已经有多次多时的热烈的讨论,尤其是伺服为text/html的时候。如果你参与了任何一次讨论,你知道我在说什么。 假如你,像我,决定实现某些类型的content negotiation和在传送XHTML的时候使用正确的媒体类型,你需要知道什么能(和将)在你发布的文档中发生,并且知道怎样避免问题的发生。对于对content negotiation同进行content negotiation的脚本例子有兴趣的读者,我推荐你阅读Content Negotiation和Serving up XHTML with the correct MIME type(本站早有翻译:使用正确的MIME类型伺服XHTML)。还有很多这种类型的文章,但这是我读到的最精彩的两篇。 每一个基本的教程都有一些HTML和XHTML的明显区别:元素和属性名字使用小写,属性值总要用引号。不要使用简化属性,确保所有的元素都有结束标签和没有不正确的嵌套等等。但是,当XHTML伺服为application/xhtml+xml时还需要知道更多东西。 良构是必须的 文档必须是良构(well-formed)的XML(跟合法的(valid)XHTML不必然相同)。对错误没有妥协,没有机会。如果文档不良构,符合标准的浏览器(当前我知道Mozilla,Firefox,Netscape,Camino,Opera,Safari和OmniWeb——相当多的浏览器除了IE)将会显示一条错误信息和在某种方式或其他方式上中止处理文档。 此外,这还意味着不再未编码的“&”号。 XML声明可能是必须的 如果要使用除了UTF-8或者UTF-16字符编码,XML声明是必须的除非HTTP头已经提供编码。 在HTTP头中是否要指定字符编码有些模糊,Architecture of the World Wide Web, Volume One: Media Types for XML如此陈述 总体上,不应该在协议头为XML数据指定字符编码因为数据本身已描述。 另一方面,XHTML 1.0, Second Edition: Character Encoding说: 为了让文档使用指定的字符编码,最好的办法是保证web服务器 发送正确的头。 就是说,在XML声明中指定字符编码是好的习惯: <?xml version="1.0" encoding="UTF-8"?> 只有五个实体是安全的 只有五个预定义的实体(<、>、&、 "和')的支持是有担保的。其他的可能完全被忽略或者直接输出。比如,如果XHTML文档包含如 或者”的实体,Safari会生成。直接地。Opera反而选择忽略未知的实体,同时Mozila家族会认得这些实体并且就像HTML中“如果文档引用公共的映射浏览器伪DTD目录中的标识符并且没有单独声明的文档” 来处理[1] [2] [3] [4] 下一页
文章录入:54iter 责任编辑:54iter
上一篇文章: 制作三维表格效果 下一篇文章: 在线播放器代码大全
【发表评论 】【加入收藏 】【告诉好友 】【打印此文 】【关闭窗口 】