假如你,像我,决定实现某些类型的content negotiation和在传送XHTML的时候使用正确的媒体类型,你需要知道什么能(和将)在你发布的文档中发生,并且知道怎样避免问题的发生。对于对content negotiation同进行content negotiation的脚本例子有兴趣的读者,我推荐你阅读Content Negotiation和Serving up XHTML with the correct MIME type(本站早有翻译:使用正确的MIME类型伺服XHTML)。还有很多这种类型的文章,但这是我读到的最精彩的两篇。
在XHTML中使用JavaScript,document.write不会工作。Ian Hickson在Why document.write() doesn’t work in XML(本站早已翻译:为什么document.write在XML中不工作)解释了原因。你需要使用document.createElementNS()代替。关于更多可以在Experts Exchange中的论坛主题中找到。
这也是Google AdSense不在XHTML中工作的原因之一。那些希望以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 Elements when serving as XML的XML样式表声明和Associating Style Sheets with XML documents的xml-stylesheet处理说明)。要载入外部CSS文件,我们需要使用style元素,同时应该使用XML样式表声明来引入样式元素。为此,使用id属性给style元素一个分解的标识符,然后在XML样式表声明中引入该标识符:1. ?xml-stylesheet href=”stylesheet1.css” type=”text/css”? 2. ?xml-stylesheet href=”#stylesheet2” type=”text/css”? 3. !DOCTYPE html 4. PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” 5. “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd” 6. html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en” 7. head 8. title XML stylesheet declaration /title 9. style type=”text/css” id=”stylesheet2” 10. @import “stylesheet2.css”; 11. /style 12. /head 我不知道在实际中究竟有多必要,比且不使用XML样式表声明的话会有什么问题。或许有人会指点我的。 CSS的应用规则有些不一样
CSS应用到body的性质(property)并不应用到XHTML的整个文档。最值得注意的是应用背景颜色或者图片。在HTML中,应用到body元素的背景将会覆盖整个页面。在XHTML中,你必须同时样式化html。在Juicy Studio的 CSS body Element Test中有这个行为的演示。