`
caibinghong
  • 浏览: 150096 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

XHTML 1.0 Transitional WEB标准产生的问题

 
阅读更多

曾经流行一时的HTML标记语言已经被官方认为过时了,将要接任它的是XHTML(http://www.w3.org/MarkUp/)。如果你的网站按照较严格的XHTML规则书写,那么这个网站将在不同的浏览器中保持一致的样式。并且你可以认为在未来浏览器的版本升级变化中仍然保证网站外观的一致性。同样你也会得到跨浏览器,跨设备以及跨平台的一致性支持。

XHTML有如下两个主要目标:

  • 将文档的结构(使用XHTML标记语言)和表现(使用CSS)分开
  • HTML作为一种XML书写

对于第一个目标,W3C删除了一些HTML的标记以及属性,例如<font>bgcolor,因为这些标记或属性并不是文档结构中的一部分,而只是用来描述文档应该如何被显示,因此应该定义在CSS文件中而不是HTML中。同样,某些特定的标记内容并不一定要显示成特定的样子。比如,<h1>标记里内容显示的字号完全可能小于<p>里的内容,这些取决于CSS中的定义。当然,<h1>一般用于显示一篇文档的标题信息,它的重要程度一般也应该高于<p>中的内容,所以通常的浏览器都会以一个较大的字号来显示。

对于第二个目标,XHTML将严格遵守XML的严格语法。可以说XHTMLHTML依照XML语法重构的结果。换句话说,当你编写XHTML文档的时候,其实是在编写一份特化了的XML文档。XML文档有着比HTML严格多了的语法,这些将在本文稍后部分讨论。

XHTML有三个版本:

  • XHTML 1.0 Transitional
  • XHTML 1.0 Strict
  • XHTML 1.0 Frameset

XHTML 1.0 Transitional包含HTML4.01的所有标记以及属性,是一种不是那么严格的XHTML,目的是使现有的HTML开发者更容易的接受并使用XHTML

XHTML 1.0 Strict就是严格版本的XHTML了,开发者必须要严格遵守文档的结构与表现分开的规则,也就是说需要用CSS控制页面的显示而不是使用<font>bgcolor之类的标记或属性。

XHTML 1.0 Frameset用于把文档分割成几个桢以显示不同的内容。(XHTML 1.0 TransitionalStrict 页面不允许包含<frameset> 标记)。

这里不再赘述更多有关XHTML的介绍,如果感兴趣,可以使用Google或者MSN Search找到很多相关资料或是详细介绍。也欢迎在本贴下留下您的评论与问题,让我们共同探讨。接下来是一些书写XHTML的基本规则。

一个XHTML页面必须是一个组织完善的并且合法的XML文档。XHTML 1.0 recommendation 的第四部分详细介绍了HTMLXHTML的若干不同点,正力柱来最为重要的有如下十条:

  1. 页面必须包含一个合法的XHTML DOCTYPE

一个合法的XHTML页面必须再起其他内容出现前包含XHTML DOCTYPE定义。当你在Visual Studio 2005或者Microsoft Visual Web Developer中创建一个新的ASP.NET页面时。一个合法的XHTML 1.0 Transitional DOCTYPE已经被自动加入到页面当中了。下面是四种标准的XHTML DOCTYPE

XHTML 1.0 Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

XHTML 1.0 Strict

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

XHTML 1.0 Frameset

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 

XHTML 1.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

不同的XHTML DOCTYPE也将决定浏览器将如何显示某些特定的内容,这些将会在今后几篇文章中讨论。

  1. 页面的根节点必须指定XHTML的命名空间。

<html>标记必须指定一个默认的命名空间。例如一个XHTML 1.0 Transitional页面应该有如下声明:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
  1. 所有的标记以及属性名称必须为小写字母。

XML语法是大小写敏感的,所以<div><DIV>是不同的标记,当然,只有<div>是合法的XHTML标记。

  1. 属性值必须书写于一对引号内。

引号可以为双引号,也可为单引号。如下声明是不合法的:

<href=Page.aspx>Link</a> 

 

这里缺少了包围Page.aspx的引号,应当如下书写:

<href="Page.aspx">Link</a> 

 

Visual Studio 2005 Visual Web Developer可以自动把属性值用引号括起来。这一功能可以在ToolsOptionsFormat中设定。

  1. 所有非空的标记必须成对出现。

也就是说,单独的<p>或者<br>都是不合法的,需要有相应的闭合标记。
这里特别要说明的是常用的
<br>标记。满足XHTML语法的换行标记应该为<br></br>或者简写为<br />,然而在一些浏览器中会把<br></br>中的</br>视为错误拼写的<br>标签,并尝试加以更正为另一个<br>,这样就造成了两个换行。为了避免这些不必要的麻烦,推荐书写为<br />。同样需要注意的是有些浏览器不能识别<br/>(注意'/'前没有空格),所以不要忘记在'/'前加上一个空格。

  1. 标记不可以重叠。

标记可以嵌套,但是不能重叠。如下声明是合法的:

<b><i>This is bold and italic</i></b> 

 

而如下包含重叠的声明是不合法的:

<i><b>This is bold and italic</i></b> 
  1. 属性不可以简写。

所有的属性必须指定值。例如一种常见的写法

<input type="checkbox" checked />

XHTML中是不合法的,因为checked属性没有值与其对应。应该改写成

<input type="checkbox" checked="checked" />
  1. 使用id属性,而不是name属性。

HTML中,name属性可以用来标识identify <a><applet><form><frame><iframe><img> <map>标记。XHTML 1.0 StrictXHTML 1.1 standards已经删除了对name属性的支持。我们应该使用id唯一标识一个页面上的元素。

  1. 属性值中空格的处理。
    属性值中开头和结尾的所有空格将被忽略。属性值中词与词之间的多个空格或换行符将被认为成单个空格。例如如下两个属性的值相同:
    <input value="HTML is out" />
    <input value="   HTML        is
         out    "
     />
  2. <script><style>标记的内容必须被包围在CDATA段中。

例如:

<script type="text/javascript"> 
<![CDATA[ 
function func(a, b) 
{
if (a < b) 
   return true
}
 
]]> </script>

注意到上面的Script中有小于号(<)出现,如果不将其包围在CDATA段中,那么小于号(<)以及后面的内容会被误认为是另一个XHTML标记的开始,引起一些不必要的错误。

需要注意的是IE认为在<script>标记中的CDATA段是不合法的,并会引发脚本错误,这个问题可以使用JavaScript注释来避免:

<script type="text/javascript"> 
/* <![CDATA[ */
function func(a, b) 
{
 if (a < b) 
   return true
}
 
/* ]]> */
</script>

或者

<script type="text/javascript"> 
// <![CDATA[ 
function func(a, b) 
{
    if (a < b) 
      return true
}

// ]]>
</script> 

当然,最好的方法是把脚本和CSS放置于单独的文件中并在XHTML页面中加上引用。


附:

问题一、标准模式下document.body.clientHeight 与 document.body.srcollTop取不到需要的值的问题

在Quirks渲染模式下<body>作为文档的根,所以可以用document.body.clientHeight得到文档的高度。而在Standard渲染模式下,<html>作为文档的根,需要使用document.documentElement.clientHeight才可以得到。此时document.body的高度和宽度都为0

解决办法:使用document.documentElement 代替document.body

问题二、CSS定义在 loose.dtd和xhtml1-transitional.dtd下无效的问题:
如:

body{
SCROLLBAR-FACE-COLOR: #f2f2f2; 
SCROLLBAR-HIGHLIGHT-COLOR: #ffffff; 
SCROLLBAR-SHADOW-COLOR: #999999; 
SCROLLBAR-3DLIGHT-COLOR: #999999; 
SCROLLBAR-ARROW-COLOR: #999999; 
SCROLLBAR-TRACK-COLOR: #ff0000; 
SCROLLBAR-DARKSHADOW-COLOR: #ffffff;

overflow-y:hidden
}

解决办法就是

html,body{
SCROLLBAR-FACE-COLOR: #f2f2f2; 
SCROLLBAR-HIGHLIGHT-COLOR: #ffffff; 
SCROLLBAR-SHADOW-COLOR: #999999; 
SCROLLBAR-3DLIGHT-COLOR: #999999; 
SCROLLBAR-ARROW-COLOR: #999999; 
SCROLLBAR-TRACK-COLOR: #ff0000; 
SCROLLBAR-DARKSHADOW-COLOR: #ffffff;

overflow-y:hidden
}

出处:http://www.techmango.com/blog/article.asp?id=403

0
0
分享到:
评论

相关推荐

    XHTML1.0

    - **初始版本**:XHTML 1.0 最初于 2000 年 1 月 26 日作为 W3C 推荐标准发布。 - **第二版修订**:为了修正第一版中的错误,并根据社区反馈进行调整,XHTML 1.0 的第二版修订版于 2002 年 8 月 1 日发布。这一版本...

    XHTML 1.0帮助文档

    **XHTML 1.0:Web标准化开发的基石** XHTML 1.0,全称为“Extensible HyperText Markup Language 1.0”,是HTML的一个扩展版本,它结合了HTML的易读性和XML的严格语法规则。XHTML 1.0的出现,是为了推动Web内容的...

    HTML4.01XHTML1.0标签参考手册xhtmlreference.rar

    HTML4.01和XHTML1.0是两种在网页设计中广泛使用的标记语言标准,它们为构建结构化的Web页面提供了规范。这两种语言都基于HTML(HyperText Markup Language),但XHTML结合了HTML的易用性和XML(Extensible Markup ...

    XHTML1.0+CSS2.0中文手册

    3. **模块化**:XHTML1.0分为三个模块:Strict、 Transitional 和 Frameset,分别针对不同需求提供更精确的文档类型定义(DTD),方便开发者选择适合的文档结构。 4. **更好的跨平台兼容性**:XHTML1.0的设计目标是...

    HTML 4.01 XHTML 1.0 参考手册(HTML版)

    随着技术的发展,虽然新的HTML5标准已经推出,但HTML 4.01和XHTML 1.0仍然是许多现有网站的核心,并且在学习Web开发时依然不可或缺。通过深入研究"HTML 4.01 XHTML 1.0 参考手册",开发者可以全面理解这两种语言的...

    XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition)

    XHTML 1.0是Web技术发展历程中的一个里程碑,它不仅改善了网页的可维护性和可访问性,也为Web标准的未来奠定了基础。尽管现在XHTML 1.0已不再是最新的标准,但理解它的概念和实践对于深入理解现代Web开发仍然具有...

    (转)W3C XHTML 1.0 Strict 标准模板 (GBK,UTF-8)

    XHTML 1.0分为三种不同的文档类型定义(DTDs): Transitional、Frameset 和 Strict。其中,Strict DTD是最严格的,它要求开发者遵循严谨的语法规则,禁止使用某些非结构化的HTML元素和属性,以促进网页的清晰性和...

    HTML 4.01 & XHTML 1.0 参考手册

    HTML 4.01 和 XHTML 1.0 是两种重要的网页标记语言,它们构成了Web开发的基础。本参考手册详尽地介绍了这两种语言的核心概念、元素和属性,旨在帮助开发者理解和运用这些技术创建功能丰富的交互式网页。 HTML 4.01...

    HTML 4.01 &XHTML 1.0 标签参考手册

    2. **严格、过渡和框架集**:XHTML 1.0有三种不同的版本:严格版(Strict)强调结构,过渡版(Transitional)允许使用一些传统HTML元素,框架集版(Frameset)支持框架布局。 3. **命名空间**:XHTML引入了XML的命名...

    html4.01/xhtml1.0标签

    HTML4.01和XHTML1.0是两种在互联网上构建网页结构的标准,它们都是超文本标记语言(HTML)的版本。HTML是用于创建网页的标记语言,它定义了网页的布局、内容和功能。XHTML则是一种更严格、更纯净的HTML版本,它结合...

    精通Web标准网页布局 XHTML+CSS+JavaScript.rar(课本重点 源码)

    xhtml-transitional.html XHTML1.0 Transitional的文档的代码 xhtml.html 一个简单的XHTML示例 xhtml-show.html XHTML与浏览器 xhtml.html 软件开发的XHTML代码

    WEB开发 之 XHTML 验证.docx

    2. 过渡DTD(XHTML 1.0 Transitional): 过渡DTD允许使用一些在严格DTD中被禁用的元素和属性,比如表格布局、框架等,方便从HTML向XHTML过渡。DOCTYPE声明如下: ``` &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

    WEB开发 之 XHTML 简介.docx

    W3C(World Wide Web Consortium)在2000年1月26日发布XHTML 1.0作为推荐标准,以实现向XML的平滑过渡。XHTML 1.0同时融合了HTML的简洁特性和XML的数据处理能力,提供了一种更为规范的标记语言,用于创建更结构化、...

    w3c标准 html标准验证 xhtml标准验证 css标准验证

    1. XHTML 1.0 文件类别宣告:XHTML 1.0 提供了三种文档类型定义(DTD),分别是过渡标准(Transitional)、框架标准(Frameset)和严格标准(Strict)。过渡标准允许使用一些非标准或遗留的HTML元素,而严格标准则...

    用web标准设计网站

    ### 用Web标准设计网站——详解DOCTYPE与名字空间 #### 第1天:选择什么样的DOCTYPE 在着手构建符合现代Web标准的网站时,首先需要明确的一个关键要素是文档类型声明(DOCTYPE)。这一声明不仅有助于告知浏览器...

    简析ASP.NET网站的创建与发布过程

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; ... ``` 其中`&lt;%@ Page %&gt;`指令...

    xhtml

    XHTML的诞生是为了让网页更符合Web标准,增强跨平台和跨浏览器的兼容性。 #### 二、DOCTYPE的重要性及类型 在深入探讨XHTML之前,了解DOCTYPE(文档类型)的作用至关重要。DOCTYPE声明位于XHTML文档的最顶部,用于...

Global site tag (gtag.js) - Google Analytics