===== h-card ===== **h-card** 是用来在WEB上发布人或组织的简单,开放格式。h-card是几个 [[microformats|microformat]] 标准草案中的一个,适合于在HTML中内嵌数据。 h-card 是对 [[hCard]] 格式的[[microformats2]]更新。 按照[[http://creativecommons.org/publicdomain/zero/1.0/|CC0创作共用协议]],为在法律上扩展允许范围,编辑放弃了该工作的所有的版权和相关邻权。此外,在2018年5月20日,编辑将该规范置于[[http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0|开放网络基础协议版本1.0]]之下。 ==== 例子 ==== 这是一个简单的最小的关于一个人的例子: 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 例子
Eureka Chen (Mozilla Foundation)
解析为 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]]