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 nameitemprop value
itempropname
itempropdirector
itempropgenre
itemproptrailer

属性

属性的值是字符串或 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 nameitemprop value
itempropcountry
itempropOption
itemprophttps://www.flickr.com/photos/nlireland/6992065114/
itempropimg
itempropwebsite
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>

结构化数据

itemscopeitemtype: itemidhttp://vocab.example.net/book: urn:isbn:0-330-34032-8
itemproptitleThe Reality Dysfunction
itempropauthorPeter F. Hamilton
itemproppubdate1996-01-26

结果

规范

SpecificationStatusComment
itempropWG Note - No longer being actively developed

浏览器兼容性

FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support(Yes)(Yes)(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)