面向网页开发者的版本 — 最后更新 2024 年 9 月 12 日
有时,用特定的机器可读标签对内容进行注释是可取的,例如,允许通用脚本提供针对页面的自定义服务,或使来自各种合作作者的内容能够以一致的方式由单个脚本处理。
为此,作者可以使用本节中描述的微数据功能。微数据允许将嵌套的名称-值对组添加到文档中,与现有内容并行。
从高层次上讲,微数据由一组名称-值对组成。这些组称为 项目,每个名称-值对都是一个属性。项目和属性由常规元素表示。
要创建一个项目,使用 itemscope
属性。
要向项目添加属性,使用 itemprop
属性在 项目 的一个后代上。
这里有两个项目,每个项目都有“name”属性
< div itemscope >
< p > My name is < span itemprop = "name" > Elizabeth</ span > .</ p >
</ div >
< div itemscope >
< p > My name is < span itemprop = "name" > Daniel</ span > .</ p >
</ div >
没有与微数据相关的属性的标记对微数据模型没有任何影响。
这两个例子在微数据层面完全等效,与前面的两个例子分别相同
< div itemscope >
< p > My < em > name</ em > is < span itemprop = "name" > E< strong > liz</ strong > abeth</ span > .</ p >
</ div >
< section >
< div itemscope >
< aside >
< p > My name is < span itemprop = "name" >< a href = "/?user=daniel" > Daniel</ a ></ span > .</ p >
</ aside >
</ div >
</ section >
属性通常具有字符串值。
这里,项目有三个属性
< 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 时,它使用 a
元素及其 href
属性、img
元素及其 src
属性,或其他链接或嵌入外部资源的元素来表示。
在这个例子中,项目有一个属性“image”,其值为一个 URL
< div itemscope >
< img itemprop = "image" src = "google-logo.png" alt = "Google" >
</ div >
当字符串值采用某种不适合人类阅读的机器可读格式时,它使用 value
属性在 data
元素中,用元素内容提供人类可读的版本。
这里,有一个项目,其属性的值为一个产品 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 >
类似地,对于与日期和时间相关的数据,可以使用 time
元素及其 datetime
属性。
在这个例子中,项目有一个属性“birthday”,其值为一个日期
< 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”。
此示例中的外部项目是顶级微数据项目。
不属于具有 itemscope
属性元素的后代的属性可以使用 itemref
属性与 项目 相关联。此属性接受一个元素 ID 列表,除了遍历具有 itemscope
属性元素的子节点外,还会遍历这些 ID 所指的元素。
此示例与前一个示例相同,但所有属性都与其 项目 分开
< 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”。唯一的区别是,如果用户将标题从文档中拖出,在前面的情况下,该项目将包含在拖放数据中。在这两种情况下,图像都与项目无关。
上一节中的示例展示了如何在不期望其微数据被重复使用的页面上进行信息标记。但是,微数据在其他作者和读者能够合作以使标记有新用途的上下文中最为有用。
为此,有必要为每个 项目 指定一个类型,例如“https://example.com/person”或“https://example.org/cat”或“https://band.example.net/”。类型被标识为 URL。
一个 项目 的类型作为与 itemscope
属性相同的元素上的 itemtype
属性的值给出。
这里,项目的类型是“https://example.org/animals#cat”
< section itemscope itemtype = "https://example.org/animals#cat" >
< h1 itemprop = "name" > Hedral</ h1 >
< p itemprop = "desc" > Hedral is a male american domestic
shorthair, with a fluffy black fur with white paws and belly.</ p >
< img itemprop = "img" src = "hedral.jpeg" alt = "" title = "Hedral, age 18 months" >
</ section >
在这个例子中,“https://example.org/animals#cat”项目有三个属性,“name”(“Hedral”)、“desc”(“Hedral is...”)和“img”(“hedral.jpeg”)。
类型提供了属性的上下文,从而选择一个词汇表:对于具有类型“https://census.example/person”的项目给出的名为“class”的属性可能指的是个人的经济阶级,而对于具有类型“https://example.com/school/teacher”的项目给出的名为“class”的属性可能指的是分配给教师的教室。多个类型可以共享一个词汇表。例如,类型“https://example.org/people/teacher
”和“https://example.org/people/engineer
”可以定义为使用相同的词汇表(尽管在两种情况下,某些属性可能没有特别有用,例如,“https://example.org/people/engineer
”类型通常可能不会与“classroom
”属性一起使用)。通过将 URL 作为属性值的空格分隔列表列出,可以为单个项目指定多个定义为使用相同词汇表的类型。但是,如果两个类型不使用相同的词汇表,则不能为单个项目指定两个类型。
有时,一个 项目 提供有关具有全局标识符的主题的信息。例如,书籍可以使用其 ISBN 号进行标识。
词汇表(由 itemtype
属性标识)可以设计为,通过将全局标识符表示为 itemid
属性中给出的 URL,使 项目 以明确的方式与其全局标识符相关联。
在 itemid
属性中给出的 URL 的确切含义取决于所使用的词汇表。
这里,一个项目在谈论一本特定的书
< dl itemscope
itemtype = "https://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 >
此示例中的“https://vocab.example.net/book
”词汇表将定义 itemid
属性接受一个 urn:
URL,该 URL 指向该书的 ISBN。
使用微数据意味着使用词汇表。对于某些目的,临时词汇表就足够了。对于其他目的,需要设计词汇表。在可能的情况下,鼓励作者重复使用现有词汇表,因为这使得内容重复使用更容易。
在设计新的词汇表时,标识符可以使用 URL 创建,也可以为属性创建为纯文本(不含点或冒号)。对于 URL,可以通过仅使用对应于作者控制的页面的标识符来避免与其他词汇表发生冲突。
例如,如果 Jon 和 Adam 都在 example.com
上撰写内容,分别位于 https://example.com/~jon/...
和 https://example.com/~adam/...
,那么他们可以选择分别使用“https://example.com/~jon/name”和“https://example.com/~adam/name”形式的标识符。
名称只是纯文本的属性只能在其所针对的类型的上下文中使用;使用 URL 命名的属性可以在任何类型的项目中重复使用。如果项目没有类型,并且不属于其他项目,那么如果其属性的名称是纯文本,则它们不打算在全局范围内唯一,而是仅用于有限的用途。一般来说,鼓励作者使用具有全局唯一名称(URL)的属性,或者确保其项目是类型化的。
这里,一个项目是 "https://example.org/animals#cat",大多数属性的名称是在该类型上下文中定义的词语。还有一些额外的属性,它们的名称来自其他词汇表。
< section itemscope itemtype = "https://example.org/animals#cat" >
< h1 itemprop = "name https://example.com/fn" > Hedral</ h1 >
< p itemprop = "desc" > Hedral is a male American domestic
shorthair, with a fluffy < span
itemprop = "https://example.com/color" > black</ span > fur with < span
itemprop = "https://example.com/color" > white</ span > paws and belly.</ p >
< img itemprop = "img" src = "hedral.jpeg" alt = "" title = "Hedral, age 18 months" >
</ section >
这个示例有一个类型为 "https://example.org/animals#cat" 的项目,以及以下属性
属性 | 值 |
name | Hedral |
https://example.com/fn | Hedral |
desc | Hedral 是一只雄性美国短毛猫,拥有蓬松的黑色毛发,白色爪子和小肚子。 |
https://example.com/color | black |
https://example.com/color | white |
img | .../hedral.jpeg |
微数据模型由称为 项目 的名称-值对组组成。
每个组被称为一个 项目。每个 项目 可以具有 项目类型、一个 全局标识符(如果由 项目类型 指定的词汇表 支持项目全局标识符)以及名称-值对列表。名称-值对中的每个名称被称为一个 属性,每个 属性 都有一个或多个 值。每个 值 要么是一个字符串,要么本身是一个名称-值对组(一个 项目)。名称彼此之间无序,但如果特定名称具有多个值,则它们具有相对顺序。
所有当前引擎都支持。
每个 HTML 元素 都可以指定一个 itemscope
属性。
属性是一个 布尔属性。itemscope
指定了
属性的元素会创建一个新的 项目,这是一个名称-值对组。itemscope
所有当前引擎都支持。
具有
属性的元素可以指定一个 itemscope
itemtype
属性,以给出 项目类型 的 项目。
如果指定了
属性,则它必须具有一个值,该值是一个 无序的唯一空格分隔的标记集,其中没有一个标记与另一个标记 相同,并且每个标记都是一个 有效的 URL 字符串,它是一个 绝对 URL,并且所有标记都被定义为使用相同的词汇表。属性的值必须至少有一个标记。itemtype
一个 项目 的 项目类型 是通过 在元素的 itemtype
属性的值上拆分 ASCII 空格 获得的标记。如果
属性缺失或以这种方式解析它没有找到任何标记,则该 项目 被认为没有 项目类型。itemtype
所有 项目类型 都必须是在 适用规范 中定义的类型,并且必须都定义为使用相同的词汇表。
属性不得在没有指定 itemtype
属性的元素上指定。itemscope
当一个 项目 具有 项目类型,或者它是 类型化项目 的一个 属性 的 值 时,它被称为一个 类型化项目。一个 类型化项目 的 相关类型 是该 项目 的 项目类型(如果有的话),否则是它作为 属性 的 值 所属的 项目 的 相关类型。
所有当前引擎都支持。
具有
属性和 itemscope
属性(引用一个被定义为 支持项目全局标识符 的词汇表)的元素也可以指定一个 itemtype
itemid
属性,以给出 项目 的全局标识符,以便它可以与网页上其他地方的其他 项目 相关联。
如果指定了
属性,则它必须具有一个值,该值是一个 有效的 URL,可能被空格包围。itemid
一个 项目 的 全局标识符 是它元素的
属性的值(如果它具有一个),相对于指定该属性的元素的 节点文档 解析。如果 itemid
属性缺失或解析它返回失败,则它被认为没有 全局标识符。itemid
属性不得在没有指定 itemid
属性和 itemscope
属性的元素上指定,并且不得在具有 itemtype
属性的元素上指定,该元素的 itemscope
属性指定了一个没有 支持项目全局标识符 的词汇表,如该词汇表规范中定义的。itemtype
一个 全局标识符 的确切含义由词汇表规范决定。由这些规范决定是否允许存在多个具有相同全局标识符的项目(无论是在同一页面还是在不同页面),以及该词汇表相对于处理具有相同 ID 的多个项目的这种情况的处理规则。
所有当前引擎都支持。
具有
属性的元素可以指定一个 itemscope
itemref
属性,以给出用于查找 项目 的名称-值对的额外元素列表。
如果指定了
属性,则它必须具有一个值,该值是一个 无序的唯一空格分隔的标记集,其中没有一个标记与另一个标记 相同,并且由相同 树 中的元素的 ID 组成。itemref
属性不得在没有指定 itemref
属性的元素上指定。itemscope
属性不是微数据数据模型的一部分。它只是一个语法结构,帮助作者在要添加注释的数据不遵循方便的树结构的页面中添加注释。例如,它允许作者在表格中标记数据,以便每一列定义一个单独的 项目,同时保留单元格中的属性。itemref
这个示例显示了一个简单的词汇表,用于描述模型铁路制造商的产品。该词汇表只有五个属性名称
该词汇表有四个定义的 项目类型
每个使用此词汇表的 项目 可以根据产品的具体情况分配一个或多个这些类型。
因此,机车可以标记为
< dl itemscope itemtype = "https://md.example.com/loco
https://md.example.com/lighting" >
< dt > Name:
< dd itemprop = "name" > Tank Locomotive (DB 80)
< dt > Product code:
< dd itemprop = "product-code" > 33041
< dt > Scale:
< dd itemprop = "scale" > HO
< dt > Digital:
< dd itemprop = "digital" > Delta
</ dl >
道岔灯改装套件可以标记为
< dl itemscope itemtype = "https://md.example.com/track
https://md.example.com/lighting" >
< dt > Name:
< dd itemprop = "name" > Turnout Lantern Kit
< dt > Product code:
< dd itemprop = "product-code" > 74470
< dt > Purpose:
< dd > For retrofitting 2 < span itemprop = "track-type" > C</ span > Track
turnouts. < meta itemprop = "scale" content = "HO" >
</ dl >
没有照明的客运车厢可以标记为
< dl itemscope itemtype = "https://md.example.com/passengers" >
< dt > Name:
< dd itemprop = "name" > Express Train Passenger Car (DB Am 203)
< dt > Product code:
< dd itemprop = "product-code" > 8710
< dt > Scale:
< dd itemprop = "scale" > Z
</ dl >
在创建新的词汇表时,必须格外小心。通常,可以使用类型分层方法,从而创建一个词汇表,其中每个项目只包含一个类型,这通常更容易管理。
itemprop
属性所有当前引擎都支持。
每个 HTML 元素 都可以指定一个
属性,如果这样做 向一个或多个 项目 添加一个或多个属性(如下定义)。itemprop
如果指定了 itemprop
属性,则其值必须为 一组不重复的以空格分隔的唯一标记,其中任何标记均不与 其他标记相同,表示它添加的名称-值对的名称。属性的值必须至少包含一个标记。
每个标记必须是以下之一:
引入 定义的属性名称 的规范必须确保所有此类属性名称不包含 U+002E FULL STOP 字符(.)、U+003A COLON 字符(:)和 ASCII 空格。
上面的规则禁止在非 URL 值中使用 U+003A COLON 字符(:),因为否则无法将其与 URL 区分。包含 U+002E FULL STOP 字符(.)的值保留用于将来的扩展。 ASCII 空格 被禁止,因为否则这些值将被解析为多个标记。
当具有 itemprop
属性的元素 向多个 项 添加属性 时,上述关于标记的规则适用于每个 项。
元素的 属性名称 是元素的 itemprop
属性的值在 按 ASCII 空格拆分 时发现的标记,顺序保持不变,但重复的标记被删除(只保留每个名称的第一次出现)。
在 项 中,属性之间没有顺序,除非属性具有相同的名称,在这种情况下,属性的顺序由定义 项属性 的算法给出。
在以下示例中,"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 >
由具有 itemprop
属性的元素添加的名称-值对的 属性值 是以下列表中第一个匹配项的给定值。
itemscope
属性该值是元素创建的 项。
meta
元素该值是元素的 content
属性的值(如果有),如果没有此属性,则为空字符串。
audio
、embed
、iframe
、img
、source
、track
或 video
元素该值是 对 URL 进行编码解析和序列化 的结果,该 URL 是根据元素的 src
属性的值,相对于元素的 节点文档,在设置属性时,或者如果没有此属性或结果为失败,则为空字符串。
a
、area
或 link
元素该值是 对 URL 进行编码解析和序列化 的结果,该 URL 是根据元素的 href
属性的值,相对于元素的 节点文档,在设置属性时,或者如果没有此属性或结果为失败,则为空字符串。
object
元素该值是 对 URL 进行编码解析和序列化 的结果,该 URL 是根据元素的 data
属性的值,相对于元素的 节点文档,在设置属性时,或者如果没有此属性或结果为失败,则为空字符串。
data
元素该值是元素的 value
属性的值(如果有),否则为空字符串。
meter
元素该值是元素的 value
属性的值(如果有),否则为空字符串。
time
元素该值是元素的 日期时间值。
该值是元素的 后代文本内容。
URL 属性元素 是 a
、area
、audio
、embed
、iframe
、img
、link
、object
、source
、track
和 video
元素。
如果属性的 值(由属性的定义定义)是 绝对 URL,则属性必须使用 URL 属性元素 指定。
这些要求并不仅仅因为属性值恰好与 URL 的语法匹配而适用。它们仅在明确定义属性接受此类值时才适用。
例如,一本关于首次登月的书可以名为 "mission:moon"。一个词汇中定义的标题为字符串的 "title" 属性不会期望标题在 a
元素中给出,即使它看起来像一个 URL。另一方面,如果有一个(范围相当狭窄的!)词汇用于 "标题看起来像 URL 的书籍",并且其中有一个 "title" 属性被定义为接受一个 URL,那么根据上面的要求,该属性会期望标题在 a
元素(或其他 URL 属性元素)中给出。
目前,itemscope
、itemprop
和其他微数据属性仅为 HTML 元素 定义。这意味着,具有字面名称 "itemscope
"、"itemprop
" 等的属性不会在其他命名空间(如 SVG)的元素上触发微数据处理。
因此,在以下示例中只有一个项,而不是两个。
< p itemscope ></ p > <!-- this is an item (with no properties and no type) -->
< svg itemscope ></ svg > <!-- this is not, it's just an SVG svg
element with an invalid unknown attribute -->
本节中的词汇主要用于演示词汇的指定方式,但它们本身也是可用的。
具有 项类型 http://microformats.org/profile/hcard
的项代表一个人或组织的联系信息。
该词汇不 支持项的全局标识符。
以下是该类型的 定义的属性名称。它们基于 vCard 格式规范 (vCard) 及其扩展中定义的词汇,可在其中找到有关如何解释值的更多信息。 [RFC6350]
kind
描述项代表的联系类型。
该 值 必须是与 kind 字符串 中的其中一个 相同 的文本。
每个具有类型 http://microformats.org/profile/hcard
的 项 中最多只能包含一个名为 kind
的属性。
fn
给出对应于个人或组织名称的格式化文本。
该 值 必须是文本。
每个具有类型 http://microformats.org/profile/hcard
的 项 中必须包含且仅包含一个名为 fn
的属性。
n
给出个人或组织的结构化名称。
该 值 必须是一个 项目,其中包含零个或多个以下每个属性:family-name
、given-name
、additional-name
、honorific-prefix
和 honorific-suffix
。
每个类型为 http://microformats.org/profile/hcard
的 项目 中必须存在一个名为 n
的属性。
family-name
(在 n
中)给出人的姓氏,或组织的完整名称。
该 值 必须是文本。
在形成类型为 http://microformats.org/profile/hcard
的 项目 的 n
属性的 值 的 项目 中,可以存在任意数量的名为 family-name
的属性。
given-name
(在 n
中)给出人的名。
该 值 必须是文本。
在形成类型为 http://microformats.org/profile/hcard
的 项目 的 n
属性的 值 的 项目 中,可以存在任意数量的名为 given-name
的属性。
additional-name
(在 n
中)给出人的任何其他名字。
该 值 必须是文本。
在形成类型为 http://microformats.org/profile/hcard
的 项目 的 n
属性的 值 的 项目 中,可以存在任意数量的名为 additional-name
的属性。
honorific-prefix
(在 n
中)给出人的尊称前缀。
该 值 必须是文本。
在形成类型为 http://microformats.org/profile/hcard
的 项目 的 n
属性的 值 的 项目 中,可以存在任意数量的名为 honorific-prefix
的属性。
honorific-suffix
(在 n
中)给出人的尊称后缀。
该 值 必须是文本。
在形成类型为 http://microformats.org/profile/hcard
的 项目 的 n
属性的 值 的 项目 中,可以存在任意数量的名为 honorific-suffix
的属性。
昵称
给出人和组织的昵称。
昵称是指代替或除了人、地、物所属名称以外的描述性名称。它还可以用来指定由 fn
或 n
属性指定的正式名称的常用形式。
该 值 必须是文本。
在每个类型为 http://microformats.org/profile/hcard
的 项目 中,可以存在任意数量的名为 nickname
的属性。
照片
给出人和组织的照片。
在每个类型为 http://microformats.org/profile/hcard
的 项目 中,可以存在任意数量的名为 photo
的属性。
生日
给出人和组织的出生日期。
在每个类型为 http://microformats.org/profile/hcard
的 项目 中,可以存在一个名为 bday
的属性。
周年纪念日
给出人和组织的出生日期。
在每个类型为 http://microformats.org/profile/hcard
的 项目 中,可以存在一个名为 anniversary
的属性。
性别
给出人的生物性别。
该 值 必须是以下之一:F
,表示“女性”;M
,表示“男性”;N
,表示“无或不适用”;O
,表示“其他”;U
,表示“未知”。
在每个类型为 http://microformats.org/profile/hcard
的 项目 中,可以存在一个名为 sex
的属性。
性别认同
给出人的性别认同。
该 值 必须是文本。
在每个类型为 http://microformats.org/profile/hcard
的 项目 中,可以存在一个名为 gender-identity
的属性。
地址
给出人和组织的送货地址。
该 值 必须是一个 项目,其中包含零个或多个以下属性:type
、post-office-box
、extended-address
和 street-address
,以及可选的 locality
属性、可选的 region
属性、可选的 postal-code
属性以及可选的 country-name
属性。
如果在形成类型为 http://microformats.org/profile/hcard
的 项目 的 adr
属性的 值 的 项目 中不存在任何 type
属性,则隐含 地址类型字符串 work
。
在每个类型为 http://microformats.org/profile/hcard
的 项目 中,可以存在任意数量的名为 adr
的属性。
type
(在 adr
中)给出送货地址的类型。
在形成类型为 http://microformats.org/profile/hcard
的 项目 的 adr
属性的 值 的 项目 中,可以存在任意数量的名为 type
的属性,但在每个这样的 adr
属性 项目 中,每个不同值只能有一个 type
属性。
post-office-box
(在 adr
中)给出人和组织的送货地址的邮政信箱部分。
该 值 必须是文本。
在形成类型为 http://microformats.org/profile/hcard
的 项目 的 adr
属性的 值 的 项目 中,可以存在任意数量的名为 post-office-box
的属性。
vCard 敦促作者不要使用此字段。
extended-address
(在 adr
中)给出人和组织的送货地址的附加部分。
该 值 必须是文本。
在形成类型为 http://microformats.org/profile/hcard
的 项目 的 adr
属性的 值 的 项目 中,可以存在任意数量的名为 extended-address
的属性。
vCard 敦促作者不要使用此字段。
street-address
(在 adr
中)给出人和组织的送货地址的街道地址部分。
该 值 必须是文本。
在形成 item 的 value 的 adr
属性的 item (类型为 http://microformats.org/profile/hcard
) 中,可以存在任意数量的名称为 street-address
的属性。
locality
(在 adr
中)提供个人或组织的送货地址的地区组件(例如城市)。
该 value 必须为文本。
在形成 item 的 value 的 adr
属性的 item (类型为 http://microformats.org/profile/hcard
) 中,可以存在一个名称为 locality
的属性。
region
(在 adr
中)提供个人或组织的送货地址的地区组件(例如州或省)。
该 value 必须为文本。
在形成 item 的 value 的 adr
属性的 item (类型为 http://microformats.org/profile/hcard
) 中,可以存在一个名称为 region
的属性。
postal-code
(在 adr
中)提供个人或组织的送货地址的邮政编码组件。
该 value 必须为文本。
在形成 item 的 value 的 adr
属性的 item (类型为 http://microformats.org/profile/hcard
) 中,可以存在一个名称为 postal-code
的属性。
country-name
(在 adr
中)提供个人或组织的送货地址的国家名称组件。
该 value 必须为文本。
在形成 item 的 value 的 adr
属性的 item (类型为 http://microformats.org/profile/hcard
) 中,可以存在一个名称为 country-name
的属性。
tel
提供个人或组织的电话号码。
该 value 必须为可以解释为电话号码的文本(如 CCITT 规范 E.163 和 X.121 中定义),或者为具有零个或多个 type
属性和恰好一个 value
属性的 item 。 [E163] [X121]
如果在形成 item 的 value 的 tel
属性的 item (类型为 http://microformats.org/profile/hcard
) 中不存在 type
属性,或者如果此类 tel
属性的 value 为文本,则隐含 电话类型字符串 voice
。
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 tel
的属性。
type
(在 tel
中)提供电话号码的类型。
该 value 必须为与某个 电话类型字符串 完全相同 的文本。
在形成 item 的 value 的 tel
属性的 item (类型为 http://microformats.org/profile/hcard
) 中,可以存在任意数量的名称为 type
的属性,但每个此类 tel
属性的 item 中,对于每个不同的值,只能存在一个 type
属性。
value
(在 tel
中)提供个人或组织的实际电话号码。
该 value 必须为可以解释为电话号码的文本,如 CCITT 规范 E.163 和 X.121 中定义。 [E163] [X121]
在形成 item 的 value 的 tel
属性的 item (类型为 http://microformats.org/profile/hcard
) 中,必须存在一个名称为 value
的属性。
email
提供个人或组织的电子邮件地址。
该 value 必须为文本。
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 email
的属性。
impp
提供与个人或组织进行即时通讯和状态协议通信的 URL 。
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 impp
的属性。
lang
提供个人或组织理解的语言。
该 value 必须为有效的 BCP 47 语言标签。 [BCP47]
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 lang
的属性。
tz
提供个人或组织的时区。
该 value 必须为文本,并且必须匹配以下语法
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 tz
的属性。
geo
提供个人或组织的地理位置。
该 value 必须为文本,并且必须匹配以下语法
带星号 (*) 的可选组件应包含在内,并且每个组件应具有六位数字。
该值以十进制度表示经度和纬度,顺序为“经度 纬度”(即“LAT LON”排序)。经度表示相对于本初子午线东侧和西侧的位置,分别为正实数或负实数。纬度表示相对于赤道的北侧和南侧的位置,分别为正实数或负实数。
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 geo
的属性。
title
提供个人或组织的职位、职能或职责。
该 value 必须为文本。
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 title
的属性。
role
提供个人或组织的角色、职业或业务类别。
该 value 必须为文本。
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 role
的属性。
logo
提供个人或组织的徽标。
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 logo
的属性。
agent
提供将代表个人或组织行事的其他人的联系信息。
该 value 必须为类型为 http://microformats.org/profile/hcard
的 item ,或者为 绝对 URL ,或者为文本。
每个类型为 http://microformats.org/profile/hcard
的 item 中,可以存在任意数量的名称为 agent
的属性。
org
提供组织的名称和单位。
该值必须是文本或一个带有单个组织名称
属性和零个或多个组织单位
属性的项目。
在每个类型为http://microformats.org/profile/hcard
的项目中,可以存在任意数量的名称为org
的属性。
组织名称
(在org
内)提供组织的名称。
该值必须是文本。
在形成类型为http://microformats.org/profile/hcard
的项目的org
属性的值的项目中,必须存在且仅存在一个名称为组织名称
的属性。
组织单位
(在org
内)提供组织单位的名称。
该值必须是文本。
在形成类型为http://microformats.org/profile/hcard
的项目的org
属性的值的项目中,可以存在任意数量的名称为组织单位
的属性。
member
提供一个表示该组成员的URL。
如果项目也具有一个名称为kind
的属性,其值为"group
",那么在每个类型为http://microformats.org/profile/hcard
的项目中,可以存在任意数量的名称为member
的属性。
related
提供与另一个实体的关联关系。
在每个类型为http://microformats.org/profile/hcard
的项目中,可以存在任意数量的名称为related
的属性。
url
(在related
内)提供关联实体的URL。
在形成类型为http://microformats.org/profile/hcard
的项目的related
属性的值的项目中,必须存在且仅存在一个名称为url
的属性。
rel
(在related
内)提供实体与关联实体之间的关联关系。
在形成类型为http://microformats.org/profile/hcard
的项目的related
属性的值的项目中,必须存在且仅存在一个名称为rel
的属性。
categories
提供可以将个人或组织归类的类别或标签的名称。
该值必须是文本。
在每个类型为http://microformats.org/profile/hcard
的项目中,可以存在任意数量的名称为categories
的属性。
note
提供关于个人或组织的补充信息或评论。
该值必须是文本。
在每个类型为http://microformats.org/profile/hcard
的项目中,可以存在任意数量的名称为note
的属性。
rev
提供联系信息的修订日期和时间。
该值必须是有效的全局日期和时间字符串的文本。
该值将当前修订的信息与信息的其它版本区分开来。
在每个类型为http://microformats.org/profile/hcard
的项目中,可以存在任意数量的名称为rev
的属性。
sound
提供与个人或组织相关的音频文件。
在每个类型为http://microformats.org/profile/hcard
的项目中,可以存在任意数量的名称为sound
的属性。
uid
提供与个人或组织相对应的全局唯一标识符。
该值必须是文本。
在每个类型为http://microformats.org/profile/hcard
的项目中,可以存在一个名称为uid
的属性。
url
提供与个人或组织相关的URL。
在每个类型为http://microformats.org/profile/hcard
的项目中,可以存在任意数量的名称为url
的属性。
以下为kind 字符串:
individual
表示单个实体(例如,个人)。
group
表示多个实体(例如,邮件列表)。
org
表示不是个人的单个实体(例如,公司)。
location
表示地理位置(例如,办公大楼)。
以下为地址类型字符串:
home
表示住宅的送货地址。
work
表示工作场所的送货地址。
以下为电话类型字符串:
home
表示住宅电话号码。
work
表示工作场所的电话号码。
text
表示电话号码支持短信(SMS)。
voice
表示语音电话号码。
fax
表示传真电话号码。
cell
表示手机号码。
video
表示视频会议电话号码。
pager
表示寻呼机电话号码。
textphone
表示为有听力或言语障碍的人设计的电信设备。
以下为关联关系字符串:
emergency
紧急联系人。
agent
代表该实体行事的另一个实体。
具有 XFN 中定义的含义。 [XFN]
在 Document
中给定一个节点列表 nodes,用户代理必须运行以下算法以提取这些节点所表示的任何 vCard 数据(仅返回第一个 vCard)。
如果 nodes 中的任何节点都不是类型为http://microformats.org/profile/hcard
的项目,则没有 vCard。中止算法,不返回任何内容。
令 node 为 nodes 中第一个类型为http://microformats.org/profile/hcard
的项目。
令 output 为一个空字符串。
向 output 添加一个 vCard 行,其类型为"BEGIN
",值为"VCARD
"。
向 output 添加一个 vCard 行,其类型为"PROFILE
",值为"VCARD
"。
向 output 添加一个 vCard 行,其类型为"VERSION
",值为"4.0
"。
向 output 添加一个 vCard 行,其类型为"SOURCE
",值为对作为文档URL的 vCard 文本字符串进行转义的结果。
如果title
元素不为空,则向 output 添加一个 vCard 行,其类型为"NAME
",值为从title
元素的后代文本内容获得的转义 vCard 文本字符串的结果。
令 sex 为空字符串。
令 gender-identity 为空字符串。
对于每个元素 element,它是 项目的一个属性 node:对于 element 的每个名称 name 在 属性名称 中,运行以下子步骤
令 parameters 为一个空的名称-值对集。
从以下列表中运行适当的子步骤集。这些步骤将设置一个变量 value,该变量在下一步中使用。
n
令 value 为空字符串。
将 收集在 subitem 中名为 family-name
的第一个 vCard 子属性 的结果追加到 value 中。
将 收集在 subitem 中名为 additional-name
的第一个 vCard 子属性 的结果追加到 value 中。
将 收集在 subitem 中名为 honorific-prefix
的第一个 vCard 子属性 的结果追加到 value 中。
将 收集在 subitem 中名为 honorific-suffix
的第一个 vCard 子属性 的结果追加到 value 中。
adr
令 value 为空字符串。
将 收集在 subitem 中名为 post-office-box
的 vCard 子属性 的结果追加到 value 中。
将 收集在 subitem 中名为 extended-address
的 vCard 子属性 的结果追加到 value 中。
将 收集在 subitem 中名为 street-address
的 vCard 子属性 的结果追加到 value 中。
将 收集在 subitem 中名为 region
的第一个 vCard 子属性 的结果追加到 value 中。
将 收集在 subitem 中名为 postal-code
的第一个 vCard 子属性 的结果追加到 value 中。
将 收集在 subitem 中名为 country-name
的第一个 vCard 子属性 的结果追加到 value 中。
如果在 subitem 中有一个名为 type
的属性,并且第一个这样的属性的 值 不是一个 项目,并且其值只包含 ASCII 字母数字,则向 parameters 添加一个名为 "TYPE
" 的参数,其值为该属性的 值。
org
令 value 为空字符串。
将 收集在 subitem 中名为 organization-name
的第一个 vCard 子属性 的结果追加到 value 中。
对于在 subitem 中名为 organization-unit
的每个属性,运行以下步骤
将一个 U+003B 分号字符 (;) 追加到 value 中。
将由属性的 值 给出的 转义 vCard 文本字符串 的结果追加到 value 中。
http://microformats.org/profile/hcard
并且 name 是 related
令 value 为空字符串。
如果在 subitem 中有一个名为 url
的属性,并且其元素是 URL 属性元素,则将由第一个这样的属性的 值 给出的 转义 vCard 文本字符串 的结果追加到 value 中,并向 parameters 添加一个名为 "VALUE
"、值为 "URI
" 的参数。
如果在 subitem 中有一个名为 rel
的属性,并且第一个这样的属性的 值 不是一个 项目,并且其值只包含 ASCII 字母数字,则向 parameters 添加一个名为 "RELATION
" 的参数,其值为该属性的 值。
令 value 为 收集在 subitem 中名为 value
的第一个 vCard 子属性 的结果。
如果在 subitem 中有一个名为 type
的属性,并且第一个这样的属性的 值 不是一个 项目,并且其值只包含 ASCII 字母数字,则向 parameters 添加一个名为 "TYPE
" 的参数,其值为该属性的 值。
sex
如果这是第一个被找到的这样的属性,则将 sex 设置为属性的 值。
gender-identity
如果这是第一个被找到的这样的属性,则将 gender-identity 设置为属性的 值。
令 value 为属性的 值。
如果 element 是 URL 属性元素 之一,则向 parameters 添加一个名为 "VALUE
"、值为 "URI
" 的参数。
否则,如果 name 是 bday
或 anniversary
并且 value 是一个 有效的日期字符串,则向 parameters 添加一个名为 "VALUE
"、值为 "DATE
" 的参数。
否则,如果 name 是 rev
并且 value 是一个 有效的全局日期和时间字符串,则向 parameters 添加一个名为 "VALUE
"、值为 "DATE-TIME
" 的参数。
在 value 中的每个 U+005C 反斜杠字符 (\) 前面添加另一个 U+005C 反斜杠字符 (\)。
在 value 中的每个 U+002C 逗号字符 (,) 前面添加一个 U+005C 反斜杠字符 (\)。
除非 name 是 geo
,否则在 value 中的每个 U+003B 分号字符 (;) 前面添加一个 U+005C 反斜杠字符 (\)。
将 value 中的每个 U+000D 回车符 U+000A 换行符字符对 (CRLF) 替换为一个 U+005C 反斜杠字符 (\),后跟一个 U+006E 拉丁小写字母 n 字符 (n)。
将 value 中剩余的每个 U+000D 回车符 (CR) 或 U+000A 换行符 (LF) 字符替换为一个 U+005C 反斜杠字符 (\),后跟一个 U+006E 拉丁小写字母 n 字符 (n)。
添加一个 类型为 name、参数为 parameters 且值为 value 的 vCard 行到 output 中。
如果 sex 或 gender-identity 具有非空字符串的值,则 添加一个 类型为 "GENDER
"、值为 sex、一个 U+003B 分号字符 (;) 和 gender-identity 的串联的 vCard 行到 output 中。
添加一个 类型为 "END
"、值为 "VCARD
" 的 vCard 行到 output 中。
当上述算法说用户代理需要 添加一个 由类型 type、可选的一些参数和一个值 value 组成 vCard 行到字符串 output 中时,它必须运行以下步骤
令 line 为一个空字符串。
将 type 追加到 line,转换为 ASCII 大写。
如果有任何参数,则对每个参数按其添加顺序运行以下子步骤
将 U+003B 分号字符 (;) 追加到 line。
将参数名称追加到 line。
将 U+003D 等号字符 (=) 追加到 line。
将参数值追加到 line。
将 U+003A 冒号字符 (:) 追加到 line。
将 value 追加到 line。
令 maximum length 为 75。
当 line 的 代码点长度 大于 maximum length 时
将 line 的前 maximum length 个代码点追加到 output。
从 line 中删除前 maximum length 个代码点。
将 U+000D 回车符 (CR) 追加到 output。
将 U+000A 换行符 (LF) 追加到 output。
将 U+0020 空格字符追加到 output。
令 maximum length 为 74。
将 line (剩余部分)追加到 output。
将 U+000D 回车符 (CR) 追加到 output。
将 U+000A 换行符 (LF) 追加到 output。
当上述步骤要求用户代理获取在 subitem 中名为 subname 的 收集 vCard 子属性 的结果时,用户代理必须运行以下步骤
令 value 为空字符串。
对于 subitem 中名为 subname 的每个属性,运行以下子步骤
如果这不是 subitem 中名为 subname 的第一个属性(忽略由上一步跳过的任何属性),则将 U+002C 逗号字符 (,) 追加到 value。
将通过属性的 值 给出的 转义 vCard 文本字符串 的结果追加到 value。
返回 value。
当上述步骤要求用户代理获取在 subitem 中名为 subname 的 收集第一个 vCard 子属性 的结果时,用户代理必须运行以下步骤
如果没有名为 subname 的属性在 subitem 中,则返回空字符串。
返回通过 subitem 中名为 subname 的第一个属性的 值 给出的 转义 vCard 文本字符串 的结果。
当以上算法说用户代理要 转义 vCard 文本字符串 value 时,用户代理必须使用以下步骤
在 value 中的每个 U+005C 反斜杠字符 (\) 前面添加另一个 U+005C 反斜杠字符 (\)。
在 value 中的每个 U+002C 逗号字符 (,) 前面添加一个 U+005C 反斜杠字符 (\)。
在 value 中的每个 U+003B 分号字符 (;) 前面添加一个 U+005C 反斜杠字符 (\)。
将 value 中的每个 U+000D 回车符 U+000A 换行符字符对 (CRLF) 替换为一个 U+005C 反斜杠字符 (\),后跟一个 U+006E 拉丁小写字母 n 字符 (n)。
将 value 中剩余的每个 U+000D 回车符 (CR) 或 U+000A 换行符 (LF) 字符替换为一个 U+005C 反斜杠字符 (\),后跟一个 U+006E 拉丁小写字母 n 字符 (n)。
返回已修改的 value。
如果输入不符合为 http://microformats.org/profile/hcard
项目类型 和 定义的属性名称 描述的规则,则此算法可能会生成无效的 vCard 输出。
以下是一个名为“杰克·鲍尔”的虚构角色的长示例 vCard。
< section id = "jack" itemscope itemtype = "http://microformats.org/profile/hcard" >
< h1 itemprop = "fn" >
< span itemprop = "n" itemscope >
< span itemprop = "given-name" > Jack</ span >
< span itemprop = "family-name" > Bauer</ span >
</ span >
</ h1 >
< img itemprop = "photo" alt = "" src = "jack-bauer.jpg" >
< p itemprop = "org" itemscope >
< span itemprop = "organization-name" > Counter-Terrorist Unit</ span >
(< span itemprop = "organization-unit" > Los Angeles Division</ span > )
</ p >
< p >
< span itemprop = "adr" itemscope >
< span itemprop = "street-address" > 10201 W. Pico Blvd.</ span >< br >
< span itemprop = "locality" > Los Angeles</ span > ,
< span itemprop = "region" > CA</ span >
< span itemprop = "postal-code" > 90064</ span >< br >
< span itemprop = "country-name" > United States</ span >< br >
</ span >
< span itemprop = "geo" > 34.052339;-118.410623</ span >
</ p >
< h2 > Assorted Contact Methods</ h2 >
< ul >
< li itemprop = "tel" itemscope >
< span itemprop = "value" > +1 (310) 597 3781</ span > < span itemprop = "type" > work</ span >
< meta itemprop = "type" content = "voice" >
</ li >
< li >< a itemprop = "url" href = "https://en.wikipedia.org/wiki/Jack_Bauer" > I'm on Wikipedia</ a >
so you can leave a message on my user talk page.</ li >
< li >< a itemprop = "url" href = "http://www.jackbauerfacts.com/" > Jack Bauer Facts</ a ></ li >
< li itemprop = "email" >< a href = "mailto:[email protected]" > [email protected]</ a ></ li >
< li itemprop = "tel" itemscope >
< span itemprop = "value" > +1 (310) 555 3781</ span > < span >
< meta itemprop = "type" content = "cell" > mobile phone</ span >
</ li >
</ ul >
< ins datetime = "2008-07-20 21:00:00+01:00" >
< meta itemprop = "rev" content = "2008-07-20 21:00:00+01:00" >
< p itemprop = "tel" itemscope >< strong > Update!</ strong >
My new < span itemprop = "type" > home</ span > phone number is
< span itemprop = "value" > 01632 960 123</ span > .</ p >
</ ins >
</ section >
奇数行换行是必要的,因为换行符在微数据中是有意义的:例如,在转换为 vCard 格式时,换行符将被保留。
此示例显示一个网站的联系信息(使用 address
元素)包含一个地址,其中包含两个街道组件
< address itemscope itemtype = "http://microformats.org/profile/hcard" >
< strong itemprop = "fn" >< span itemprop = "n" itemscope >< span itemprop = "given-name" > Alfred</ span >
< span itemprop = "family-name" > Person</ span ></ span ></ strong > < br >
< span itemprop = "adr" itemscope >
< span itemprop = "street-address" > 1600 Amphitheatre Parkway</ span > < br >
< span itemprop = "street-address" > Building 43, Second Floor</ span > < br >
< span itemprop = "locality" > Mountain View</ span > ,
< span itemprop = "region" > CA</ span > < span itemprop = "postal-code" > 94043</ span >
</ span >
</ address >
vCard 词汇表可用于标记人们的姓名
< span itemscope itemtype = "http://microformats.org/profile/hcard"
>< span itemprop = fn >< span itemprop = "n" itemscope >< span itemprop = "given-name"
> George</ span > < span itemprop = "family-name" > Washington</ span ></ span
></ span ></ span >
这会创建一个带有两个名称-值对的单个项目,一个名称为“fn”,值为“乔治·华盛顿”,另一个名称为“n”,值为第二个项目,第二个项目具有两个名称-值对“given-name”和“family-name”,其值分别为“乔治”和“华盛顿”。这被定义为映射到以下 vCard
BEGIN:VCARD PROFILE:VCARD VERSION:4.0 SOURCE:document's address FN:George Washington N:Washington;George;;; END:VCARD
具有 项目类型 http://microformats.org/profile/hcalendar#vevent
的项目表示一个事件。
此词汇表不 支持项目的全局标识符。
以下是该类型的 定义的属性名称。它们基于 Internet Calendaring and Scheduling Core Object Specification (iCalendar) 中定义的词汇表,其中可以找到有关如何解释值的更多信息。 [RFC5545]
这里只使用与事件相关的 iCalendar 词汇表部分;此词汇表无法表达完整的 iCalendar 实例。
attach
给出与事件关联的文档的地址。
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在任意数量的名称为 attach
的属性。
categories
给出可以将事件分类的类别或标签的名称。
该 值 必须是文本。
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在任意数量的名称为 categories
的属性。
class
给出与事件有关的信息的访问分类。
该 值 必须是文本,并且必须具有以下值之一
public
private
confidential
这仅仅是建议,不能被视为保密措施。
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在单个名称为 class
的属性。
comment
给出有关事件的评论。
该 值 必须是文本。
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在任意数量的名称为 comment
的属性。
description
给出事件的详细说明。
该 值 必须是文本。
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在单个名称为 description
的属性。
geo
给出事件的地理位置。
该 值 必须是文本,并且必须与以下语法匹配
带星号 (*) 的可选组件应包含在内,并且每个组件应具有六位数字。
该值以十进制度表示经度和纬度,顺序为“经度 纬度”(即“LAT LON”排序)。经度表示相对于本初子午线东侧和西侧的位置,分别为正实数或负实数。纬度表示相对于赤道的北侧和南侧的位置,分别为正实数或负实数。
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在单个名称为 geo
的属性。
location
给出事件的位置。
该 值 必须是文本。
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在单个名称为 location
的属性。
resources
给出事件所需资源。
该 值 必须是文本。
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在任意数量的名称为 resources
的属性。
status
给出事件的确认状态。
该 值 必须是文本,并且必须具有以下值之一
tentative
confirmed
canceled
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在单个名称为 status
的属性。
summary
给出事件的简短摘要。
该 值 必须是文本。
用户代理在使用该值时,应将 值 中的 U+000A 换行符 (LF) 字符替换为 U+0020 空格字符。
在每个具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中,可以存在单个名称为 summary
的属性。
dtend
给出事件结束的日期和时间。
如果具有类型 http://microformats.org/profile/hcalendar#vevent
的 项目 中存在名称为 dtend
的属性,并且该项目具有名称为 dtstart
的属性,其值为 有效的日期字符串,则名称为 dtend
的属性的 值 必须是文本,该文本也是一个 有效的日期字符串。否则,该属性的 值 必须是文本,该文本是 有效的全局日期和时间字符串。
在任一情况下,该 值 必须比同一 项目 的 dtstart
属性的值时间更晚。
由 dtend
属性给出的时间不包括在内。因此,对于全天事件,dtend
属性的 值 将是事件结束后的那一天。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中最多可以包含一个名为 dtend
的属性,只要该 http://microformats.org/profile/hcalendar#vevent
没有名为 duration
的属性。
dtstart
给出事件开始的日期和时间。
该 值 必须是文本,该文本要么是 有效的日期字符串,要么是 有效的全局日期和时间字符串。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中必须包含一个名为 dtstart
的属性。
duration
给出事件的持续时间。
该 值 必须是文本,该文本是 有效的 vEvent 持续时间字符串。
表示的持续时间是值中所有表示为整数的持续时间的总和。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中最多可以包含一个名为 duration
的属性,只要该 http://microformats.org/profile/hcalendar#vevent
没有名为 dtend
的属性。
transp
给出事件是否被视为在日历上消耗时间,以用于空闲时间搜索。
该 值 必须是文本,其值为以下值之一
opaque
transparent
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中最多可以包含一个名为 transp
的属性。
contact
给出事件的联系信息。
该 值 必须是文本。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中可以包含任意数量的名为 contact
的属性。
url
给出事件的 URL。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中最多可以包含一个名为 url
的属性。
uid
给出与事件相对应的全局唯一标识符。
该 值 必须是文本。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中最多可以包含一个名为 uid
的属性。
exdate
给出尽管有重复规则,但事件不会发生的日期和时间。
该 值 必须是文本,该文本要么是 有效的日期字符串,要么是 有效的全局日期和时间字符串。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中可以包含任意数量的名为 exdate
的属性。
rdate
给出事件重复发生的日期和时间。
该 值 必须是文本,其值为以下值之一
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中可以包含任意数量的名为 rdate
的属性。
rrule
给出查找事件发生的日期和时间的规则。
该 值 必须是文本,该文本与 iCalendar 中定义的 RECUR 值类型匹配。 [RFC5545]
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中最多可以包含一个名为 rrule
的属性。
created
给出事件信息首次在日历系统中创建的日期和时间。
该 值 必须是文本,该文本是 有效的全局日期和时间字符串。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中最多可以包含一个名为 created
的属性。
last-modified
给出事件信息最后一次在日历系统中修改的日期和时间。
该 值 必须是文本,该文本是 有效的全局日期和时间字符串。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中最多可以包含一个名为 last-modified
的属性。
sequence
给出事件信息的修订版本号。
每个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目 中最多可以包含一个名为 sequence
的属性。
如果字符串匹配以下模式,则它是 有效的 vEvent 持续时间字符串
一个 U+0050 拉丁大写字母 P 字符 (P)。
以下之一
一个 有效的非负整数,后跟一个 U+0057 拉丁大写字母 W 字符 (W)。该整数表示该周数的持续时间。
以下至少一个,可能按此顺序同时出现两个
给定 Document
中的一系列节点 nodes,用户代理必须运行以下算法来 提取这些节点所表示的任何 vEvent 数据
如果 nodes 中的节点都不是类型为 http://microformats.org/profile/hcalendar#vevent
的 项目,则不存在 vEvent 数据。中止算法,不返回任何内容。
令 output 为一个空字符串。
添加一个 iCalendar 行,其类型为 "BEGIN
",值是 "VCALENDAR
",添加到 output 中。
添加一个 iCalendar 行,其类型为 "PRODID
",值是等于表示用户代理的特定于用户代理的字符串,添加到 output 中。
添加一个 iCalendar 行,其类型为 "VERSION
",值是 "2.0
",添加到 output 中。
对于 nodes 中的每个节点 node,如果它是一个类型为 http://microformats.org/profile/hcalendar#vevent
的 项目,则运行以下步骤
添加一个 iCalendar 行,其类型为 "BEGIN
",值是 "VEVENT
",添加到 output 中。
添加一个 iCalendar 行,其类型为 "DTSTAMP
",值是包含一个 iCalendar DATE-TIME 字符串,该字符串表示当前日期和时间,并带有一个注释 "VALUE=DATE-TIME
",添加到 output 中。 [RFC5545]
对于每个 作为项目的属性 node 的元素 element:对于 element 的 属性名称 中的每个名称 name,从以下列表中运行适当的一组子步骤
跳过此属性。
dtend
dtstart
exdate
rdate
created
last-modified
令 value 为从属性的 值 中删除所有 U+002D HYPHEN-MINUS (-) 和 U+003A COLON (:) 字符后的结果。
如果属性的 值 是一个 有效的日期字符串,则将类型为 name,值为 value 的 iCalendar 行添加到 output 中,并添加注释 "VALUE=DATE
"。
否则,如果属性的 值 是一个 有效的全局日期和时间字符串,则将类型为 name,值为 value 的 iCalendar 行添加到 output 中,并添加注释 "VALUE=DATE-TIME
"。
否则,跳过该属性。
将类型为 name,值为属性的 值 的 iCalendar 行添加到 output 中。
将类型为 "END
",值为 "VEVENT
" 的 iCalendar 行添加到 output 中。
将类型为 "END
",值为 "VCALENDAR
" 的 iCalendar 行添加到 output 中。
当上述算法指示用户代理添加一个由类型 type、值 value 以及可选注释组成的 iCalendar 行到字符串 output 中时,它必须执行以下步骤。
令 line 为一个空字符串。
将 type 添加到 line 中,并 转换为 ASCII 大写。
如果有注释
将 U+003B 分号字符 (;) 追加到 line。
将注释添加到 line 中。
将 U+003A 冒号字符 (:) 追加到 line。
在 value 中的每个 U+005C 反斜杠字符 (\) 前面添加另一个 U+005C 反斜杠字符 (\)。
在 value 中的每个 U+002C 逗号字符 (,) 前面添加一个 U+005C 反斜杠字符 (\)。
在 value 中的每个 U+003B 分号字符 (;) 前面添加一个 U+005C 反斜杠字符 (\)。
将 value 中的每个 U+000D 回车符 U+000A 换行符字符对 (CRLF) 替换为一个 U+005C 反斜杠字符 (\),后跟一个 U+006E 拉丁小写字母 n 字符 (n)。
将 value 中剩余的每个 U+000D 回车符 (CR) 或 U+000A 换行符 (LF) 字符替换为一个 U+005C 反斜杠字符 (\),后跟一个 U+006E 拉丁小写字母 n 字符 (n)。
将 value 追加到 line。
令 maximum length 为 75。
当 line 的 代码点长度 大于 maximum length 时
将 line 的前 maximum length 个代码点追加到 output。
从 line 中删除前 maximum length 个代码点。
将 U+000D 回车符 (CR) 追加到 output。
将 U+000A 换行符 (LF) 追加到 output。
将 U+0020 空格字符追加到 output。
令 maximum length 为 74。
将 line (剩余部分)追加到 output。
将 U+000D 回车符 (CR) 追加到 output。
将 U+000A 换行符 (LF) 追加到 output。
如果输入不符合 http://microformats.org/profile/hcalendar#vevent
项目类型 和 已定义的属性名称 的规则,则该算法可能会生成无效的 iCalendar 输出。
这是一个使用 vEvent 词汇标记事件的页面示例。
< body itemscope itemtype = "http://microformats.org/profile/hcalendar#vevent" >
...
< h1 itemprop = "summary" > Bluesday Tuesday: Money Road</ h1 >
...
< time itemprop = "dtstart" datetime = "2009-05-05T19:00:00Z" > May 5th @ 7pm</ time >
(until < time itemprop = "dtend" datetime = "2009-05-05T21:00:00Z" > 9pm</ time > )
...
< a href = "http://livebrum.co.uk/2009/05/05/bluesday-tuesday-money-road"
rel = "bookmark" itemprop = "url" > Link to this page</ a >
...
< p > Location: < span itemprop = "location" > The RoadHouse</ span ></ p >
...
< p >< input type = button value = "Add to Calendar"
onclick = "location = getCalendar(this)" ></ p >
...
< meta itemprop = "description" content = "via livebrum.co.uk" >
</ body >
getCalendar()
函数留给读者作为练习。
同一个页面可以提供一些标记,例如以下内容,用于复制和粘贴到博客中。
< div itemscope itemtype = "http://microformats.org/profile/hcalendar#vevent" >
< p > I'm going to
< strong itemprop = "summary" > Bluesday Tuesday: Money Road</ strong > ,
< time itemprop = "dtstart" datetime = "2009-05-05T19:00:00Z" > May 5th at 7pm</ time >
to < time itemprop = "dtend" datetime = "2009-05-05T21:00:00Z" > 9pm</ time > ,
at < span itemprop = "location" > The RoadHouse</ span > !</ p >
< p >< a href = "http://livebrum.co.uk/2009/05/05/bluesday-tuesday-money-road"
itemprop = "url" > See this event on livebrum.co.uk</ a > .</ p >
< meta itemprop = "description" content = "via livebrum.co.uk" >
</ div >
具有 项目类型 http://n.whatwg.org/work
的项目代表一个作品(例如文章、图片、视频、歌曲等)。此类型主要用于允许作者为作品添加许可信息。
以下是该类型 已定义的属性名称。
work
标识要描述的作品。
每个类型为 http://n.whatwg.org/work
的 项目 中必须存在一个名为 work
的属性。
title
给出作品的名称。
每个类型为 http://n.whatwg.org/work
的 项目 中可以存在一个名为 title
的属性。
作者
给出作品的作者或创作者之一的姓名或联系信息。
该 值 必须是一个类型为 http://microformats.org/profile/hcard
的 项目 或者文本。
每个类型为 http://n.whatwg.org/work
的 项目 中可以存在任意数量的名称为 author
的属性。
许可证
标识作品可用的许可证之一。
每个类型为 http://n.whatwg.org/work
的 项目 中可以存在任意数量的名称为 license
的属性。
此示例显示了一个名为 My Pond 的嵌入图像,它同时根据知识共享署名-相同方式共享 4.0 国际许可证和 MIT 许可证授权。
< figure itemscope itemtype = "http://n.whatwg.org/work" >
< img itemprop = "work" src = "mypond.jpeg" >
< figcaption >
< p >< cite itemprop = "title" > My Pond</ cite ></ p >
< p >< small > Licensed under the < a itemprop = "license"
href = "https://creativecommons.org/licenses/by-sa/4.0/" > Creative
Commons Attribution-Share Alike 4.0 International License</ a >
and the < a itemprop = "license"
href = "http://www.opensource.org/licenses/mit-license.php" > MIT
license</ a > .</ small >
</ figcaption >
</ figure >