HTML itemprop 全局属性
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>
结构化数据
项目 | ||
---|---|---|
itemprop 名称 | itemprop 值 | |
itemprop | name | 阿凡达 |
itemprop | 导演 | 詹姆斯·卡梅隆 |
itemprop | 类型 | 科幻 |
itemprop | 预告片 | ../movies/avatar-theatrical-trailer.html |
属性
属性的值可以是字符串或 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>
一个属性,“image”,其值为 URL
<div itemscope>
<img itemprop="image" src="google-logo.png" alt="Google" />
</div>
当字符串值不易被人阅读和理解(例如,一长串数字和字母)时,它可以使用 data 元素的 value 属性来显示,并以更易于人类理解的版本出现在元素的内容中(这不是结构化数据的一部分 - 请参见下面的示例)。
一个具有产品 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>
同样,对于日期和时间相关的数据,可以使用 time 元素及其 datetime 属性。
一个具有一个属性“birthday”,其值为日期的项目
<div itemscope>
I was born on
<time itemprop="birthday" datetime="1984-05-10">May 10th 1984</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”。唯一的区别是,如果用户将 figcaption 拖出文档,该项目将包含在拖放数据中。与该项目关联的图像将不包括在内。
名称和值
属性是区分大小写的唯一标记的无序集合,表示名称-值对。属性值必须至少有一个标记。在下面的示例中,每个数据单元格都是一个标记。
名称示例
项目 | ||
---|---|---|
itemprop 名称 | itemprop 值 | |
itemprop | country | 爱尔兰 |
itemprop | 选项 | 2 |
itemprop | https://www.flickr.com/photos/nlireland/6992065114/ | 凯里环 |
itemprop | img | https://www.flickr.com/photos/nlireland/6992065114/ |
itemprop | 网站 | flickr |
itemprop | (标记) | (标记) |
标记可以是字符串或 URL。如果项目是 URL,则称为类型化项目。否则,它是一个字符串。字符串不能包含句点或冒号(参见下文)。
-
如果项目是类型化项目,则必须是以下之一
- 一个已定义的属性名称,或者
- 一个有效的 URL,它引用词汇表定义,或者
- 一个有效的 URL,用作专有项目属性名称(即,未在公共规范中定义的名称),或者
-
如果项目不是类型化项目,则必须是
- 一个不包含
.
(U+002E 句号)字符和:
字符(U+003A 冒号)的字符串,并用作专有项目属性名称(同样,未在公共规范中定义的名称)。
- 一个不包含
注意:上述规则禁止非 URL 值中包含“:”字符,否则它们将无法与 URL 区分开来。包含“.”字符的值保留用于未来的扩展。不允许使用空格字符,否则这些值将被解析为多个标记。
值
名称-值对的属性值按照以下列表中的第一个匹配情况给出
-
如果元素具有
itemscope
属性- 该值是元素创建的项目
-
如果元素是
meta
元素- 该值是元素的
content
属性的值
- 该值是元素的
-
如果元素是
audio
、embed
、iframe
、img
、source
、track
或video
元素- 该值是解析元素 src 属性的值相对于元素节点文档(微数据 DOM API 的一部分)在设置属性时生成的 URL 字符串
-
如果元素是
a
、area
或link
元素- 该值是解析元素 href 属性的值相对于元素节点文档在设置属性时生成的 URL 字符串
-
如果元素是
object
元素- 该值是解析元素 data 属性的值相对于元素节点文档在设置属性时生成的 URL 字符串
-
如果元素是
data
元素- 该值是元素的 value 属性的值
-
如果元素是
meter
元素- 该值是元素的
value
属性的值
- 该值是元素的
-
如果元素是
time
元素- 该值是元素的
datetime
值
- 该值是元素的
否则
- 该值是元素的 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>
表示书籍的结构化数据
此示例使用微数据属性表示以下结构化数据
itemscope | itemtype: itemid | https://schema.org/Book: urn:isbn:0-374-22848-5 | |
itemprop | title | 东方冰雪之猫头鹰 | |
itemprop | author | Jonathan C Slaght | |
itemprop | 出版日期 | 2020-08-04 |
HTML
<dl
itemscope
itemtype="https://schema.org/Book"
itemid="urn:isbn:0-374-22848-5<">
<dt>Title</dt>
<dd itemprop="title">Owls of the Eastern Ice</dd>
<dt>Author</dt>
<dd itemprop="author">Jonathan C Slaght</dd>
<dt>Publication date</dt>
<dd>
<time itemprop="datePublished" datetime="2020-08-04">August 4 2020</time>
</dd>
</dl>
结果
规范
规范 |
---|
HTML # 名称:-itemprop-属性 |