您现在的位置是:网站首页> 编程资料编程资料
hCalendar微格式 关于事件和基于时间或地点的活_CSS教程_CSS_网页制作_
2021-09-08
888人已围观
简介 今天让我们一起来探讨一下hCalendar微格式,通过该微格式我可以为那些关于事件和基于时间或地点的活动提供语义和结构化信息。
在第一部分中,使用rel来定义基于链接的关系
在第二部分中,使用XFN微格式为链接增加人际关系的描述
在第三部分中,使用hCard微格式来描述人、公司和地点
还不错。但是距离全面介绍微格式还有一定差距呢。
所以,今天让我们一起来探讨一下hCalendar微格式,通过该微格式我可以为那些关于事件和基于时间或地点的活动提供语义和结构化信息。
来源:iCalendar
iCalendar(或者iCal)是分享日历数据的标准。通常的,他被广泛用在Email交换中,虽然并不仅仅局限于此。同hCard类似,网站开发人员可以通过hCalendar将iCalendar数据嵌入到网页数据中。hCalendar同iCalendar之间同样是1:11:11:1的对应关系,从而允许解析器从网页中提取信息提供给日历应用使用。1:11:11:1的对应关系,从而允许解析器从网页中提取信息提供给日历应用使用。
历史回顾:iCalendar建立在vCalendar(虚拟日历Virtual Calendar)基础之上,vCalendar是一个开源的日历应用,用来在线发布和维护事件和时刻表。vCalendar同vCard电子商务名片格式一起开发的。
基于日期/时间的活动
hCalendar微格式描述在日历中使用的事件(或者任何基于日期/时间的活动)信息,包括(但不限于):
- 概述
- 日期和时间
- 地点
- 详细描述
- 重复发生
基础知识
跟hCard一样,hCalendar遵循一些基本规则:
- 属性和子属性通过class来描述。
- 因为跟iCalendar之间1:1的对应关系,特定的hCalendar属性是建立在iCalendar属性名称基础上的(例如,vevent)
- 属性和子属性名字大小写敏感
- “根”属性不能同其他属性组合。因此是无效的。
还有一条虽然不是规则,但是需要铭记在心:使用什么样的标记元素并不重要。class的值(属性/子属性)才决定hCalendar微格式。但之前也说过,我非常鼓励使用具有语义特性的标记元素。
Profile
同所有微格式一样,非常鼓励您在网页的部分中包含微格式的声明,使用hCalendar的Profile:
profile=”http://purl.org/uF/hCalendar/1.0/”>
W3C允许定义多个Profile值,使用空格隔开,所以可以自己选择使用多个Profile:
URL,该URL涵盖了所有非提案微格式:
最近一篇BarCamp Albuquerque 3的文章,在那里我使用了hCalendar微格式:
- class=”vevent”>
Yes, it's short notice, but mark your calendars: class=”url summary”>class=”category”>BarCamp Albuquerque 3 is this weekend.
- When:
- class=”dtstart” title=”2008-09-13T09:00:00″>September 13–class=”dtend” title=”2008-09-14T18:00:00″>14, from 9am–6pm both days
- Where:
- class=”location vcard”>CJW Cafe on 4801 Alameda BlvdNE, Albuquerque, NM87113
- What:
- class=”description”>A class=”duration” title=”P2D”>two-day event all about the web — design (visual, experience, information architecture), technology (infrastructure, programming), social and new media, and other stuff that is just plain cool.
说说各部分
我们将上面的例子分开讨论一下。
“根”:vevent
您可能注意到在我例子中的根属性是vevent,而不是vcalendar。这是因为hCalendar有一个可选的根元素,只有在您需要在页面中描述超过一个日历事件时才需要出现。对于尽有一个日历事件的网页,vcalendar属性被假设已经出现在页面中。既然我的例子只是一个事件,我把所有的事件信息都包含在 包含他的元素可以是任何元素( hCalendar必须的属性为(除了根元素vevent)summary和dtstart. summary属性描述了事件的概要信息。此属性包含的内容通常是在日历应用中显示的基本信息,比如事件的名称。所以,在我的例子中,“BarCamp Albuquerque 3”被包含在summary之中,也就是在我个人日历中用来显示的名称: Yes, it's short notice, but mark your calendars: dtstart dtstart属性描述了事件的开始时间/日期。在上面的例子中,“September 13”: 注意到包含dtstart的容器是,被包含的信息为“September 13”而title的属性值是“2008-09-13T09:00:00”: 这是目前在微格式中定义日期/时间格式的推荐做法──被称作“日期时间设计模式”(是abbr设计模式的扩展)。此模式开发的目的是为了支持微格式的原则之一:先为人类阅读设计,机器次之,最终是让人类和机器都能够阅读识别。因此,逻辑上是,机器──例如这些web应用──会使用title部分,而浏览器会为人类阅读只显示中的内容。 同时,作为使用日期时间模式规范的一部分,日期/时间信息应当被遵循ISO 8601的定义: 为了简单说明,举个例子,2008-09-30T13:00:00 = 2008年9月30日下午1:00(当地时间)。上面例子中的字母”T”将日期信息和时间信息分开。如果您仅仅有一个日期,忽略“T”和后面的时间信息就可以了。类似的,如果您只有时间信息,忽略掉“T”和前面的日期信息即可。这个模式目前不幸的还有一些无障碍访问问题,我会在文章后面继续讨论。现在,让我们继续上面的例子。 上面例子中还有可选的日期时间属性,包括:dtend和duration。 dtend属性描述了事件结束的日期/时间。在我的例子中,为“September 14”: duration属性用来描述事件的持续时间。在上面的例子中,是两天: 同日期/时间一样,持续时间信息也使用日期时间设计模式来描述,机器可读的信息包含在title中,而人类可读的信息包含在。同样,title持续时间的值也要遵循ISO 8601的定义,只是需要在前面加“P”用以描述持续的阶段时间。持续的阶段时间可以使用下面这些单位描述:年 (Y), 月 (M), 周 (W), 天 (D), 小时 (H), 分钟 (M) 和秒 (S)。可以参考下面例子: 在前面第三部分中曾经简单讨论过使用日期时间设计模式会有一些无障碍访问问题。无障碍访问的根本问题在于屏幕发声程序如何对待title值:他们读取这个属性。所以,当使用时间日期模式把机器可读的ISO 8601日期时间信息放到title中时,屏幕发声会按照字面来读出这些数值。想象一下您的屏幕发声程序读取:“Two thousand eight dash zero nine dash thirty。”如果时间和日期的值更长的话会更糟糕。这对用户是相当不友好的。 目前,这些问题还没有被解决。不过已经有一些提交上来的候选意见,但是微格式社区还在继续讨论更好解决这些问题的途径。针对我自己的博客而言,分析数据表明我没有任何屏幕发声程序的访问者。我很急切想知道如何解决这些问题,从而实现这些微格式,让他们支持无障碍访问的用户。 我的例子中还包括另外四个可选的属性:url, category, location和description。 Yes, it's short notice, but mark your calendars: url category属性描述事件的类型。在上面例子中为“BarCamp”: Yes, it's short notice, but mark your calendars: BarCamp Albuquerque 3 is this weekend. 跟之前提过的属性不同的是,category可以被使用无限次。一些常用的category例子包括: 某种程度上来说,category相当于事件的“标签”。所以,如果我选择标记我的例子包含到BarCamp首页的链接的话,我会同时使用rel-tag微格式和category: You may be wondering what is class=”category”rel=”tag”>BarCamp anyway? location属性描述事件发生的地点。 最后,description属性描述事件比summary更详细的描述: 还有一些hCalendar常用的属性我没有在上面例子中使用的: 还有很多其他的属性可以被应用。查看hCalendar例子的wiki页面获取更多信息。 也许,现在您已经注意到在我hCalendar标记中包含了hCard属性和子属性: 在前面的文章中说过在自然语言中使用微格式,hCalendar同样可以使用。您会注意到在例子中,hCalendar的标注一直是直接嵌入到我的内容中。我可以把所有的hCalendar信息放到更加自然的句子中,而不是把他们放到 Yes, it's short notice, but mark your calendars: class=”url summary”>class=”category”>BarCamp Albuquerque 3 is this weekend, class=”dtstart” title=”2008-09-13T09:00:00″>September 13–class=”dtend” title=”2008-09-14T18:00:00″>14, from 9am–6pm class=”duration” title=”P2D”>both days. class=”description”>This year’s BarCamp is all about the web: design (visual, experience, information architecture), technology (infrastructure, programming), social and new media, and other stuff that is just plain cool. class=”location vcard”>CJW Cafe (on 4801 Alameda 提示:
本文由神整理自网络,如有侵权请联系本站删除!
,
,,等等)。
必要属性:summary和dtstart
summary
日期/时间设计模式
剩下的日期/时间属性
dtend
duration
说说“无障碍访问”
剩下的剩下
url
category
location
description
还没有包括哪些
hCalendar + hCard
自然语言
元素中:
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
相关内容
点击排行
本栏推荐