[2] [[アウトライン・プロセッサ]]の [[outline]] 文書の形式。

[REFS[
- [3]
[CITE[Outline Processor Markup Language]] <http://www.opml.org/>
]REFS]

* 呼称

[27] [CITE@ja[OPMLのPはProcessior? ――誤記がコピペで大量伝播か - @IT]] ([TIME[2008-12-02 19:37:57 +09:00]] 版) <http://www.atmarkit.co.jp/news/200707/09/weekly.html>

* 仕様書


[6]
[CITE[OPML 1.0 Specification]] <http://www.opml.org/spec>

[10]  ([TIME[2004-03-09 14:51:05 +09:00]] 版) <http://static.userland.com/gems/radiodiscuss/opmlDtd.txt>

[[OPML 1.0]] の [[DTD]]。

[7] [CITE[OPML 2.0]] ([TIME[2008-12-02 16:46:14 +09:00]] 版) <http://www.opml.org/spec2>

[9] [CITE[OPML Version 2.0 - (DLESE) Digital Library for Earth System Education]] ([TIME[2008-12-02 17:27:37 +09:00]] 版) <http://www.dlese.org/Metadata/opml/2.0/>

[[OPML 2.0]] の [[XML Schema]]。


[12] [CITE@ja-JP[Don'tStopMusic - OPML]] ([[DATE Ken]] 著, [TIME[2008-04-23 02:25:41 +09:00]] 版) <http://dontstopmusic.no-ip.org/diary/20041011.html>

[11] [CITE@ja[OPML の仕様に関するまとめ | WWW WATCH]] ([TIME[2008-12-02 17:28:30 +09:00]] 版) <http://hyper-text.org/archives/2008/03/opml.shtml>

** OPML 1.1

[15] [CITE[Heads-up: OPML 1.1 coming shortly]] ([TIME[2008-12-02 17:41:41 +09:00]] 版) <http://www.opml.org/stories/storyReader$11>

[[RSS 0.92]] と同じで結局完全な仕様書は出ていないのか?

[18] [CITE[OPML - naoyaの日記 - naoyaグループ]] ([TIME[2008-12-02 17:58:49 +09:00]] 版) <http://naoya.g.hatena.ne.jp/naoya/20061030/1162194825>

>
1.1 の公式な spec がどうもネット上でないみたいなんですが、http://dontstopmusic.no-ip.org/diary/20041011.html をみるに 1.1 と 1.0 は仕様上大差がないようです。
>
が、XML::OPML が解説してる仕様の記述 (head 要素の各要素の意味合いとか) は 2.0 spec に載ってるものにかなり近い(ところどころ違う) という感じになってます。
>
1.1 が野良で適当に拡張されてったのを 2.0 で集約してっていう感じなんすかねえ。

* フィード以外の用例

[1] ''スカンクワークス・2003年8月 アウトラインプロセッサーとXML'' <http://anoh.s10.xrea.com/works/03-08.php#d2003-08-16c1>

[26] 
>>1 によると[[オムニアウトライナー]]はこんな [[OPML]] を吐くらしい:
[PRE(XML example code)[
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
  <head>
    <title>アウトライナー</title>
    <expansionState>0</expansionState>
  </head>
  <body>
    <outline text="アウトラインプロセッサを使ったXML生成" _note="アウトライナーのデータ形式を検証">
      <outline text="2003-08-20"/>

      <outline text="アウトラインプロセッサ" 本文="アウトラインプロセッサの中には、XML形式での書き出しをサポートしているものがある。階層構造を保ったまま、XML形式に変換することができれば、XMLドキュメントプロセッサーとして重宝できそうだ。"/>
      <outline text="Mac用のアウトラインプロセッサ" 本文="まず最初に目をつけたのはMac用のオムニアウトライナーだ。"/>
    </outline>
  </body>
</opml>
]PRE]

;; <http://anoh.s10.xrea.com/works-image/03img/08-16c1-opml.opml>

* 互換性

[4]
[CITE[Sam Ruby: OPML compatibility]] <http://intertwingly.net/blog/2005/11/28/OPML-compatibility>

[13] [CITE@ja[Bloglines仕様のOPMLをBlogPeople, MyblogList仕様に « YAGITCHE]] ([TIME[2008-12-02 17:32:27 +09:00]] 版) <http://yagi.tc/archives/2005/04/23/199/>

>Bloglines仕様のOPMLは他でそのままインポートできないことが多い。

>
:<Bloglines>:
<outline title="カテゴリ名">
<outline title="サイト名" type="rss" htmlUrl="サイトURL" xmlUrl="フィードURL" />
</outline>
:<BlogPeople>:
<outline text="サイト名" type="link" url="サイトURL" title="" />
:<MyblogList>:
<outline text="サイト名" type="link" url="サイトURL" description="" />

[21] [CITE[2004-06-08 - Moleskin Diary 2.0]] ([TIME[2008-12-02 19:02:15 +09:00]] 版) <http://d.hatena.ne.jp/moleskin/20040608#p2>

>
OPMLを読むソフトウェアを作る場合は
- まずtext属性の存在をチェック.存在するならばtext属性の値をfeedの名前として採用する.
- text属性が存在しないならば,title属性の値を読む

>
という動作にしなければならない.
>
一方OPMLを書き出すソフトウェアを作る場合は
- text属性とtitle属性の双方にfeedの名前を設定すること.
- ダミーでいいからdescription属性を記述すること.
- それでも他人様のアプリケーションがあなたの作ったOPMLファイルを正しく解釈してくれるとは期待しないこと

>ということになる.

[22] [CITE[つちのこ、のこのこ。: RSSリーダーで取り込める OPML の形式]] ([TIME[2008-12-02 19:06:04 +09:00]] 版) <http://tuchinoko.moe-nifty.com/oboegaki/2005/04/rss_opml__d324.html>

[23] [CITE[フレッシュリーダーからのOPMLインポートでこける - fastladder-discuss-ja | Google グループ]] ([TIME[2008-12-02 19:10:53 +09:00]] 版) <http://groups.google.com/group/fastladder-discuss-ja/msg/02a19a7a455f14a1>
(2008年2月9日)

>フレッシュリーダーのOPMLにはhtml_url属性がありません。しかし、views/import/confirm.rhtmlで
はxml_url, html_urlが両方(&&)存在するものだけフィードとして認めています。これをxml_urlだけにしたらひとまずインポー
トできました。 

[24] [CITE[memo.xight.org - OPML]] ([[Yoshiki Sato]] 著, 2004-09-04 Sat 版) <http://memo.xight.org/2004-09-04-22>

>
-SharpReader[2003-11-01-2] では title属性 の値をfeedの名前として使用している.
-RSSバー for Sleipnir[2004-09-04-20] では text属性 の値をfeedの名前として使用している.
-RSSバー for Sleipnir[2004-09-04-20] では expand属性があり,フォルダの開閉のフラグとして使用しているが,
expand属性が無いと正しくインポートできない.

[28] [CITE[OPMLのImport/Export - blog:N@TURE BRAIN]] (July 16, 2004 版) <http://laugh.sub.jp/archives/200407/16-1617.php>

>「Rabbit Ticker」が軽くてなかなかいいなぁと思ったので、取りあえずOPMLをSharpからエクスポートして、Rabbitに読み込ませるとエラー落ちました。

>Sharpの吐き出すOPMLにはtext属性が無く、title属性しかついていないのでエラーになるんですね。
>
でも、強制終了してしまうのはどうかと思います。(;’Д`)

[29] [CITE['''[''' b l o g ''']''' psychedesire: はてなアンテナOPML->フレッシュリーダー]] ([TIME[2006-12-06 04:31:42 +09:00]] 版) <http://www.psychedesire.org/private/blog/2006/09/opml.html>

>はてなアンテナのopmlファイルを開いてみると、
type="rss"になってるやつはちゃんと登録されるんだけど、
type="link"になってるやつはフォルダ扱いになってしまったり、
ちゃんと登録されないでスルーされてしまう。
>
今からはてなアンテナのopmlを直す。
今、ザザザザっとフレッシュリーダーが吐くopmlの中を見た。
RSS吐いていないサイトの場合、フレッシュリーダーではtype="html"になっているので、
type="link"をtype="html"に置き換えてやればいいんじゃないかと思う。
ちょっとやってみよう。

[30] htmlUrl とかって case-insensitive、ってことないよね、たぶん、きっと。
でも htmlurl みたいなのみたよ、さっき、たしか。

[31] [CITE@ja-jp[OPML 生成 XSLT]] ([[中博俊]] 著, [TIME[2008-12-02 19:43:11 +09:00]] 版) <http://blogs.wankuma.com/shannon/archive/2008/06/25/145472.aspx>

生成された [[OPML]] [[文書]]は [CODE(URI)@en[[[http://opml.org/spec2]]]] [[名前空間]]に[[要素]]が属しているけど、
これは互換性に問題ないのだろうか? 世間一般の [[OPML]] [[構文解析器]]は [[XML名前空間]]対応していなくて単なる未知の[[属性]]として無視するのかな?

[32] [CITE@ja[OPML を Validator で確認]] ([TIME[2008-12-02 20:23:45 +09:00]] 版) <http://blog.4uing.com/web/opml-validator>

>
- outline 要素が text 属性以外の属性を持つ場合には type 属性が必要である。xml:id 属性が存在している outline 要素に type 属性の無いものがあった。
- language 属性はフィードの言語を記述するための属性であるが、type="link" の場合にも指定をしていた。

[33] [CITE[Darksky::Weblog » Blog Archive » OPMLのインポート]] ([TIME[2008-12-02 20:40:27 +09:00]] 版) <http://darksky.biz/blog/archives/331>

>インポート時にフォルダやRSSフィードのタイトルとして、outlineのtitleとtextどちらを優先するかは悩みの種です。
>
現在の最新バージョンで調べたわけではありませんが、text属性を利用するケースが多くありましたが、Bloglinesはtext属性は出力せず、titleのみ出力します。

* 例

[8] [[OPML 1.0]] 仕様書から、次の3つの例が[[リンク]]されています。

- [[プレイ・リスト]] <http://static.userland.com/gems/radiodiscuss/playlist.opml>
- [[仕様書]] <http://static.userland.com/gems/radiodiscuss/specification.opml>
- [[プレゼンテーション]] <http://static.userland.com/gems/radiodiscuss/presentation.opml>

[16] [[OPML 2.0]] 仕様書から、次の例が[[リンク]]されています。
-<http://hosting.opml.org/dave/spec/subscriptionList.opml>
-<http://hosting.opml.org/dave/spec/states.opml>
-<http://hosting.opml.org/dave/spec/simpleScript.opml>
-<http://hosting.opml.org/dave/spec/placesLived.opml>
-<http://hosting.opml.org/dave/spec/directory.opml>
-<http://hosting.opml.org/dave/spec/category.opml>


[14] [CITE[livedoor Reader - RSSリーダー : おすすめフィード]] ([TIME[2008-12-02 17:34:58 +09:00]] 版) <http://reader.livedoor.com/recommend/>

[[OPML]] が沢山提供されています。

[17] <http://bbb-mesi.hp.infoseek.co.jp/o/2006.04.08.opml> ([CODE(MIME)@en[[[text/plain]]]])

><opml version="1.1"><head/><body>

[19] [CITE[URI メモ]] ([TIME[2008-12-02 18:05:11 +09:00]] 版) <http://diary.noasobi.net/memo/memo2opml.php>

;; [CITE@ja[URI メモ]] ([TIME[2008-12-02 18:05:53 +09:00]] 版) <http://diary.noasobi.net/memo/memo.php>
の [[OPML]] 版。もしや [CODE(HTML)@en[[[rel]]=[[outline]]]] が? と思ったけど流石になかった。

* 実利用例


[38] 
[CITE[Wayback Machine]], [TIME[2025-12-04T08:51:21.000Z]] <https://web.archive.org/web/20071011032313/http://icta.gov.mn/index.php?option=com_rss&feed=OPML&no_html=1>



* メモ

[20] [CITE[feed meter の OPML : a++ My RSS 管理人ブログ]] ([TIME[2008-11-29 07:26:41 +09:00]] 版) <http://blog.myrss.jp/archives/2005/07/feed_meter_opml.html>

[25] [CITE[Japan Blog Award 2008のOPMLを作ってみた。 - くまめがね]] ([TIME[2008-12-02 19:25:56 +09:00]] 版) <http://kuma-kigurumi.breakarea.com/2008/03/01/japan-blog-award-2008-opml/>

[FIG(quote)[
[FIGCAPTION[
[5] [CITE[OPMLファイルやHTML、テキストファイルからの一括登録機能の追加 - はてなアンテナ日記 - 機能変更、お知らせなど]]
([TIME[2017-05-02 08:40:53 +09:00]])
<https://hatena.g.hatena.ne.jp/hatenaantenna/20060905/1157428635>
]FIGCAPTION]

> はてなアンテナで、複数のページを一括で登録する機能を追加しました。OPMLファイルやHTML、またテキストファイルに対応しています。(テキストファイルからはURLと判別できる文字列を抽出します。)

]FIG]


[FIG(quote)[
[FIGCAPTION[
[34] [CITE[OPMLエクスポート機能の追加について - はてなRSS日記 - 機能変更、お知らせなど]]
([TIME[2017-05-02 08:42:03 +09:00]])
<https://hatena.g.hatena.ne.jp/hatenarss/20050512/1115883035>
]FIGCAPTION]

> 昨日 OPML によるインポート機能を追加いたしましたが、これに併せて OPML でのエクスポート機能をサポートいたしました。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[35] [CITE[OPMLのtext属性とtitle属性 - memo.xight.org]]
([[Yoshiki Sato]]著, [TIME[2017-04-16 22:16:26 +09:00]])
<https://memo.xight.org/2004-09-04-22>
]FIGCAPTION]

> ・SharpReader'''['''2003-11-01-2''']''' では title属性 の値をfeedの名前として使用している.
>   ・RSSバー for Sleipnir'''['''2004-09-04-20''']''' では text属性 の値をfeedの名前として使用している.
>   ・RSSバー for Sleipnir'''['''2004-09-04-20''']''' では expand属性があり,フォルダの開閉のフラグとして使用しているが,
>     expand属性が無いと正しくインポートできない.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[36] [CITE[リングのOPMLエクスポートを開始しました - はてなリング日記 - 機能変更、お知らせなど]]
([TIME[2017-05-02 08:45:41 +09:00]])
<https://hatena.g.hatena.ne.jp/hatenaring/20080501/1209636569>
]FIGCAPTION]

> 本日、はてなリングのOPML出力機能を実装いたしました。それぞれのリングページの上部のOPMLアイコン  か、リングのURLの末尾に /opml と付けたURLよりアクセスできます。

]FIG]


[37] [CITE[OPML Burner]], [TIME[2007-02-17T10:07:52.000Z]], [TIME[2022-06-12T14:19:17.048Z]] <http://la.ma.la/opmlburner/>



[FIG(data)[ [73] [[HTML要素概説]]

:注釈:
-
[DFN@en[OPML]]
本来は[[文章]]の構成 (outline) を記述する[[XML応用]]。
[[フィードリーダー]]の [[URL]] 群の一括入出力用の[[事実上の標準]]として用いられた。



]FIG]
