OPML 1.0 规范翻译 & OPML 2.0 规范预览
from http://www.opml.org/spec & http://www.opml.org/spec2
跟RSS打交道经常看到OPML, 它的主要用途是用来批量导入导出RSS Feed。一个OPML文件中可以包含大量的RSS Feed信息,一个应用场景是:可以把网站的多个RSS FEED(甚至包含层次结构)写在在一个OPML文件里,让用户在RSS阅读器一次订阅,不再手工添加一条条的RSS FEED费时费力了.虽然有人对其格式有所诟病,但是它已成为目前事实上的标准.
一时好奇,寻根究底,到官方网站上仔细研究了下,下面是顺手翻译的OPML 1.0 规范. (略去了一些不影响理解OPML格式的内容)也许你也奇怪没有看到xmlUrl, htmlUrl等常见的东东,其实现在存在很多种不一样格式的OPML文件用于订阅RSS, 比如"htmlUrl" & "xmlUrl" vs "htmlurl" & "xmlurl", type="rss" vs. no type attribute, "title" and "description" vs. "text", and version="RSS" & version="RSS2" vs. no version attribute.请看看2006年3月的2.0规范草稿吧.因为没有定稿,暂不翻译,纳入了对大量使用的RSS订阅情形进行了特别的格式增订:主要是要求outline元素必须有type, text, xmlUrl属性,可选description, htmlUrl, language, title, version属性.另外outline元素的类型type有以下几种建议类型:include, link, rss
OPML 1.0 规范
关于本文档
本文档用于描述OPML(Outline Processor Markup Language)格式: 是一种用XML 1.0存储大纲内容的"大纲处理标记语言". "大纲"指满足这样条件的一棵树:其每个节点都有一组string类型的命名属性.
例子
"大纲"可用于规范, 法律条款, 产品计划, 演讲稿, 电影剧本, 通信录, 日记, 讨论组, 聊天系统和小说等."大纲处理器"是指使用户能读,写,识别"大纲"结构的程序.一些示例OPML文档: 播放列表, 规范, 演讲稿.
目标
OPML格式旨在为不同"大纲处理器"提供一种交换数据的方式.设计目标是简单,自描述,可扩展,人可阅读,能存储和表达很大范围内的数据,且能方便地浏览和编辑. 在版本的进化中将保持这种设计目标.一个技术人员在阅读一个网页后应该能完全理解这种格式.
这是一种开放的格式, 也就是说其他"大纲处理器"开发者和服务提供者可以为兼容Radio UserLand 或其他目的自由地使用此格式.
<opml>是什么?
<opml>是一个XML元素, 仅有一个必需的属性:version; 须具有一个<head>和一个<body>元素.version属性是一个版本信息字符串, 形如x.y, 其中x,y都是数字.
<head>是什么?
<head>包含如下所述的0个或多个属性:
<title> 文档标题.
<dateCreated> 文档创建时间.
<dateModified> 文档最后修改时间.
<ownerName> 文档拥有者.
<ownerEmail> 文档拥有者Email地址
<expansionState> 一个逗号分隔的展开行行号列表. 列表中的行号告知哪些标题(headline)是展开的. 顺序是很重要的. 如列表中的元素X, 则从头开始数X下, 那一行应该是展开的.
<vertScrollState> 是一个数字,它指示了大纲的哪一行应该在窗口的最上面.该数字是在考虑了"展开状态"后计算出来的.
<windowTop> 是一个数字,指示了窗口的上沿的位置.
<windowLeft> 是一个数字,指示了窗口的左侧的位置.
<windowBottom> 是一个数字,指示了窗口的下沿的位置.
<windowRight> 是一个数字,指示了窗口的右侧的位置.
<head>注意事项
<head>的子元素有可能被程序忽略. 如果一个大纲在另一个大纲中打开, 程序不能使用windowXxx元素, 因为这些元素只定义了该大纲自身在窗口中打开时大小和位置.
所有日期时间相关的元素,格式服从RFC 822.
你在程序中加载opml时, 可以自由决定是否使用expansionState. 定义它是因为有时可能需要用到.
<body>是什么?
body> 包含一个或更多的<outline> 元素
<outline>是什么?
一个<outline> 是一个可能包含一个或多个属性及任意数目<outline>子元素的XML元素.
常用属性:
text: 在浏览或编辑大纲时显示的文字. 无长度限制.
type: 借以说明其他属性的意义.
isComment: 取值为"true" 或 "false"的字符串, 指示该outline是否是评论. 按惯例如果一个outline是评论,其子元素outline也都是评论. 如果无此属性,则表示非评论.
isBreakpoint: 取值为"true" or "false"的字符串, 指示该outline是否设置了断点. 该属性主要是用于编辑和运行脚本的outline. 如果无此属性,则表示未设置断点.
兼容性
1.0版本之前有个根元素outlineDocument. Radio UserLand会继续读取该元素outlineDocument. .
限制
<outline>元素的属性和子元素数目无限制.
注意
OPML是一种文件格式, 不是协议.
一般说来,通过HTTP 获取OPML文档时MIME类型为text/xml.
Copyright and disclaimer
© Copyright 2000 UserLand Software, Inc. All Rights Reserved.