什么是IOF接口标准?
国际定向联盟(IOF)接口标准是一种XML数据格式的规范,用于在应用程序、web服务和数据库之间交换与定向相关的信息(事件、条目、开始列表、结果列表等)。当采用定向软件包时,它将允许软件包之间交换信息。这将有利于事件组织者,并有助于简化定向运动事件的组织。
背景
在定向者中,我们有一个共同的愿望,那就是利用最新的技术来获益。
当我们组织定向比赛时,我们使用的计算机系统的数量就清楚地表明了这一点。每一个系统都执行自己的专门任务:处理赛事条目、课程规划、计时、产生结果、提供赛事评论信息以及检查电子打孔。
使所有这些系统协同工作可能是一项相当艰巨的任务,而且经常要投入大量的艰苦工作,以确保信息从一个计算机系统安全可靠地转移到另一个系统。
由此得出的结论是,需要一种简单的方法来使所有这些不同的系统以可靠的方式通信信息。
历史
1998年10月在挪威奥斯陆召开的IOF技术发展委员会会议上,开始了为定向运动定义接口标准的努力。第一个公共版本于2001年1月出版,但很快就被证明是不够的。2.0.3版本于2002年4月发布,已经成为当前的接口标准十多年了。
有关IOF接口标准以前版本的资料,可在此查阅:
IOF接口标准3.0
信息技术业务发展迅速,从这个角度来看,十年是很长的时间。新的标准、工具和平台变得可用,使用模式也发生了变化。
此外,定向运动的发展。2.0.3版本不支持新的活动格式和竞争对手的地理跟踪等发明。2010年,人们发现需要一个新版本的接口标准。两年后,也就是2012年底,新版正式发布。
新界面标准的正式规范可在此找到:
XML模式
新版本的规范表示为XML模式,这与之前使用的DTD(文档类型定义)不同。使用XML Schema定义信息结构比使用DTD更强大。福利包括:
- 支持数据类型
- 支持名称空间,允许扩展
- 支持验证
- 可用于所有主要编程语言和平台的代码生成和验证工具
改进
与2.0.3版本相比,3.0版本有许多改进。这里列出了其中的一些,但不是全部。
- 在XML Schema中使用标准化数据类型
- ISO 8601日期和时间
- 用总秒代替hh:mm表示经过的时间
- 改进了个人和组织的联系信息的数据结构
- 电子邮件地址
- 物理地址
- 网站
- 支持控制卡清单(跟踪租赁卡)
- 支持活动和俱乐部的地理位置(即经纬度)
- 更多的事件细节
- 活动日程安排(如开场、宴会、颁奖仪式等)
- 信息
- 新闻
- 支持组织层级(IOF >国际地区联合会>国家联合会>国家地区联合会>俱乐部)
- 支持俱乐部标识
- 改进的报名费支持
- 费用视乎参赛时间及/或参赛者年龄而定
- 在一个团队中额外的竞争者的费用
- 支持获得式事件(控制分数)
- 改进了对团队/接力赛的支持
- 在一个团队中成员的数量是可变的
- 每个接力赛赛段的参赛者人数不固定
- 一个队可能属于几个俱乐部
- 每个接力赛和接力赛段的个人成绩
- 每个接力赛阶段后的团队成绩
- 支持比赛和整体结果在同一文件为多比赛事件
- 改进了分割时间的支持和文档
- 如何处理失效的控制单元
- 额外的拳
- 支持TrailO结果
- 支持从竞争对手的地理追踪中获得的路线的存储
示例XML文件
这是一个XML文件的示例符合IOF接口标准3.0版。它包含了一个定向运动事件的名称和开始时间。
有几点需要注意:
- 为了避免混淆、支持多语言和最大化兼容性,强烈建议使用UTF-8字符编码,尽管也允许使用其他编码。请在XML声明中显式地表达编码:
XML文件必须以UTF-8编码保存,并在XML声明中显式地表达它。 - 命名空间https://www.orienteering.org/datastandard/3.0。最好将名称空间声明为根元素中的默认名称空间。还可以在这里定义其他名称空间,以允许扩展。
- ' ioofversion '属性定义了所使用的版本,必须设置为3.0。
- ' createTime '属性定义了文件创建的时间。
- “creator”属性定义了创建文件的软件的名称。
XML文件的更多示例可以在GitHub库.
消息定义
定义了十种类型的消息元素。每个XML文件必须包含一个消息元素,它总是根元素。每个消息元素都可以通过Extension子元素进行扩展。
CompetitorList | 用于交换可能的竞争者名单,例如从国家竞争者数据库到事件管理系统。 |
OrganisationList | 用于交换组织(扶轮社、地区协会等)的列表,例如从一个国家组织数据库到一个活动管理系统。 |
EventList | 用于交换事件装置/事件日历,例如从一个国家的事件数据库到一个网站。 |
班级名册 | 用于交换类列表,例如从国家类数据库到事件管理系统。 |
EntryList | 用于将参赛选手交换到活动中,例如从在线报名网站到活动管理系统。 |
CourseData | 用于交换关于课程和事件控件的信息,例如从课程设置应用程序到事件管理系统。 |
StartList | 用于在比赛中为选手交换开始时间,例如从比赛管理系统到网站。 |
ResultList | 用于在比赛中为选手交换开始时间,例如从比赛管理系统到网站。 |
ServiceRequestList | 用于在活动中交换参赛者要求的服务(如住宿、餐饮),例如从在线报名系统到活动管理系统。 |
ControlCardList | 用于交换关于租用卡的信息,例如从电子打孔系统供应商到活动管理系统。 |
指的是规范查看消息元素的详细文档。
数据定义
定义了50多个数据元素。常用的元素包括Id、个人、组织、事件、班级、课程、服务、服务请求和费用。数据元素包含许多属性和元素。属性倾向于定义元素的元数据,而元素倾向于定义具体的数据,尽管两者之间没有明显的区别。
大多数属性和元素是非强制性的。这是一个有意为之的设计选择,以保持界面的灵活性。在一些活动中,组织者可能不需要追踪参赛者的身份,但在其他活动中,他们是必不可少的。这种方法的缺点是,参与交换的各方需要就哪些元素和属性是必须的达成一致。根据经验,创建要交换的文件的软件应该包含尽可能多的信息,即使是已知的非强制性信息。
指的是规范查阅数据元素的详细文档。
标识符的元素
Id元素被广泛用于表示一个实体的唯一身份,例如一个人、组织、事件或条目,使同步成为可能。id应该是已知的,并且是双方共有的。强烈建议身份证是由国家联合会颁发的官方身份。Id元素不应该公开内部数据库标识符。
日期和时间
日期和时间用ISO 8601格式yyyy-mm-ddThh: mm: ssZ。这种格式允许包含时区标识符。强烈建议使用此功能,以方便在不同时区运行的计算机系统以可靠的方式交换数据。大多数编程语言都有一种方法来确定计算机上使用的时区,以及与UTC(通用协调时间)的时间偏移。
2012 - 12 - 26 - t14:36:07z | 26th2012年12月,14:36:07 UTC (' Z '表示UTC) |
2012 - 12 - 26 t15:36:07 + 01:00 | 26th2012年12月,当地时间15:36:07,比UTC早1小时。这个时间与2012-12-26T14:36:07Z相同,但表示的是另一个时区。 |
2012 - 12 - 26 - t08:36:07.9 06:00时 | 26th2012年12月,当地时间08:36:07.9,比UTC晚6小时。这与2012-12-26T14:36:07.9Z的时间相同,但表示的是另一个时区。当时间分辨率为十分之一秒时,小数秒可以用于完成时间。 |
嵌入扩展信息
IOF接口标准没有涵盖的信息可以使用扩展子元素嵌入,该子元素存在于许多元素中。这允许双方使用IOF接口标准来交换例如自定义结果信息和普通结果列表。定制信息必须包装在XML名称空间中定义的元素中。这些元素依次放置在Extensions元素中。例如,请参阅ResultList4.
自动代码生成
XML Schema的优点之一是广泛支持自动代码生成。使用XML模式文件作为输入,代码生成工具可以构建反映XML模式结构的面向对象代码。这大大减少了为应用程序创建样板代码所需的时间。
使用您喜欢的搜索引擎搜索“XML模式代码生成”,可以找到更多有关您的编程语言的代码生成工具的信息。
代码库
在PHP和c#中可以找到用于解码和编码路由信息的代码库在这里.
验证
软件开发人员应该始终确保他们的软件生成的XML文件符合接口标准。互联网上有许多免费的验证工具。使用您喜欢的搜索引擎搜索“XML模式验证”。