什么是微观数据(Microdata)
深入微观数据
在html5中有超过100个元素,一部分是表示语义的,另外的就只是script API的容器(比如:canvas)。纵观网页发展的历史,web标准的卫道者们争论哪些元素应当被包含在HTML语言中。HTML是否应该应该包含 <figure>,<person>,<rant>?标准被拟定,提纲被编写,开发者执行并运用,不断的推动web向前发展。
当然,一些想法没有被采纳,比如在HTML5中并没有<person>这个元素(同时也没有<rant>),没有任何力量可以阻止你在在开发过程中书写<person>这个元素,但是他不会通过验证,不会通过浏览器而工作,并且可能与未来的HTML规则发生冲突。
对,所以构造自定义的元素并不是一个解决办法,那么怎么才是web语义者倾向的做法呢?曾今有很多企图扩展以前版本的HTML的做法,最通常就是“微格式(microformats)”,在HTML4中用在class以及rel属性上。第二种选择是RDFa,原本是设计在XHTML中使用,但是在HTML中也能使用。
微格式和 RDFa 各有自己的优劣点。他们采取了完全不同的方法实现一个目的:通过额外的语义来丰富网页的信息。这里我更倾向于第三种选择,一种紧密联系在一起的方法,HTML5,HTML5本身就是一种微观格式。
什么是微观数据
下列句子很重要,所以一定要注意
“微观数据诠释了具有名称/值对应的DOM,而这个名称/值的范围源于惯用词汇表”
这是什么意思呢?微观数据是以自定义词汇为核心,让我们回过头去看过去的工作。将所有html5的元素看作是一个词汇表,这个词汇表包含着的元素可以用来代表一个段落或者一篇文章的,但是他不包含能代表一个人或者一个事件的。如果你想要在网页上表现一个人,那么你需要自定义一个词汇。微观数据可以让你做到这一点。任何人都可以在自己的网页上自定义微观数据然后嵌入通用的属性。
我们了解微观数据是以名称/值对应的形式存在的。每一个微观的词汇定义了一组命名的属性。举一个例,“Person”这个词汇表可以定义name或者photo这样的特性。为了包含一个准确的微观数据,你需要在一个确切的地方声明特性的特性名。根据你申明特性的位置,微观数据根据相关的规则提取有用信息。
除了命名的属性以外,微观数据在很大程度上依赖于“作用域”。最简单的方式去理解作用域这个概念可以参考DOM中元素的父子关系。 <html> 通常包含两个子节点 <head> 以及 <body>.<body>节点通常包含很多并行的子节点,同时这些子节点又有自己的字节。举一个例,你的网页上有<h1>被包含在<hgroup>中,同时<hgroup>又被包含在<header>中,<header>又被包含在<body>中。一个数据表格可能被包含在<td>中,<td>被包含在<tr>中,同时<td>又被包含在<table>中。微观数据采用了DOM这种层次结构来表明“元素中的所有特性都源于声明词汇表”。这可以允许我们在同一个页面上使用多个微观数据。你是甚至可以通过重复使用DOM的自然结构,嵌套其他的微观数据词汇。
现在我已经简单介绍了DOM,下面让我继续细细道来。微观数据是为网页已经直接可见的数据附加语意化的说明。微观数据并不是被设计为一种独立的数据格式,而是对HTML的一种补充。所以你将会在下一章节中看到,当正确的使用HTML但是HTML的语义表现力不够强时,微观数据能够发挥最大的效果。微观数据最显著作用就是对DOM中已经存在的数据在语义上微调补充。如果你想要语意化的数据并不在DOM中,你最好应该重新评估一下微观数据是否为正确的解决方案。
这个句子是否更容易理解了呢?“微观数据诠释了具有名称/值对应的DOM,而这个名称/值的范围源于惯用词汇”我希望是的。让我们实践一下吧。
Pingback引用通告: [Dive Into HTML5部分翻译]—微观数据(Microdata)的数据模型 | 冰糖橙子