XHTML 2.0新功能抢先预览
互联网 发布时间:2008-10-17 18:55:37 作者:佚名
我要评论
在浏览器能处理下一代的 XHTML 之前先从这个更丰富的内容结构中获利
XHTML 2 规范尚未完成,但是它相对 XHTML 1 已经具有了许多优势,其中包括更丰富的结构特性,这使得 XHTML 2 作为一种编辑格式将比其前任能更好地充当单一资源发布系统的中心模式。执行大型或小型发布
更丰富的结构
许多需要在 XML 中存储内容的发布者都知道使用现有的标准模式(我指的是 W3C Schema、RELAX NG 模式或者 DTD)要比自己从头创建一个更好。他们看了 DocBook 后发现太复杂了,他们看了 HTML 或 XHTML 1 之后又发现太简单了。对于许多发布者来说,XHTML 2 很好地平衡了 DocBook 的丰富性和 XHTML 1 的简单性,这种平衡使之成为存储内容的一种极佳的格式,不论内容是否需要被转换成其他的格式以供在各种媒体中传递。
清单 1 包含了一个示例 XHTML 1 文件,并以缩进格式表示了该文件的结构。
清单 1. XHTML 1 文件的结构
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Web page</title>
</head>
<body>
<h1>My Web Page</h1>
<p>Here is my Web page.</p>
<h2>Section 1 of my Web page</h2>
<p>Here is section 1 my Web page.</p>
<h3>Section 1.1 of my Web page</h3>
<p>Here is a subsection of my Web page.</p>
<h2>Section 2 of my Web page</h2>
<p>Here is section 2 of my Web page.</p>
</body>
</html>
我们可以看到 body 元素内部并没有太多的缩进格式,这是因为该元素中没有多少结构。这个文档的树形表示会显示出一个带有许多子元素而没有孙子元素的 body 元素,段落 “Here is a subsection of my Web page” 将作为主 h1 标题 “My Web Page” 的兄弟元素显示出来。标记中只有一个地方指示出这个段落是一个子段的一部分:它前面最近的题头,h3,比前一个题头的数字大。容器元素不会把任何作为标题的题头与其内容组合在一起,除非让 body 元素把 h1 header 题头与 Web 页面其余可显示的内容封装在一起。我们可以使用一个 div 元素把每个题头/内容(header/content)组合封装在一起,不过 div 元素与 span 元素一样是一种相当通用的分组元素。它可以用于许多目的,比如说指示一些特定的段落形成一个菜单或者一个侧栏或者 Web 页面中的另一个可视表示元素,因此我们不能假定其表示指示内容的一个结构单元。
XHTML 2 中的新增的 section 和 h 元素结合在一起能使我们创建一个更丰富的结构,从而使内容更易于重用。清单 2 演示了与 清单 1 中的 body 元素等价的 XHTML 2 body 元素。
清单 2. XHTML 2 body 元素
<body>
<section>
<h>My Web Page</h>
<p>Here is my Web page.</p>
<section>
<h>Section 1 of my Web page</h>
<p>Here is section 1 my Web page.</p>
<section>
<h>Section 1.1 of my Web page</h>
<p>Here is a subsection of my Web page.</p>
</section>
</section>
<section>
<h>Section 2 of my Web page</h>
<p>Here is section 2 of my Web page.</p>
</section>
</section>
</body>
在这一版本的代码中,“Here is a subsection” 段落是第一个 section 元素的曾孙元素,这个 section 元素中的 “My Web Page” h 元素显示了其主标题 — 正应该如此!
这种丰富结构的优势之一(也是 XHTML 2 比 XHTML 1 更适合充当单源发布系统的中心格式的一个关键原因)就是更容易进行流处理。如果您需要处理大量的输入而无法在处理之前把这些输入加载到内存中 — 比如说,如果要为 CD-ROM 准备内容 — 处理会更容易计算出每个 sectiong 元素在 XHTML 2 文档中的哪里结束。比如说,假设我们想要调出所有标题中含有单词 “Beagle” 的部分。找到这些标题足够简单,但是要在 XHTML 1 中决定 section 在哪里结束就不是一般的困难了。对这种 XHTML 的处理是否使用了基于流的接口、Xquery 或者 XSLT,清楚地定义 section 的结束位置可以使提取简单很多。
现在,设想您提取这些 section 因为您将把他们加入到关于 beagle 的新发布中,而且调出的每一个 section 都有一个 h3 元素作为其题头。标有数字的 XHTML 1 题头,如 h3,在 XHTML 2 中仍然合法,但是如果新的发布将使用这些元素作为一个特别章节中的主 section,或者子 section 会怎样呢?您需要回去并把 h3 元素修改为 h2 元素或者 h4 元素,或者任何能在新上下文中识别自己角色的元素。如果它们在原始文档中是 XHTML 2 的 h 元素,通过每个 section 祖先元素的数字指示出它们角色的等级(比如说,清单 2 中的 section 1.1 h 元素有三个 section 头祖先元素,而 “My Web Page” h 元素只有一个),那么您可以把它们插入未经修改的新文档中,通过新文档的 section 元素的嵌套排列指示出其角色。CSS、XSLT 和其他 XML 处理工具和标准都提供了一种根据嵌套层次处理同名元素的方法,因此我们不会错过作为 XHTML 1 题头一部分的数字。我们考虑有 h2 和 h3 元素但是没有 h1 元素,或者有h1 和 h3 元素但是没有 h2 元素的 (X)HTML 文档的数目时,很明显太多人不会使用它们指示合适的等级。
在 XHTML 2 中,p 元素中还可以有更多的结构。我想介绍一些语句中的示例代码,比如说下面这个:
print "Hello? World?";
如果我想要在示例代码之后继续该语句,XHTML 1 会强制我把语句分成两部分放在两个不同的 p 元素中,不过从语义上说它们位于同一个语句中。XHTML 2 让我们把示例代码、无序列表和编号列表和许多其他块元素放置在一个 p 元素中,让我们的标记能更准确地反映出文档的结构。
从表示标记到结构型标记还要一小步,把 hr 元素重命名为 separator。HTML 工作小组(HTML Working Group)发现其原始名称(代表 horizontal rule)经常落入结构型标记和表示标记之间的灰色区域。他们收到了一些使用亚洲国家语言的用户发出的 vertical rule 请求,他们看到许多水平分离器并不是真正的规则(HTML 工作小组的主席 Steven Pemberton 作了一个陈述,其中指出了 James Joyce 的 Ulysses 中的几个不同的变种;请参阅 参考资料 以获得到该陈述的链接)。这使得他们把 hr 元素重命名为能更准确地返回其使用的名称并在陈述中允许了更强的灵活性。
许多需要在 XML 中存储内容的发布者都知道使用现有的标准模式(我指的是 W3C Schema、RELAX NG 模式或者 DTD)要比自己从头创建一个更好。他们看了 DocBook 后发现太复杂了,他们看了 HTML 或 XHTML 1 之后又发现太简单了。对于许多发布者来说,XHTML 2 很好地平衡了 DocBook 的丰富性和 XHTML 1 的简单性,这种平衡使之成为存储内容的一种极佳的格式,不论内容是否需要被转换成其他的格式以供在各种媒体中传递。
清单 1 包含了一个示例 XHTML 1 文件,并以缩进格式表示了该文件的结构。
清单 1. XHTML 1 文件的结构
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Web page</title>
</head>
<body>
<h1>My Web Page</h1>
<p>Here is my Web page.</p>
<h2>Section 1 of my Web page</h2>
<p>Here is section 1 my Web page.</p>
<h3>Section 1.1 of my Web page</h3>
<p>Here is a subsection of my Web page.</p>
<h2>Section 2 of my Web page</h2>
<p>Here is section 2 of my Web page.</p>
</body>
</html>
我们可以看到 body 元素内部并没有太多的缩进格式,这是因为该元素中没有多少结构。这个文档的树形表示会显示出一个带有许多子元素而没有孙子元素的 body 元素,段落 “Here is a subsection of my Web page” 将作为主 h1 标题 “My Web Page” 的兄弟元素显示出来。标记中只有一个地方指示出这个段落是一个子段的一部分:它前面最近的题头,h3,比前一个题头的数字大。容器元素不会把任何作为标题的题头与其内容组合在一起,除非让 body 元素把 h1 header 题头与 Web 页面其余可显示的内容封装在一起。我们可以使用一个 div 元素把每个题头/内容(header/content)组合封装在一起,不过 div 元素与 span 元素一样是一种相当通用的分组元素。它可以用于许多目的,比如说指示一些特定的段落形成一个菜单或者一个侧栏或者 Web 页面中的另一个可视表示元素,因此我们不能假定其表示指示内容的一个结构单元。
XHTML 2 中的新增的 section 和 h 元素结合在一起能使我们创建一个更丰富的结构,从而使内容更易于重用。清单 2 演示了与 清单 1 中的 body 元素等价的 XHTML 2 body 元素。
清单 2. XHTML 2 body 元素
<body>
<section>
<h>My Web Page</h>
<p>Here is my Web page.</p>
<section>
<h>Section 1 of my Web page</h>
<p>Here is section 1 my Web page.</p>
<section>
<h>Section 1.1 of my Web page</h>
<p>Here is a subsection of my Web page.</p>
</section>
</section>
<section>
<h>Section 2 of my Web page</h>
<p>Here is section 2 of my Web page.</p>
</section>
</section>
</body>
在这一版本的代码中,“Here is a subsection” 段落是第一个 section 元素的曾孙元素,这个 section 元素中的 “My Web Page” h 元素显示了其主标题 — 正应该如此!
这种丰富结构的优势之一(也是 XHTML 2 比 XHTML 1 更适合充当单源发布系统的中心格式的一个关键原因)就是更容易进行流处理。如果您需要处理大量的输入而无法在处理之前把这些输入加载到内存中 — 比如说,如果要为 CD-ROM 准备内容 — 处理会更容易计算出每个 sectiong 元素在 XHTML 2 文档中的哪里结束。比如说,假设我们想要调出所有标题中含有单词 “Beagle” 的部分。找到这些标题足够简单,但是要在 XHTML 1 中决定 section 在哪里结束就不是一般的困难了。对这种 XHTML 的处理是否使用了基于流的接口、Xquery 或者 XSLT,清楚地定义 section 的结束位置可以使提取简单很多。
现在,设想您提取这些 section 因为您将把他们加入到关于 beagle 的新发布中,而且调出的每一个 section 都有一个 h3 元素作为其题头。标有数字的 XHTML 1 题头,如 h3,在 XHTML 2 中仍然合法,但是如果新的发布将使用这些元素作为一个特别章节中的主 section,或者子 section 会怎样呢?您需要回去并把 h3 元素修改为 h2 元素或者 h4 元素,或者任何能在新上下文中识别自己角色的元素。如果它们在原始文档中是 XHTML 2 的 h 元素,通过每个 section 祖先元素的数字指示出它们角色的等级(比如说,清单 2 中的 section 1.1 h 元素有三个 section 头祖先元素,而 “My Web Page” h 元素只有一个),那么您可以把它们插入未经修改的新文档中,通过新文档的 section 元素的嵌套排列指示出其角色。CSS、XSLT 和其他 XML 处理工具和标准都提供了一种根据嵌套层次处理同名元素的方法,因此我们不会错过作为 XHTML 1 题头一部分的数字。我们考虑有 h2 和 h3 元素但是没有 h1 元素,或者有h1 和 h3 元素但是没有 h2 元素的 (X)HTML 文档的数目时,很明显太多人不会使用它们指示合适的等级。
在 XHTML 2 中,p 元素中还可以有更多的结构。我想介绍一些语句中的示例代码,比如说下面这个:
print "Hello? World?";
如果我想要在示例代码之后继续该语句,XHTML 1 会强制我把语句分成两部分放在两个不同的 p 元素中,不过从语义上说它们位于同一个语句中。XHTML 2 让我们把示例代码、无序列表和编号列表和许多其他块元素放置在一个 p 元素中,让我们的标记能更准确地反映出文档的结构。
从表示标记到结构型标记还要一小步,把 hr 元素重命名为 separator。HTML 工作小组(HTML Working Group)发现其原始名称(代表 horizontal rule)经常落入结构型标记和表示标记之间的灰色区域。他们收到了一些使用亚洲国家语言的用户发出的 vertical rule 请求,他们看到许多水平分离器并不是真正的规则(HTML 工作小组的主席 Steven Pemberton 作了一个陈述,其中指出了 James Joyce 的 Ulysses 中的几个不同的变种;请参阅 参考资料 以获得到该陈述的链接)。这使得他们把 hr 元素重命名为能更准确地返回其使用的名称并在陈述中允许了更强的灵活性。
相关文章
文章介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,本文主要给大家介绍HTML img标签和超链2025-06-20- HTML meta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引,本文给大家介绍HTML中meta2025-06-20
input 标签主要用于接收用户的输入,随 type 属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTML input 标签,感兴趣的朋友一起看看吧2025-06-20
这篇文章主要介绍了html 滚动条滚动过快会留下边框线的解决方案,解决方法很简单,可以将 dialog 单独拿出来别放在 transform 的子元素里,需要的朋友可以参考下2025-06-09- 本文将介绍如何使用<img>标签在 HTML 中添加图片,并展示一些常见的用法和技巧,通过本文的介绍,应该掌握了在 HTML 中添加和调整图片的基础知识,感兴趣的朋友一起看2025-05-16
- HTML表格用于在网页上展示数据,通过标签及其相关标签来创建,表格由行和列组成,每一行包含一个或多个单元格,单元格可以包含文本、图像、链接等元素,本文将详细介绍HTML表格2025-03-12
- 本文介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,感兴2025-02-24
在 Web 开发中,文本的视觉效果是提升用户体验的重要因素之一,通过 CSS 技巧,我们可以创造出许多独特的效果,例如文字镂空效果,本文将带你一步一步实现一个简单的文字镂空2024-11-17
在Html中,a标签默认的超链接样式是蓝色字体配下划线,这可能不满足所有设计需求,如需去除这些默认样式,可以通过CSS来实现,本文给大家介绍Html去除a标签的默认样式的操作代码2024-09-25- 在HTML中,可以通过设置CSS的resize属性为none,来禁止用户手动拖动文本域(textarea)的大小,这种方法简单有效,适用于大多数现代浏览器,但需要在老旧浏览器中进行测试以确保2024-09-25






最新评论