微數(shù)據(jù)是一種在網(wǎng)頁(yè)中提供附加語(yǔ)義的標(biāo)準(zhǔn)化方式。
微數(shù)據(jù)允許我們定義自定義元素以及在網(wǎng)頁(yè)中嵌入自定義屬性。從較高的角度而言,微數(shù)組由一組名-值對(duì)組成。
這個(gè)分組被稱作條目,每個(gè)名-值對(duì)就是一個(gè)屬性。條目和屬性使用普通元素表示。
這里有兩個(gè)條目,其中每個(gè)條目都有一個(gè) "name" 屬性:
<div itemscope>
<p>My name is <span itemprop="name">Zara</span>.</p>
</div>
<div itemscope>
<p>My name is <span itemprop="name">Nuha</span>.</p>
</div>
屬性值通常是字符串,但是它可以是下列數(shù)據(jù)類型。
微數(shù)據(jù)引入了五個(gè)全局屬性,這些屬性適用于在任意元素以及為數(shù)據(jù)提供上下文機(jī)制。
| 屬性 | 描述 |
|---|---|
| itemscope | 用于創(chuàng)建一個(gè)條目。itemscope 屬性是一個(gè)布爾值屬性,說(shuō)明頁(yè)面上有微數(shù)據(jù)以及它從哪里開(kāi)始。 |
| itemtype | 這個(gè)屬性是一個(gè)有效的 URL,用于定義條目以及為屬性提供上下文。 |
| itemid | 這個(gè)屬性是條目的全局標(biāo)識(shí)符。 |
| itemprop | 這個(gè)屬性為條目定義屬性。 |
| itemref | 這個(gè)屬性提供了一個(gè)附加元素列表來(lái)抓取條目的名-值對(duì)。 |
屬性通常有一個(gè)正如上面的例子中提到的字符串值,但是它們的值也可以是 URLs。下面的例子中有一個(gè) "image" 屬性,它的值是一個(gè) URL:
<div itemscope>
<img itemprop="image" src="tp-logo.gif" alt="TutorialsPoint">
</div>
屬性的值也可以是日期,時(shí)間或者日期和時(shí)間。下面是一個(gè)使用 time 元素和 datetime 屬性的實(shí)現(xiàn)。
<div itemscope>
My birthday is:
<time itemprop="birthday" datetime="1971-05-08">
Aug 5th 1971
</time>
</div>
屬性本身也可以是一組名-值對(duì),通過(guò)在元素上放置 itemscope 屬性來(lái)聲明屬性。
如果瀏覽器支持 HTML5 微數(shù)據(jù) API,那么全局 document 對(duì)象上就會(huì)有一個(gè) getItems() 函數(shù)。如果瀏覽器不支持微數(shù)據(jù),getItems() 函數(shù)就會(huì)是 undefined。
function supports_microdata_api() {
return !!document.getItems;
}
Modernizr 還不支持微數(shù)據(jù) API 檢測(cè),因此我們需要使用像上面一樣列出的函數(shù)來(lái)檢測(cè)。
HTML5 微數(shù)據(jù)標(biāo)準(zhǔn)包含 HTML 標(biāo)記(主要用于搜索引擎)和一系列 DOM 函數(shù)(主要用于瀏覽器)。
我們可以在網(wǎng)頁(yè)中引入微數(shù)據(jù)標(biāo)記,不理解微數(shù)據(jù)屬性的搜索引擎將會(huì)忽略它們。但是,如果需要通過(guò) DOM 訪問(wèn)或者操作微數(shù)據(jù),我們還需要檢查瀏覽器是否支持微數(shù)據(jù) DOM API。
要定義一個(gè)微數(shù)據(jù)詞匯表我們需要一個(gè)只想有效網(wǎng)頁(yè)的命名空間 URL。例如 http://data-vocabulary.org/Person 可以用作帶下列命名屬性的個(gè)人微數(shù)據(jù)詞匯表的命名空間。
下面是一個(gè)使用個(gè)人微數(shù)據(jù)相關(guān)屬性的例子:
<section itemscope itemtype="http://data-vocabulary.org/Person">
<h1 itemprop="name">Andy Runie</h1>
<p>
<img itemprop="photo" src="http://www.example.com/photo.jpg">
</p>
<a itemprop="url" >My Blog</a>
</section>
Google 支持將微數(shù)據(jù)作為他們 Rich Snippets 程序的一部分。當(dāng) Google 的網(wǎng)頁(yè)爬蟲(chóng)解析我們的頁(yè)面并發(fā)現(xiàn)符合 http://data-vocabulary.org/Person 詞匯表的微數(shù)據(jù)屬性時(shí),它會(huì)解析出這些屬性并把他們存儲(chǔ)到其他頁(yè)面數(shù)據(jù)的旁邊。
你可以利用 Rich Snippets 測(cè)試工具 使用 http://www.tutorialspoint.com/html5/microdata.htm 測(cè)試上面的例子。