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-url
和 u-photo
(就象上面的第一个),只需要root类名参见 隐含属性。
对于更复杂的例子,根类名必须放在一个能够包括所有所需属性的元素上,而属性自身使用以下的类名进行标记。
了解更多的属性类名请参见 microformats2-parsing 。.
在类h-card中的h-card属性:
p-name
- 一个人或组织的全/格式化名字p-honorific-prefix
- 例如 Mrs., Mr. or Dr.p-given-name
- 给定 (经常为第一) 名,中文的名字p-additional-name
- 其它/中间名p-family-name
- 家庭名 (经常为最后) 名,中文的姓p-sort-string
- 排序字串p-honorific-suffix</code>
' - e.g. Ph.D, Esq.p-nickname
- 昵称/别名/操控名u-email
- 电子邮件地址u-logo
- 一个代表一个人或组织的图标。u-photo
u-url
- 主页u-uid
- 通用唯一识别码,典型的权威URLp-category
- 类别/标签p-adr
- 邮政地址,可选 嵌入一个 h-adr p-post-office-box
p-extended-address
- 部门/随员/房间名/号如果有p-street-address
- 街道号 + 名称p-locality
- 城市/城镇/乡村p-region
- 州/县郡/省p-postal-code
- 邮政编码, 例如 US ZIPp-country-name
- 国家名p-label
p-latitude
- 十进制纬度p-longitude
- 十进制经度p-altitude
- 十进制海拨高度p-tel
- 电话号码p-note
- 附加注释dt-bday
- 生日u-key
- 密码公钥,例如 SSH 或 GPGp-org
- 隶属组织,可选嵌入一个 h-cardp-job-title
- 工作头衔, 以前在hCard中的title,消除歧义。p-role
- 角色描述 u-impp
按照 RFC4770, 新的在 vCard4 (RFC 6350)p-sex
- 生物学性,新的在vCard4 (RFC 6350)p-gender-identity
- 性别身份,新的在 vCard4 (RFC 6350)dt-anniversary
所有的属性都是可选的。
当前在外面使用的实验性的属性,但还(没有)成为官方h-card规范的一部分。
u-sound
- 名字(name)属性的恰当发音的声音文件。按照 vCard (RFC 6350).h-card 是microformats.org的草案规范。在 h-card-feedback 和irc.freenode.net上的#microformats irc 频道上可以公开讨论。
h-card 已经准备好在自然环境下使用和实施,但为了向后兼容,你应该将顶级h-cards 作为经典 hCard标记。
(留位,等待扩展)
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'中'value'的使用应该由值类模式的支持自动处理。 目前,以前hCard的'tel'子属性'type'丢弃/忽略。 如果有证据显示需要额外的电话类型(例如传真),我们可以根据需要引入新的直接属性(例如p-tel-fax)。
使用截短的出生日期表示法通常是很好的做法,如the vcard规范中所述
1985-04
代表1985年4月1985
代表年份1985–04-12
代表没有批定年份的的4月12日保留属性(如果有的话,在实践中用处不大):
p-organization-name
p-organization-unit
p-tz
- 时区偏离例如 <data class=“p-tz” value=“-0800”>PST</data>
dt-rev
现实世界中发布或使用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.
fn,org,以及其它向后兼容的hCard属性类名称列在下面。
只有找到经典的根类名称并将它们解析为microformats2属性时,微格式解析器才应检测经典属性
如果发现 “h-card” ,不用在同一元素中寻找 “vcard” 。
Compat. 根类名: vcard
属性: (除非令外指定,解析 p- 纯文本)
fn
- 解析作 p-name
honorific-prefix
given-name
additional-name
family-name
honorific-suffix
nickname
email
- 解析作 u-
logo
- 解析作 u-
photo
- 解析作 u-
url
- 解析作 u-
uid
- 解析作 u-
category
adr
- 解析作 p-adr h-adr
包括compat要类adr
extended-address
street-address
locality
region
postal-code
country-name
label
geo
- 解析作 p-geo h-geo
包括compat根类 geo
latitude
longitude
tel
note
bday
- 解析作 'dt-
'key
- 解析作 'u-
'org
organization-name
organization-unit
title
- 解析作 'p-job-title
'role
保留:(解析器可能实现向后兼容属性,如果它们这样做,它们必须以这种方式实现:
tz
rev
- 解析为 'dt-
'(留白,扩展)
我们已经非常努力地使h-card同vCard4词汇表保持兼容,因此需要补充的话可以在vCard4邮件列表中提出。
不过,您仍然可以使用这个wiki来抓取h-card的附加内容: * h-card-brainstorming * h-card-brainstorming