この文書はOPML 1.0 Specificationの勝手な日本語訳です。本文中の誤りはすべて勝手に日本語訳をしたKyo Nagashimaに責任がありそうです。かなり私的な解釈が混ざっている訳ですので、正確な情報を得たい方は原文を読んでください。

この文書について

この文書は、アウトライン・プロセッサー・マークアップ言語あるいはOPMLと呼ばれる、XML 1.0に文書のアウトラインを格納するためのフォーマットについて記述です。

この文書において、アウトラインとは、文字の値を持つ名前付けされた属性のセットを含むノードのツリー構造ことです。

成り立ち

アウトラインは長い間コンピューターについての情報を整理するポピュラーな方法でした。アウトライン・ソフトウェアの歴史は不明瞭ではありますが、大まかな成り立ちは示すことが出来ます。

おそらく、最初のアウトライン・ソフトウェアは、1960年代にAugmentシステムの一部としてDoug Engelbartによって開発されたものです。

Living Videotext(1981-87)は、PC用のポピュラーなアウトライン・ソフトウェアをいくつか開発しました。それらはUserlandのウェブサイトoutliners.comに保管されています。

1992年に創業したFrontierはアウトライン・ソフトウェア周りの開発を行っています。Frontierのテキストエディタ・メニューエディタ・スクリプトエディタは、アウトライン・ソフトウェアであると共に、オブジェクト・データベース・ブラウザでもあります。

訳注: オブジェクト・データベース・ブラウザはカタカナにしただけです。ツリー構造をわかりやすいように閲覧(畳んだり閉じたりしながら閲覧とか)するソフトウェアとかそんな感じだと。

OPMLは、W3C勧告であるXML 1.0をベースにしています。

2001年3月に登場したRadio UserLandはOPMLであるoutlinerが基本のファイル形式です。

OPMLはManiladirectoriesに使われています。

アウトラインは、仕様書、法的資料、製品企画書、プレゼンテーション、映画の台本、ディレクトリー、日記、ディスカッション・グループ、チャットおよび小説のために使用することができます。

アウトライン・ソフトウェアは、アウトラインを読み、編集し、再編成することのできるプログラムです。

OPML文書の例: プレイリスト 仕様書 プレゼンテーション

OPMLフォーマットの目指すもの

このフォーマットの目的は、アウトライン・ソフトウェアでアクセスできるインターネット上のサービスとアウトライン・ソフトウェアとの間で情報をやり取りする方法を提供することです。

このフォーマットの設計において目指すものは、様々なデータを容易に閲覧・編集できるように見通しの良いシンプルさ・ドキュメントの内蔵化・拡張性を備え人間に読めるフォーマットであることです。このフォーマットが発展すると共に、それは保証されるでしょう。ほとんどの技術者は、たったひとつのウェブ・ページを読むことで、このフォーマットを完全に理解することは可能でしょう。

これは公開されたフォーマットであるということが意味するのは、他のアウトライン・ソフトウェア販売会社やサービス会社がRadio Userlandとの互換性のためやその他の目的でこのフォーマットを自由に使うことが出来るということです。

<opml>とは?

<opml>は、versionという属性のみが必要なXML要素です。その配下にはhead要素とbody要素の両方が必要です。

version属性は"x.y"という形のバージョン番号を示す文字列です。 xとyのどちらも数値です。

<head>とは?

<head>は、以下に示される0以上の必須ではない要素から成ります。

<title>は、その文書のタイトルです。

<dateCreated>は、その文書の作成された日付け及び時刻です。

<dateModified>は、その文書の更新された日付け及び時刻です。

<ownerName>は、その文書のオーナーの名前です。

<ownerEmail>は、その文書のオーナーの電子メール・アドレスです。

訳注: オーナーはつまり所有者のことで、その文章の著作権保持者ということになると思います。製作者とは限らないかもしれないです。

<expansionState>は、展開する行番号のカンマ区切りのりすとです。この行番号はどのヘッドラインが展開されるかを示します。順序は重要です。リストのそれぞれの構成要素"X"は、一番最初のもの(一番最初の<outline>)から始まり、X回フラットに辿って(単純に上から数えてということ)展開します。リストのそれぞれの構成要素ごとに繰り返されます。

訳注: <expansionState>1,3,17</expansionState>なら、上から1・3・17番目の<outline>を展開すると言うことです。

<vertScrollState>は、数値で、どの<outline>をウィンドウの一番上に表示するかを示すものです。expansionStateがすでに適用されているものとして、計算されます。

訳注: expansionStateによって展開されてないものは飛ばすということだと思います。

<windowTop>は、数値で、ウィンドウの上端の座標を示します。

<windowLeft>は、数値で、ウィンドウの下端の座標を示します。

<windowBottom>は、数値で、ウィンドウの左端の座標を示します。

<windowRight>は、数値で、ウィンドウの右端の座標を示します。

<head>における注意

すべての<head>サブ要素は、アウトライン・プロセッサに無視されるかもしれません。もしアウトラインが他のアウトライン内で開かれた場合、アウトライン・プロセッサはwindowXxx要素を無視しなければなりません。これらの要素は、アウトラインがそれ自体のウィンドウで開かれた場合に位置とサイズを制御するものだからです。

すべての日付け及び時刻はRFC 822のDate and Time Specificationに従って記述します。

OPMLクライアント・ソフトウェアでOPML文書を読み込んだとき、expansionState要素を尊重するかどうか選択できるかもしれません。我々はユーザーの利用方法を押し付けようとはしません。expansionState要素は、ある状況で必要になることがあるので存在します。完全にそれを無視することが意味がある状況を想像することは簡単でしょう。

<body>とは?

<body>は、一つ以上のoutline要素を含みます。

<outline>とは?

<outline>は、一つ以上の属性を持つことと、サブ要素として任意の数のoutlineを含みます。

一般的な属性

textは、アウトライン閲覧時や編集時に表示される文字列です。仕様において、text属性の長さに制限はありません。

typeは、文字列で、<outline>のほかの属性をどう解釈するべきかを示します。

isCommentは、"true"または"false"という文字列で、そのアウトラインがコメントかどうかを示します。アウトラインがコメントである場合、すべてのその配下のアウトラインを同じようにコメントとみなします。省略された場合は"false"とみなされます。

isBreakpointは、"true"または"false"という文字列で、アウトラインにブレークポイントが設定されているかどうかを示します。この属性は、主に実行スクリプトの編集に使用されるアウトラインのためのものです。省略された場合は"false"とみなされます。

互換性

1.0のフォーマット以前では、最上位の要素はoutlineDocumentとされていました。Radio UserLandはこれからもこういった文書も読むことが出来るでしょう。

制限事項

含まれるoutline要素の数や含むことの出来るoutline要素の数に、文書上の制限はありません。

注意

OPMLは文書フォーマットで、プロトコルではありません。あなたがHTML文書内のリンクをクリックしても、サーバー上にある文書になんらかの変更が加えることはありません。OPMLもそれと同じ様に扱われます。

Wayne SteeleがOPML 1.0のDTDを書いてくれました。ありがとう。

一般的に、HTTPを通じてOPML文書にアクセスした場合のmimetypeはtext/xmlです。このことはウェブ・ブラウザがXMLの表示形式に従ってOPML文書を表示してかまわないということです。Radio UserLandに内蔵されているHTTPサーバは、HTTPリクエストのAcceptヘッダを参照して、どうやってOPML文書を送るかを決定します。もし、Acceptヘッダにtext/x-opmlを解釈できることが示されていた場合、Radio UserLandはそのままのXMLテキストを返します。そうでない場合は、Radio UserLandはmimetypeをtext/htmlとしてアウトラインテキストを返します。

Copyright and disclaimer

© Copyright 2000 UserLand Software, Inc. All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and these paragraphs are included on all such copies and derivative works.

This document may not be modified in any way, such as by removing the copyright notice or references to UserLand or other organizations. Further, while these copyright restrictions apply to the written OPML specification, no claim of ownership is made by UserLand to the format it describes. Any party may, for commercial or non-commercial purposes, implement this protocol without royalty or license fee to UserLand. The limited permissions granted herein are perpetual and will not be revoked by UserLand or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and USERLAND DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.