from http://www.opml.org/spec & http://www.opml.org/spec2
跟RSS打交道經(jīng)常看到OPML, 它的主要用途是用來(lái)批量導(dǎo)入導(dǎo)出RSS Feed。一個(gè)OPML文件中可以包含大量的RSS Feed信息,一個(gè)應(yīng)用場(chǎng)景是:可以把網(wǎng)站的多個(gè)RSS FEED(甚至包含層次結(jié)構(gòu))寫(xiě)在在一個(gè)OPML文件里,讓用戶在RSS閱讀器一次訂閱,不再手工添加一條條的RSS FEED費(fèi)時(shí)費(fèi)力了.雖然有人對(duì)其格式有所詬病,但是它已成為目前事實(shí)上的標(biāo)準(zhǔn).
一時(shí)好奇,尋根究底,到官方網(wǎng)站上仔細(xì)研究了下,下面是順手翻譯的OPML 1.0 規(guī)范. (略去了一些不影響理解OPML格式的內(nèi)容)也許你也奇怪沒(méi)有看到xmlUrl, htmlUrl等常見(jiàn)的東東,其實(shí)現(xiàn)在存在很多種不一樣格式的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.請(qǐng)看看2006年3月的2.0規(guī)范草稿吧.因?yàn)闆](méi)有定稿,暫不翻譯,納入了對(duì)大量使用的RSS訂閱情形進(jìn)行了特別的格式增訂:主要是要求outline元素必須有type, text, xmlUrl屬性,可選description, htmlUrl, language, title, version屬性.另外outline元素的類型type有以下幾種建議類型:include, link, rss
OPML 1.0 規(guī)范
關(guān)于本文檔
本文檔用于描述OPML(Outline Processor Markup Language)格式: 是一種用XML 1.0存儲(chǔ)大綱內(nèi)容的"大綱處理標(biāo)記語(yǔ)言". "大綱"指滿足這樣條件的一棵樹(shù):其每個(gè)節(jié)點(diǎn)都有一組string類型的命名屬性.
例子
"大綱"可用于規(guī)范, 法律條款, 產(chǎn)品計(jì)劃, 演講稿, 電影劇本, 通信錄, 日記, 討論組, 聊天系統(tǒng)和小說(shuō)等."大綱處理器"是指使用戶能讀,寫(xiě),識(shí)別"大綱"結(jié)構(gòu)的程序.一些示例OPML文檔: 播放列表, 規(guī)范, 演講稿.
目標(biāo)
OPML格式旨在為不同"大綱處理器"提供一種交換數(shù)據(jù)的方式.設(shè)計(jì)目標(biāo)是簡(jiǎn)單,自描述,可擴(kuò)展,人可閱讀,能存儲(chǔ)和表達(dá)很大范圍內(nèi)的數(shù)據(jù),且能方便地瀏覽和編輯. 在版本的進(jìn)化中將保持這種設(shè)計(jì)目標(biāo).一個(gè)技術(shù)人員在閱讀一個(gè)網(wǎng)頁(yè)后應(yīng)該能完全理解這種格式.
這是一種開(kāi)放的格式, 也就是說(shuō)其他"大綱處理器"開(kāi)發(fā)者和服務(wù)提供者可以為兼容Radio UserLand 或其他目的自由地使用此格式.
<opml>是什么?
<opml>是一個(gè)XML元素, 僅有一個(gè)必需的屬性:version; 須具有一個(gè)<head>和一個(gè)<body>元素.version屬性是一個(gè)版本信息字符串, 形如x.y, 其中x,y都是數(shù)字.
<head>是什么?
<head>包含如下所述的0個(gè)或多個(gè)屬性:
<title> 文檔標(biāo)題.
<dateCreated> 文檔創(chuàng)建時(shí)間.
<dateModified> 文檔最后修改時(shí)間.
<ownerName> 文檔擁有者.
<ownerEmail> 文檔擁有者Email地址
<expansionState> 一個(gè)逗號(hào)分隔的展開(kāi)行行號(hào)列表. 列表中的行號(hào)告知哪些標(biāo)題(headline)是展開(kāi)的. 順序是很重要的. 如列表中的元素X, 則從頭開(kāi)始數(shù)X下, 那一行應(yīng)該是展開(kāi)的.
<vertScrollState> 是一個(gè)數(shù)字,它指示了大綱的哪一行應(yīng)該在窗口的最上面.該數(shù)字是在考慮了"展開(kāi)狀態(tài)"后計(jì)算出來(lái)的.
<windowTop> 是一個(gè)數(shù)字,指示了窗口的上沿的位置.
<windowLeft> 是一個(gè)數(shù)字,指示了窗口的左側(cè)的位置.
<windowBottom> 是一個(gè)數(shù)字,指示了窗口的下沿的位置.
<windowRight> 是一個(gè)數(shù)字,指示了窗口的右側(cè)的位置.
<head>注意事項(xiàng)
<head>的子元素有可能被程序忽略. 如果一個(gè)大綱在另一個(gè)大綱中打開(kāi), 程序不能使用windowXxx元素, 因?yàn)檫@些元素只定義了該大綱自身在窗口中打開(kāi)時(shí)大小和位置.
所有日期時(shí)間相關(guān)的元素,格式服從RFC 822.
你在程序中加載opml時(shí), 可以自由決定是否使用expansionState. 定義它是因?yàn)橛袝r(shí)可能需要用到.
<body>是什么?
body> 包含一個(gè)或更多的<outline> 元素
<outline>是什么?
一個(gè)<outline> 是一個(gè)可能包含一個(gè)或多個(gè)屬性及任意數(shù)目<outline>子元素的XML元素.
常用屬性:
text: 在瀏覽或編輯大綱時(shí)顯示的文字. 無(wú)長(zhǎng)度限制.
type: 借以說(shuō)明其他屬性的意義.
isComment: 取值為"true" 或 "false"的字符串, 指示該outline是否是評(píng)論. 按慣例如果一個(gè)outline是評(píng)論,其子元素outline也都是評(píng)論. 如果無(wú)此屬性,則表示非評(píng)論.
isBreakpoint: 取值為"true" or "false"的字符串, 指示該outline是否設(shè)置了斷點(diǎn). 該屬性主要是用于編輯和運(yùn)行腳本的outline. 如果無(wú)此屬性,則表示未設(shè)置斷點(diǎn).
兼容性
1.0版本之前有個(gè)根元素outlineDocument. Radio UserLand會(huì)繼續(xù)讀取該元素outlineDocument. .
限制
<outline>元素的屬性和子元素?cái)?shù)目無(wú)限制.
注意
OPML是一種文件格式, 不是協(xié)議.
一般說(shuō)來(lái),通過(guò)HTTP 獲取OPML文檔時(shí)MIME類型為text/xml.
Copyright and disclaimer
© Copyright 2000 UserLand Software, Inc. All Rights Reserved.
聯(lián)系客服