目录

h-card

h-card 是用来在WEB上发布人或组织的简单,开放格式。h-card是几个 microformat 标准草案中的一个,适合于在HTML中内嵌数据。

h-card 是对 hCard 格式的microformats2更新。

按照CC0创作共用协议,为在法律上扩展允许范围,编辑放弃了该工作的所有的版权和相关邻权。此外,在2018年5月20日,编辑将该规范置于开放网络基础协议版本1.0之下。

例子

这是一个简单的最小的关于一个人的例子:

<a class="h-card" href="http://eeblog.net">Eureka's Blog</a>

解析为JSON:

{
  "items": [
    {
      "type": [
        "h-card"
      ],
      "properties": {
        "name": [
          "Joe Bloggs"
        ],
        "url": [
          "http://example.com"
        ]
      }
    }
  ]
}

和一个稍微完整点的例子:

<p class="h-card">
  <img class="u-photo" src="http://example.org/photo.png" alt="" />
  <a class="p-name u-url" href="http://example.org">Joe Bloggs</a>
  <a class="u-email" href="mailto:joebloggs@example.com">joebloggs@example.com</a>, 
  <span class="p-street-address">17 Austerstræti</span>
  <span class="p-locality">Reykjavík</span>
  <span class="p-country-name">Iceland</span>
</p>

解析为 JSON:

{
  "items": [
    {
      "type": [
        "h-card"
      ],
      "properties": {
        "photo": [
          "http://example.org/photo.png"
        ],
        "name": [
          "Joe Bloggs"
        ],
        "url": [
          "http://example.org"
        ],
        "email": [
          "mailto:joebloggs@example.com"
        ],
        "street-address": [
          "17 Austerstræti"
        ],
        "locality": [
          "Reykjavík"
        ],
        "country-name": [
          "Iceland"
        ]
      }
    }
  ]
}

嵌套的 h-card 例子

<div class="h-card">
  <a class="p-name u-url"
     href="https://eureka.name">Eureka Chen</a> 
  (<a class="p-org h-card" 
      href="http://mozilla.org/">Mozilla Foundation</a>)
</div>

解析为 JSON:

{
  "items": [{ 
    "type": ["h-card"],
    "properties": {
      "name": ["Eureka Chen"],
      "url": ["https://eureka.name"],
      "org": [{
        "value": "Mozilla Foundation",
        "type": ["h-card"],
        "properties": {
          "name": ["Mozilla Foundation"],
          "url": ["http://mozilla.org/"]
        }
      }]
    }
  }]
}

注: 嵌套 h-card 有隐含的 'name' 和 'url' 属性,就象其它在<a href>上的仅根类名(root-class-name-only)h-card那样。

开始

h-card 是表示存在一个h-card的 根类名

对于最小的例子,最多需要p-name, u-urlu-photo (就象上面的第一个),只需要root类名参见 隐含属性

对于更复杂的例子,根类名必须放在一个能够包括所有所需属性的元素上,而属性自身使用以下的类名进行标记。

了解更多的属性类名请参见 microformats2-parsing 。.

属性

在类h-card中的h-card属性:

所有的属性都是可选的。

当前在外面使用的实验性的属性,但还(没有)成为官方h-card规范的一部分。

状态

h-card 是microformats.org的草案规范。在 h-card-feedback 和irc.freenode.net上的#microformats irc 频道上可以公开讨论。

h-card 已经准备好在自然环境下使用和实施,但为了向后兼容,你应该将顶级h-cards 作为经典 hCard标记。

属性细节

(留位,等待扩展)

p-adr

p-adr 是可选的内嵌一个 h-adr 到簇关联结构化地址属性。 例如添加 “p-adr” 到前面的例子:

<div class="h-card">
  <p class="p-name">Joe Bloggs</p>
  <p class="p-adr h-adr">
    <span class="p-street-address">17 Austerstræti</span>
    <span class="p-locality">Reykjavík</span>
    <span class="p-country-name">Iceland</span>
  </p>
</div>

问:为什么要使用“p-adr”来聚集相关的结构化地址属性?

答:因为如果你有多个结构化地址,聚簇哪些属性与哪个地址一起可以确定它们能保持在一起,而不是依赖于数组索引或其他启发式。

p-tel

注意:'p-tel'中'value'的使用应该由值类模式的支持自动处理。 目前,以前hCard的'tel'子属性'type'丢弃/忽略。 如果有证据显示需要额外的电话类型(例如传真),我们可以根据需要引入新的直接属性(例如p-tel-fax)。

dt-bday

使用截短的出生日期表示法通常是很好的做法,如the vcard规范中所述

保留属性

保留属性(如果有的话,在实践中用处不大):

在自然中的例子

现实世界中发布或使用h-card的网站和服务的范例:

离线

验证

测试和验证microformats2标记一般有:

实现

发布或使用h-card的软件实现,包括主题,插件或扩展:

(这部分预留,需要扩展!实际上,默认情况下,每个独立网站上的几乎每个CMS都支持发布h-card。)

在添加实现时,请提供并链接到其主页和开放源代码库(如果有的话)。 * GNUsocial 源代码 * Hubzilla [https://github.org/redmatrix/hubzilla|源代码]] * Friendica [https://github.org/friendica/friendica|源代码]] * InkBlot * … * …

向后兼容性

发布商兼容性

为了向后兼容,除了更具前瞻性的h-card属性之外,您还可能希望使用经典的hCard 类名,例如:

<p class="h-card vcard">
  <span class="p-name fn">Joe Bloggs</span>,
  <span class="p-org org">Awesome Nonprofit</span>
  ...
</p>

vcard是一个向后兼容的根类名称,表示存在一个 hCard.

fnorg,以及其它向后兼容的hCard属性类名称列在下面。

解析器兼容性

只有找到经典的根类名称并将它们解析为microformats2属性时,微格式解析器才检测经典属性

如果发现 “h-card” ,不用在同一元素中寻找 “vcard” 。

Compat. 根类名: vcard
属性: (除非令外指定,解析 p- 纯文本)

保留:(解析器可能实现向后兼容属性,如果它们这样做,它们必须以这种方式实现:

背景

This work is based on the existing hCard and vcard specifications.

设计原则

(留白,扩展)

补充

我们已经非常努力地使h-card同vCard4词汇表保持兼容,因此需要补充的话可以在vCard4邮件列表中提出。

不过,您仍然可以使用这个wiki来抓取h-card的附加内容: * h-card-brainstorming * h-card-brainstorming

参见