正确使用xhtml的冒险以及解决办法

上传人:wm****3 文档编号:41978421 上传时间:2018-05-31 格式:DOC 页数:4 大小:26.50KB
返回 下载 相关 举报
正确使用xhtml的冒险以及解决办法_第1页
第1页 / 共4页
正确使用xhtml的冒险以及解决办法_第2页
第2页 / 共4页
正确使用xhtml的冒险以及解决办法_第3页
第3页 / 共4页
正确使用xhtml的冒险以及解决办法_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《正确使用xhtml的冒险以及解决办法》由会员分享,可在线阅读,更多相关《正确使用xhtml的冒险以及解决办法(4页珍藏版)》请在金锄头文库上搜索。

1、 正确使用 XHTML 的冒险以及解决办法我使用 XHTML 有些年了,但直至去年夏天我才着眼于如何正确使用,那就是说,以 application/xhtml+xml 的 MIME 类型来伺服(server)它。我知道我碰到问题的一些,但问题远非如此。就如 你即将发现的一样,当你开始使用真正的 XHTML,你会遭遇很多似乎细小但让人困惑的问题。请注意这不是一篇讨论支持或反对使用 XHTML 的文章。我只是写下我所知道的潜在的易犯错误,并且 让你自己来决定自己的选择:HTML 4.01,为所有浏览器伺服为 text/html 的 XHTML 1.0 或者为能够处理 其的浏览器伺服为 applic

2、ation/xhtml+xml 而其他浏览器则伺服为 text/html 的 XHTML 1.0。否则有些东西 会完全不一样。每当我遭遇到它们发生的场合,我开始了解一个又一个的问题。有些情况下我必须花很多时间来查找问 题并且在找到解决办法之前求助于其他人。但我在其中学到不少东西,我将把我已经使用 XHTML 后应 该知道的都告诉你。注意我这里提及的问题只会发生在能正确处理 application/xhtml+xml MIME 类型的用户代理中,而因此 XHTML 被作为 XML。这也可能是这里不提及 XHTML 的早期使用的原因很少有人使用这样的浏览 器,所以几乎不会有人因只伺服为 text/

3、html 的 XHTML 所烦忧。今天,实际上把 XHTML 伺服为 application/xhtml+xml 正慢慢变得平常。我所知道的理由有两个:1. 使用 Firefox,Mozilla,Opera。Safari 和其他兼容 XHTML 浏览器的人数增加了很多,所以你不再仅仅 为自己和伙伴这样做。嗯。或许你就这样做,当将影响更多人。 2. 在 web 开发者之间,对 XHTML 的真正面目是什么的觉醒越来越多了。使用 XHTML 已经有多次多时 的热烈的讨论,尤其是伺服为 text/html 的时候。如果你参与了任何一次讨论,你知道我在说什么。假如你,像我,决定实现某些类型的 cont

4、ent negotiation 和在传送 XHTML 的时候使用正确的媒体类型, 你需要知道什么能(和将)在你发布的文档中发生,并且知道怎样避免问题的发生。对于对 content negotiation 同进行 content negotiation 的脚本例子有兴趣的读者,我推荐你阅读 Content Negotiation 和 Serving up XHTML with the correct MIME type(本站早有翻译:使用正确的 MIME 类型伺服 XHTML) 。 还有很多这种类型的文章,但这是我读到的最精彩的两篇。每一个基本的教程都有一些 HTML 和 XHTML 的明显区别

5、:元素和属性名字使用小写,属性值总要用引 号。不要使用简化属性,确保所有的元素都有结束标签和没有不正确的嵌套等等。但是,当 XHTML 伺 服为 application/xhtml+xml 时还需要知道更多东西。 良构是必须的文档必须是良构(well-formed)的 XML(跟合法的(valid)XHTML 不必然相同) 。对错误没有妥协,没 有机会。如果文档不良构,符合标准的浏览器(当前我知道 Mozilla,Firefox,Netscape,Camino,Opera,Safari 和 OmniWeb相当多的浏览器除了 IE)将会显示 一条错误信息和在某种方式或其他方式上中止处理文档。此外

6、,这还意味着不再未编码的“)的支持是有担保的。其他的可能完全被忽略或者直接输 出。比如,如果 XHTML 文档包含如 或者”的实体,Safari 会生成。直接地。Opera 反而选择忽略未知的 实体,同时 Mozila 家族会认得这些实体并且就像 HTML 中“如果文档引用公共的映射浏览器伪 DTD 目录 中的标识符并且没有单独声明的文档” 来处理。使用 UTF-8 字符编码是备受推荐的最好实践,让你(几乎)可以使用你需要键入文档的任意字符,不需 要实体或者字符编号。如果你不能或不愿使用 UTF-8,数字式的字符编号是可以支持和安全使用的。 SGML 式注释的内容可能会被忽略SGML 注释(H

7、TML 风格注释, )可能会(并且会)被浏览器当作注释,就算是在 script 或者 style 元素内部使用。在 HTML 中,普遍地把 sript 和 style 块的内容装入注释中,为的是在不认识 script 或者 style 元素的浏览 器中隐藏他们,并且在页面上把其内容生成平白文本。在 XHTML 中,这样做会引起浏览器忽略掉注释里的任何内容。在老旧的浏览器中隐藏 script 和 style 元素的实践是退回到 1990 年代中期的一个习惯。我的经验是,有如 此表现的浏览器是十分罕见的,所以你可以安全地忽略它们,并且停止在脚本和样式中装入 SGML 式注 释,就算你使用的是 HT

8、ML。 脚本和样式元素的内容也被当作 XML样式和脚本元素是 PCDATA(parsed character data,解析字符数据)块,不是 CDATA(character data, 字符数据)块。因此,在其内看起来像 XML 的任何东西都会被当作 XML 来解析,并且会引发错误除非 是良构的。为了在 stylee 或者 script 块中使用 。 )需要以 text/html 发送的文档中,CDATA 部分的起始和结束标签需要注释掉,以便在不能处理 CDATA 部 分的浏览器中隐藏:1. 1. 2. /* */ 5. 如果要确保够老的浏览器隐藏 CDATA 部分,需要使用更为复杂的方法,

9、像在 Ian Hickson 的 Sending XHTML as text/html Considered Harmful 中描述的那样:1. 1. 2. */ 5. 一个更好的办法可能是在发送 text/html 的文档前使用 content negotiation 脚本来删除任何 CDATA 部分。当然,最聪明和安全的途径是把所有的 CSS 和 JavaScript 都移动到外部文件中,但不总是现实的做法。 没有会自动补全的元素在 HTML 中,假如表格的 tbody 元素漏写的话浏览器会自动补全,而 XHTML 不会。如果你没有清楚地 添加 tbody,它就不会出现。在编写 CSS 选

10、择器和 JavaScript 的时候请铭记在心。 用 document.write 编写的脚本不再工作在 XHTML 中使用 JavaScript,document.write 不会工作。Ian Hickson 在 Why document.write() doesnt work in XML(本站早已翻译:为什么 document.write 在 XML 中不工作)解释了原因。你需要使用 document.createElementNS()代替。关于更多可以在 Experts Exchange 中的论坛主题中找到。这也是 Google AdSense 不在 XHTML 中工作的原因之一。那些

11、希望以 application/xhtml+xml 伺服 XHTML 并且使用 Google 广告的人,这儿有一个解决办法:Simon Jessey 的 Making AdSense work with XHTML(本站早有翻译:使 Google 广告 AdSense 在 XHTML 中工作) 。尽管有点麻烦,但还是工作了 (我在这里也使用了) ,同时被 Google 所认可。 引入样式元素在 XHTML 中,为了兼容定义 CSS 规则的 XML 方法,你应该使用 XML 样式表声明(访问 XHTML 1.0, Second Edition: Referencing Style Element

12、s when serving as XML 的 XML 样式表声明和 Associating Style Sheets with XML documents 的 xml-stylesheet 处理说明) 。要载入外部 CSS 文件,我们需要使用 style 元素, 同时应该使用 XML 样式表声明来引入样式元素。为此,使用 id 属性给 style 元素一个分解的标识符,然 后在 XML 样式表声明中引入该标识符:1. 2. 3. 6. 7. 8. XML stylesheet declaration 9. 10. import “stylesheet2.css”; 11. 12. 我不知道在

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

14、是 CSS 中所有东西都保持小写。 有挑战,但不是不可能当我开始为兼容的浏览器伺服 XHTML 为 application/xhtml+xml 时,在作出决定前假如我能读到想这篇一 样的文章,或许我的头痛可以减轻不少。我甚至考虑使用 HTML 4.01 Strict。虽然如此,我还是从经验中 学到不少,而学习总是一个好东西。正确地使用真正的 XHTML,十分希望这篇文章能为你提供一些更有用的信息,并且可以为是否需要走这 条路提供更多有根据的决定。HTML 和 XHTML 可能比我在这里提到的还有更多地不同,所以在这里把你在使用 application/xhtml+xml 的 XHTML 时遇到的问题提出来,如果你知道任何的错误或者忽略,务必告诉我。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号