首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

结合使用 Drupal、HTML5 和微数据(1)

结合使用 Drupal、HTML5 和微数据(1)

简介    2011 年 5 月,Google、Yahoo 和 Bing 三大引擎巨头联合推出了 schema.org,现在所有人都在谈论结构化数据。Schema.org 是搜索引擎理解网页的一种新途径。如果 Web 内容作者在他们的页面上添加了一点微数据,比如一些词汇表术语,他们的搜索结果会在以上三种搜索引擎中得到更好的显示。
    额外的标记并没有改变已经实现 schema.org 的许多站点上显示搜索结果的方式。但 Web 内容作者仍然希望为他们的页面打上标记,并已准备好让三大搜索引擎巨头使用其内容。
对于没有试验过向 HTML 添加结构化数据的不同语法的 Web 作者,Schema.org 是一个挑战。这些语法包括:
  • 微格式
  • RDFa
  • 微数据
  更具挑战性的是,Google (对众多 Web 作者最有影响力的搜索引擎)表明它将只处理微数据。作为上述三种语法中最新的一种语法,微数据尚未获得很多工具的支持。
本文将介绍如何使用 Drupal 向页面添加微数据。准备好您的内容,以便可以在应用程序(比如 Google 的 Rich Snippets)中使用它们。
本文使用的源代码。
什么是微数据?常用缩写词
  • FOAF:朋友的朋友
  • RDF:资源描述框架
  • RDFa:属性方面的 RDF

微数据是向页面添加结构化数据的一种简便方式。它定义了一些属性,比如 itemtype 和 itemprop,可将这些属性放在 HTML 标签上,以只是页面是关于哪方面内容的。微数据的概念由 HTML 5 规范的编辑 Ian Hickson 于 2009 年提出。但这个概念的来源要比这个时间早得多。
微数据是以 RDFa 为基础的,它是采用 HTML 形式放置 RDF 的一种方式。2004 年,Mark Birbeck 在一份 W3C 笔记中提到 RDFa。后来,这个概念被写入 XHTML 的下一版本中。RDFa 引入了几个新的 HTML 属性,比如 property 和 about,并重用了一些属性,比如 rel。
RDFa 功能很强大,但由于有时颇为复杂的属性交互,作者很难知道他们的 RDFa 是否正确。RDFa 还继承了 XML 的一些功能,比如很容易混淆的命名空间前缀。
微格式是 XHTML 中另一版本的结构化数据,它由一群草根开发人员在一年多后推出。与 RDFa 相比,微格式重用了 Web 内容作者已经习惯的现有 XHTML 属性,比如链接上的 rel 属性。微格式还在这些属性中添加了一点语义。人们只注重标记可见内容,很容易滥用不可见的内容,或者让不可见内容与可见内容失去同步。
微格式存在一个问题,即没有一种解析它们的通用方式。相反,必须为每种微格式添加支持。例如,如果想同时处理日历数据和地址数据,就必须保证解析器同时支持这两种格式,或者使用两种不同的解析器。通过社区进程发布新的微格式也很困难。
微数据结合了微格式与 RDFa 的优点。微数据具有以下特点:
  • 通过减少属性数量与属性排列选项,可以降低 RDFa 的复杂性。
  • 消除命名空间前缀。
  • 维持 RDFa 的通用解析,让工具处理已发布的数据时变得更容易。
  • 保留不同用户群创建自己的属性值集合(也称为词汇表)的能力,并将它用于微数据。
将 schema.org 词汇表与微数据相结合Schema.org 是一个适用于微数据的词汇表。因为词汇表不需要经过任何组织的批准,搜索引擎所有者能够根据自身需要设计自己的词汇表。大多数词汇表处理的事情类似于 Google 在其 Rich Snippets 中侧重的重点:人物、地点、事件、娱乐和商业。
有几个很好的例子(参见)演示了如何在站点上放置 schema.org 术语。例如, 显示了使用 schema.org 术语增强过的一部电影的简单标记。
清单 1. 使用 schema.org 术语增强过的一部电影的简单标记
1
2
3
4
5
6
7
8
<div itemscope itemtype ="http://schema.org/Movie">
  <h1 itemprop="name">Avatar</h1>
  <span>Director: <span itemprop="director">James Cameron</span>
(born August 16, 1954)</span>
  <span itemprop="genre">Science fiction</span>
  <a href="../movies/avatar-theatrical-trailer.html"
itemprop="trailer">Trailer</a>
</div>




附加标记的作用可能无法立即看出来。为了获得直观印象,我们将使用这个代码段的页面发布到 Web 上。接下来,您可以在 Google 的 Rich Snippets 测试工具(参见)中输入该页面的 URL,如  中所示。如果无法方便地访问 Web 服务器,您还可以复制这个代码段,并将其粘贴到 Opera 开发人员 Philip Jägenstedt 提供的现场微数据测试工具中(参见)。
图 1. 从清单 1 中示例提取的 Schema.org 微数据该工具提取出两方面的信息:电影及其导演。
微数据中的两个主要概念是内容项 和这些内容项的属性。可以将属性设置为字符串或另一个内容项。例如,电影是一个内容项。它有一个名称,这个名称就是一个具有字符串值的属性。它还有一名导演,这个属性有一个内容项值,即 Person。
为了让解析器了解您要开始谈论一个内容项,请使用 itemscope 属性。您还可以使用 itemtype 属性,让解析器知道您正在谈论的内容的类型。
使用 itemtype 确定在 itemprop 属性中可以使用哪些属性。例如,在    Movie itemtype 的页面上,您会看到可在电影上使用的属性的一个列表(参见)。如果您使用属性的完整 URL,还可以使用未在此列表中列出的其他属性。例如,FOAF 词汇表还可以指定一个 name 属性。通过使用 itemprop="http://xmlns.com/foaf/0.1/name",您可以用 FOAF name 属性代替 schema.org name 属性。
位于 Movie 的 <div> 中的所有属性均被理解为电影的属性,直到到达 div 的结尾或 Movie 中 div 上的一个 itemscope。itemscope 属性表示您现在谈论的是另一件事情(这个例子中是一个 Person),因此 birthplace 属性被理解为 Person,而非 Movie 的一个属性。
因为您给内容添加了一点结构,任意一种工具都能轻松提取出相关信息。通过在 HTML 中添加属性,可以让页面中的数据变得易于处理,几乎就像是在 Excel 电子数据表或数据库中处理数据一样。
尽管微数据非常简单,但手动放置和维护内容仍然很困难。一些工具支持生成微数据,这些工具包括 Drupal 的 Microdata 模块(参见 )。
返回列表