HTML itemprop 全局属性

itemprop 全局属性 用于为项目添加属性。每个 HTML 元素都可以指定 itemprop 属性,并且 itemprop 由一个名称-值对组成。每个名称-值对称为一个属性,一组或多个属性构成一个项目。属性值可以是字符串或 URL,并且可以与多种元素关联,包括 <audio><embed><iframe><img><link><object><source><track><video>

示例

以下示例显示了一组带有 itemprop 属性标记的元素的源代码,后跟一个表格,显示了由此产生的结构化数据。

HTML

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 属性,或链接到或嵌入外部资源的其他元素来表示。

三个值为字符串的属性

html
<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

html
<div itemscope>
  <img itemprop="image" src="google-logo.png" alt="Google" />
</div>

当字符串值不易被人阅读和理解(例如,一长串数字和字母)时,它可以使用 data 元素的 value 属性来显示,并以更易于人类理解的版本出现在元素的内容中(这不是结构化数据的一部分 - 请参见下面的示例)。

一个具有产品 ID 属性值的项目

ID 不便于人类阅读,因此改为使用产品名称。

html
<h1 itemscope>
  <data itemprop="product-id" value="9678AOU879">The Instigator 2000</data>
</h1>

对于数值数据,可以使用 meter 元素及其 value 属性。

一个 meter 元素

html
<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”,其值为日期的项目

html
<div itemscope>
  I was born on
  <time itemprop="birthday" datetime="1984-05-10">May 10th 1984</time>.
</div>

属性也可以是名称-值对的组,方法是将 itemscope 属性放在声明该属性的元素上。每个值可以是字符串或名称-值对的组(即一个项目)。

一个代表人的外部项目,以及一个代表乐队的内部项目

html
<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”。此示例中的外部项目是一个顶级微数据项目。不属于其他项目的项目称为顶级微数据项目。

所有属性都与其项目分离

此示例与上一个相同,但所有属性都与其项目分离。

html
<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”。

一个项目可以有多个同名但值不同的属性。

两种口味的冰淇淋

html
<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”

html
<div itemscope>
  <span
    itemprop="favorite-color
    favorite-fruit"
    >orange
  </span>
</div>

注意:微数据与标记微数据所在的文档内容之间没有关系。

两种不同方式标记的相同结构化数据

以下两个示例之间没有语义差异

html
<figure>
  <img src="castle.jpeg" />
  <figcaption>
    <span itemscope><span itemprop="name">The Castle</span></span> (1986)
  </figcaption>
</figure>
html
<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,则称为类型化项目。否则,它是一个字符串。字符串不能包含句点或冒号(参见下文)。

  1. 如果项目是类型化项目,则必须是以下之一

    1. 一个已定义的属性名称,或者
    2. 一个有效的 URL,它引用词汇表定义,或者
    3. 一个有效的 URL,用作专有项目属性名称(即,未在公共规范中定义的名称),或者
  2. 如果项目不是类型化项目,则必须是

    1. 一个不包含 .(U+002E 句号)字符和 : 字符(U+003A 冒号)的字符串,并用作专有项目属性名称(同样,未在公共规范中定义的名称)。

注意:上述规则禁止非 URL 值中包含“:”字符,否则它们将无法与 URL 区分开来。包含“.”字符的值保留用于未来的扩展。不允许使用空格字符,否则这些值将被解析为多个标记。

名称-值对的属性值按照以下列表中的第一个匹配情况给出

  • 如果元素具有 itemscope 属性

    • 该值是元素创建的项目
  • 如果元素是 meta 元素

    • 该值是元素的 content 属性的值
  • 如果元素是 audioembediframeimgsourcetrackvideo 元素

    • 该值是解析元素 src 属性的值相对于元素节点文档(微数据 DOM API 的一部分)在设置属性时生成的 URL 字符串
  • 如果元素是 aarealink 元素

    • 该值是解析元素 href 属性的值相对于元素节点文档在设置属性时生成的 URL 字符串
  • 如果元素是 object 元素

    • 该值是解析元素 data 属性的值相对于元素节点文档在设置属性时生成的 URL 字符串
  • 如果元素是 data 元素

    • 该值是元素的 value 属性的值
  • 如果元素是 meter 元素

    • 该值是元素的 value 属性的值
  • 如果元素是 time 元素

    • 该值是元素的 datetime

否则

  • 该值是元素的 textContent

如果属性的值是 URL,则必须使用 URL 属性元素指定该属性。URL 属性元素是 aareaaudioembediframeimglinkobjectsourcetrackvideo 元素。

名称顺序

名称之间是无序的,但如果特定名称有多个值,它们确实具有相对顺序。

在以下示例中,“a”属性的值是“1”和“2”,按此顺序,但“a”属性是否在“b”属性之前并不重要。

html
<div itemscope>
  <p itemprop="a">1</p>
  <p itemprop="a">2</p>
  <p itemprop="b">test</p>
</div>

这里有几个等效的例子

html
<div itemscope>
  <p itemprop="b">test</p>
  <p itemprop="a">1</p>
  <p itemprop="a">2</p>
</div>
html
<div itemscope>
  <p itemprop="a">1</p>
  <p itemprop="b">test</p>
  <p itemprop="a">2</p>
</div>
html
<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

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-属性

另见