itemprop属性 | itemprop (attribute)
itemprop (attribute)
itemprop全局属性用来性质添加到项目中。每个 HTML 元素都可以itemprop指定一个属性,并且itemprop由一个名称 - 值对组成。每个名称 - 值对称为一个属性,一组一个或多个属性形成一个项目。属性值是一个字符串或一个 URL,并且可以与一个很宽范围的元素,包括相关联<audio>,<embed>,<iframe>,<img>,<link>,<object>,<source>,<track>,和<video>。
例子
下面的例子显示了一系列用itemprop
属性标记的元素的源代码,后面跟着一张显示结果数据的表格。
HTML
<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>
结构化数据
| Item |
---|---|
itemprop name | itemprop value |
itemprop | name |
itemprop | director |
itemprop | genre |
itemprop | trailer |
属性
属性的值是字符串或 URL 。当字符串值是一个 URL 时,它使用<a>元素及其href属性,<img>元素及其src属性或链接到或嵌入外部资源的其他元素来表示。
三个值为字符串的属性
<div itemscope>
<p>My name is
<span itemprop="name">Neil</span>.</p>
<p>My band is called
<span itemprop="band">Four Parts Water</span>.</p>
<p>I am
<span itemprop="nationality">British</span>.</p>
</div>
一个属性,“图片”,其值是一个 URL
<div itemscope>
<img itemprop="image"
src="google-logo.png" alt="Google">
</div>
当一个字符串值不能被人轻易读取和理解时(例如,一串长长的数字和字母),它可以使用数据元素的 value 属性来显示,而更容易理解的是 a 元素内容中给出的人类版本(这不是结构化数据的一部分 - 请参见下面的示例)。
具有属性,其值为产品 ID 的项目
此 ID 不是人性化的,所以产品的名称使用了人眼可见的文本而不是 ID 。
<h1 itemscope>
<data itemprop="product-id"
value="9678AOU879">The Instigator 2000</data>
</h1>
对于数字数据,可以使用 meter 元素及其 value 属性。
一个 meter 元素
<div itemscope itemtype="http://schema.org/Product">
<span itemprop="name">Panasonic White
60L Refrigerator</span>
<img src="panasonic-fridge-60l-white.jpg" alt="">
<div itemprop="aggregateRating"
itemscope
itemtype="http://schema.org/AggregateRating">
<meter itemprop="ratingValue"
min=0 value=3.5 max=5>Rated 3.5/5</meter>
(based on <span
itemprop="reviewCount">11</span>
customer reviews)
</div>
</div>
同样,对于与日期和时间相关的数据,可以使用时间元素及其日期时间属性。
具有一个属性的项目,“生日”,其值是日期
<div itemscope>
I was born on <time
itemprop="birthday"
datetime="2009-05-10">May 10th 2009</time>.
</div>
通过将 itemscope 属性放在声明该属性的元素上,属性也可以是名称 - 值对的组。每个值都是一个字符串或一组名称 - 值对(即一个项目)。
表示人的外部项目,表示乐队的内部项目
<div itemscope>
<p>Name:
<span itemprop="name">Amanda</span></p>
<p>Band:
<span itemprop="band" itemscope>
<span itemprop="name">Jazz Band</span>
(<span itemprop="size">12</span>
players)</span></p>
</div>
上面的外部项目有两个属性,“name”和“band”。“name”是“Amanda”,“band”本身就是一个项目,有两个属性“name”和“size”。乐队的“name”是“Jazz Band”,“size”是“12”。本例中的外部项目是顶级微数据项目。不属于他人的项目称为顶级微数据项目。
所有属性都与其项目分开
这个例子与前一个例子相同,但所有的属性都与它们的项目分开
<div itemscope id="amanda" itemref="a b"></div>
<p id="a">Name:
<span itemprop="name">Amanda</span></p>
<div id="b"
itemprop="band"
itemscope itemref="c"></div>
<div id="c">
<p>Band:
<span itemprop="name">Jazz Band</span></p>
<p>Size:
<span itemprop="size">12</span> players</p>
</div>
这给出了与前面的例子相同的结果。第一个项目有两个属性,“name”,设置为“Amanda”,和“band”,设置为另一个项目。第二个项目还有两个属性,“name”,设置为“Jazz Band”和“size”,设置为“12”。
一个项目可以具有多个具有相同名称和不同值的属性。
冰淇淋有两种口味
<div itemscope>
<p>Flavors in my favorite ice cream:</p>
<ul>
<li itemprop="flavor">Lemon sorbet</li>
<li itemprop="flavor">Apricot sorbet</li>
</ul>
</div>
这产生了具有两个属性的项目,其名称为“flavor”并具有“Lemon sorbet”和“Apricot sorbet”的值。
引入属性的元素也可以同时引入多个属性,以避免在某些属性具有相同值时重复。
具有两个属性的项目,“favorite-color”和“favorite-fruit”,都设置为值“orange”
<div itemscope>
<span
itemprop="favorite-color
favorite-fruit">orange</span>
</div>
注意:微数据和微数据标记文档的内容之间没有关系。
以两种不同的方式标记相同的结构化数据
以下两个例子之间没有语义上的区别
<figure>
<img src="castle.jpeg">
<figcaption><span
itemscope><span
itemprop="name">The Castle</span></span>
(1986)</figcaption>
</figure>
<span itemscope><meta
itemprop="name"
content="The Castle"></span>
<figure>
<img src="castle.jpeg">
<figcaption>The Castle
(1986)</figcaption>
</figure>
两者都有一个带有标题的图形,而且与图形完全无关,都有一个带名称 - 值对的项目,名称为“name”,值为“The Castle”。唯一的区别是,如果用户将无形文字拖出文档,则该项目将包含在拖放数据中。与该项目相关的图像将不包含在内。
Names 和 values
属性是区分大小写的唯一令牌的无序集合,它表示名称 - 值对。属性值必须至少有一个令牌。在下面的例子中,每个数据单元都是一个令牌。
名称的例子
| Item |
---|---|
itemprop name | itemprop value |
itemprop | country |
itemprop | Option |
itemprop | https://www.flickr.com/photos/nlireland/6992065114/ |
itemprop | img |
itemprop | website |
itemprop | (token) |
Tokens
是字符串或 URL 。如果一个项目是一个 URL,那么它就被称为一个类型项目
。否则,它是一个字符串。字符串不能包含句点或冒号(见下文)。
- 如果该项目是一个输入项目,它必须是:
注意:
上面的规则不允许在非 URL 值中使用“:”字符,否则它们无法与 URL 区分。带“。”的值 字符被保留用于未来的扩展。空格字符是不允许的,否则这些值将被解析为多个标记。
Values
名称 - 值对的属性值与以下列表中第一个匹配的情况相同:
- 如果元素有一个
itemscope
属性
除此以外
- 值是元素的
textContent
。
如果属性的值是一个 URL
,则必须使用 URL
属性元素来指定该属性。URL
属性元素是 a
, area
, audio
, embed
, iframe
, img
, link
, object
, source
, track
, 和 video
元素。
名称顺序
名称相对于彼此是无序的,但是如果某个特定名称具有多个值,则它们具有相对顺序。
在以下示例中,“a”属性的值依次为 “1”和“2” ,但“a”属性是否位于“b”属性之前并不重要
<div itemscope>
<p itemprop="a">1</p>
<p itemprop="a">2</p>
<p itemprop="b">test</p>
</div>
以下是等同的
<div itemscope>
<p itemprop="b">test</p>
<p itemprop="a">1</p>
<p itemprop="a">2</p>
</div>
如下所示
<div itemscope>
<p itemprop="a">1</p>
<p itemprop="b">test</p>
<p itemprop="a">2</p>
</div>
以下
<div id="x">
<p itemprop="a">1</p>
</div>
<div itemscope itemref="x">
<p itemprop="b">test</p>
<p itemprop="a">2</p>
</div>
其他例子
HTML
<dl itemscope
itemtype="http://vocab.example.net/book"
itemid="urn:isbn:0-330-34032-8">
<dt>Title
<dd
itemprop="title">The Reality Dysfunction
<dt>Author
<dd
itemprop="author">Peter F. Hamilton
<dt>Publication date
<dd><time
itemprop="pubdate"
datetime="1996-01-26">26 January 1996</time>
</dl>
结构化数据
itemscope | itemtype: itemid | http://vocab.example.net/book: urn:isbn:0-330-34032-8 |
---|---|---|
itemprop | title | The Reality Dysfunction |
itemprop | author | Peter F. Hamilton |
itemprop | pubdate | 1996-01-26 |
结果
规范
Specification | Status | Comment |
---|---|---|
itemprop | | WG Note - No longer being actively developed |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |