Eureka's Blog
解析为JSON:
{
"items": [
{
"type": [
"h-card"
],
"properties": {
"name": [
"Joe Bloggs"
],
"url": [
"http://example.com"
]
}
}
]
}
和一个稍微完整点的例子:
Joe Bloggs
joebloggs@example.com,
17 Austerstræti
Reykjavík
Iceland
解析为 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 例子
解析为 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' 属性,就象其它在''%%%%''上的仅根类名(root-class-name-only)h-card那样。
=== 开始 ===
类 ''h-card'' 是表示存在一个h-card的 //根类名// 。
对于最小的例子,最多需要''p-name'', ''u-url'' 和 ''u-photo'' (就象上面的第一个),只需要root类名参见 [[microformats-2-implied-properties|隐含属性]]。
对于更复杂的例子,根类名必须放在一个能够包括所有所需属性的元素上,而属性自身使用以下的类名进行标记。
了解更多的属性类名请参见 [[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''' - e.g. Ph.D, Esq.
* ''p-nickname'' - 昵称/别名/操控名
* ''u-email'' - 电子邮件地址
* ''u-logo'' - 一个代表一个人或组织的图标。
* ''u-photo''
* ''u-url'' - 主页
* ''u-uid'' - 通用唯一识别码,典型的权威URL
* ''p-category'' - 类别/标签
* ''p-adr'' - 邮政地址,可选 嵌入一个 [[h-adr]]
* ''p-post-office-box''
* ''p-extended-address'' - 部门/随员/房间名/号如果有
* ''p-street-address'' - 街道号 + 名称
* ''p-locality'' - 城市/城镇/乡村
* ''p-region'' - 州/县郡/省
* ''p-postal-code'' - 邮政编码, 例如 US ZIP
* ''p-country-name'' - 国家名
* ''p-label''
* ''p-geo'' 或 '''u-geo'', 可选的嵌入一个 [[h-geo]]
* ''p-latitude'' - 十进制纬度
* ''p-longitude'' - 十进制经度
* ''p-altitude'' - 十进制海拨高度
* ''p-tel'' - 电话号码
* ''p-note'' - 附加注释
* ''dt-bday'' - 生日
* ''u-key'' - 密码公钥,例如 SSH 或 GPG
* ''p-org'' - 隶属组织,可选嵌入一个 [[h-card]]
* ''p-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).
* 由 [[https://vanderven.se/martijn/|Martijn van der Ven]] 使用,带有它给定名的剪片。
==== 状态 ====
**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" 到前面的例子:
Joe Bloggs
17 Austerstræti
Reykjavík
Iceland
问:为什么要使用“p-adr”来聚集相关的结构化地址属性?
答:因为如果你有多个结构化地址,聚簇哪些属性与哪个地址一起可以确定它们能保持在一起,而不是依赖于数组索引或其他启发式。
=== p-tel ===
注意:'p-tel'中'value'的使用应该由[[value-class-pattern|值类模式]]的支持自动处理。 目前,以前[[hCard]]的'tel'子属性'type'丢弃/忽略。 如果有证据显示需要额外的电话类型(例如传真),我们可以根据需要引入新的直接属性(例如p-tel-fax)。
=== dt-bday ===
使用截短的出生日期表示法通常是很好的做法,如[[https://tools.ietf.org/html/rfc6350#section-4.3.1|the vcard规范]]中所述
* ''1985-04'' 代表1985年4月
* ''1985'' 代表年份1985
* ''--04-12'' 代表没有批定年份的的4月12日
=== 保留属性 ===
保留属性(如果有的话,在实践中用处不大):
* ''p-organization-name''
* ''p-organization-unit''
* ''p-tz'' - 时区偏离例如 ''PST''
* ''dt-rev''
==== 在自然中的例子 ====
现实世界中发布或使用h-card的网站和服务的范例:
* ... 将在自然你看到使用h-card放天这里。
* [[https://eureka.name|Eureka Chen]]陈耀军的主页使用 h-card 标记个人信息。
* [[http://www.securityjobslondon.co.uk|Security Jobs London]] 在每页的页脚使用 h-card 和传统 [[hCard]] 回退标记 (为满足 [[https://search.google.com/structured-data/testing-tool|Google结构化数据测试工具]])
* 截至2013年8月6日,App.net在所有个人资料页面和永久链接页面上推出了对h-card和h-entry的支持(示例) ([[https://alpha.app.net/voidfiles | 示例]])
* Brett Comnes 用h-card标记他的贴子 ([[http://bret.io/2013/06/29/getting-started-with-bower/|示例]])
* Ben Werdmuller 用h-card标记他的主页和帖子 [[http://werd.io/view/51d5097fbed7ded0633a5956|示例]])
* [[http://www.w3.org/conf/|W3Conf 2013] 为所有的演讲嘉宾和着名的与会者使用了h-card。 h-cards特别适用于隐含的名称,网址和照片属性。
* [[http://wordpress.org/extend/themes/sempress|SemPress]]是WordPress主题支持 h-card, h-feed/h-entry 和 h-as-*
* [[http://the-pastry-box-project.net/|The Pastry Box Project]] 他们的主页和个人想法页面上使用h-card标记
* Mozilla的WebFWD 在 [[https://webfwd.org/about/experts/|专家] 和 [[https://webfwd.org/about/team/|l团队]] 页上使用 h-card 格式。
* [[http://indiewebcamp.com|IndieWebCamp]] 给它的组织和地埋位置有 [[microformats2]] h-event 标记内嵌h-card。
* [https://wiki.mozilla.org/Events|Mozilla Events] 页有 [[microformats2]] h-event标记,出席者使用h-card作标记。
=== 离线 ===
* spreadly marks up share permalink pages with minimal h-cards inside h-entry
=== 验证 ===
* **[[http://indiewebify.me/validate-h-card/ indiewebify.me h-card validator]]** 解析 [[h-card]] 标记,用代码例子建议添加的东西。[[validators]]
测试和验证[[microformats2]]标记一般有:
* http://waterpigs.co.uk/php-mf2/ - 直接输入标记
* http://pin13.net/ - 输到到页面的URL测试哪里说的“微格式解析器”
=== 实现 ===
发布或使用h-card的软件实现,包括主题,插件或扩展:
(这部分预留,需要扩展!实际上,默认情况下,每个[[https://indieweb.org/|独立网站]]上的几乎每个CMS都支持发布h-card。)
在添加实现时,请提供并链接到其主页和开放源代码库(如果有的话)。
* [[https://gnu.io/social/|GNUsocial]] [[https://git.gnu.io/gnu/gnu-social/|源代码]]
* [[https://hubzilla.org/hubzilla/|Hubzilla]] [https://github.org/redmatrix/hubzilla|源代码]]
* [[http://friendica.com/|Friendica]] [https://github.org/friendica/friendica|源代码]]
* [[http://github.com/dissolve/inkblot|InkBlot]]
* ...
* ...
==== 向后兼容性 ====
=== 发布商兼容性 ===
为了向后兼容,除了更具前瞻性的h-card属性之外,您还可能希望使用经典的hCard 类名,例如:
Joe Bloggs,
Awesome Nonprofit
...
类''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-'''
==== 背景 ====
This work is based on the existing [[hCard]] and [[vcard]] specifications.
==== 设计原则 ====
(留白,扩展)
==== 补充 ====
我们已经非常努力地使h-card同vCard4词汇表保持兼容,因此需要补充的话可以在vCard4邮件列表中提出。
不过,您仍然可以使用这个wiki来抓取h-card的附加内容:
* [[h-card-brainstorming]]
* [[h-card-brainstorming]]
==== 参见 ====
* [[microformats2]]
* [[microformats2-parsing]]
* [[h-adr]]
* [[h-geo]]
* [[hCard]]