[1] NN の bookmark (栞) のデータ形式としては、 大昔から HTMLに似たマーク付け言語が使われています。 巷の WWWブラウザで表示させるとそれなりに整形して表示され、 栞を挟んだ先へのリンクも機能するようになっています。
Netscape 0.9 で既にこの形式が使われていますが、 もしかすると Mosaic でも使われてたんでしょうか?
[6] >>1 でも一般的な mosaic は mosaic.ini とかに書いてたと思われ。
[4] W3C HTML にないもの、非互換な物は「*」をつけてます。
<HTML>
[MacIE4]DOCTYPE
* (文書型宣言) [M0.9] [NN4] [Moz] [iCab] [N::B]
Fx1Mosaic-Communications-Bookmark-file-1
[M0.9]NETSCAPE-Bookmark-file-1
[NN4] [MacIE4] [MOZ]<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!Created by Microsoft Internet Explorer 4.0 >
* [MacIE4]<!-- This is an automatically generated file. It will be read and overwritten. Do Not Edit! -->
<!-- This is an automatically generated file. It will be read and overwritten. DO NOT EDIT! -->
Netscape::Bookmark
では英語。 [Moz] [N::B]
Fx1head
要素や body
要素は存在するのか不明 (少なくてもタグは存在しない)。meta
[MacIE4] [MOZ] [iCab]http-equiv
="Content-Type"
content
="text/html; charset=charset"
text/html
と名乗っているし、 MacIE 4.0 は最初に <HTML>
と書くことからも、この栞形式は HTML の一種 (と主張されている) と言える。bookmarks.html
だし。<!-- Do not edit this file. -->
[iCab]title
[NN 4] [MacIE4] [N::B]Bookmarks for 利用者名
[NN4]利用者名のフ゛ックマーク
(もしかしたら Un|x 版ではフ゛
ではなくブ
かもしれない。未確認。 Windows 版では JISX0201 の片仮名。) [NN 2〜4]Bookmarks
[Moz]
Fx1Favorites
[MacIE4]iCab Hotlist
[iCab]h1
[NN4] [MacIE4] [Moz] [iCab] [N::B]
Fx1title
要素と同じ。last_modified
= 修正時刻 (Unix時刻)
Fx1substatus_pos
= "626,230" [MacIE4]window_position
= "300,48" [MacIE4]window_open
= "TRUE" [MacIE4]window_size
= "580,710" [MacIE4]<H1 LAST_MODIFIED="1149843381">Bookmarks</H1>
<DD>
* [N::B]
(Netscape::Bookmark
の不具合?)<DL><p> <DT><H3 ID="rdf:#$CPOcB3">Bookmarks Toolbar Folder</H3> <DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar ... </DL><p>
dt
(「フォルダ」) [NN4] [MacIE4] [Moz] [iCab] [N::B]h3
[NN4] [MacIE4] [Moz] [iCab] [N::B]h3
が使われる。object_type
= "LINK" [MacIE4]folded
(論理値) [NN4] [MacIE4] [iCab] [N::B]sort_order
= 1*DIGIT
(零以上) [MacIE4]menuheader=menuheader
="true"
Fx1<DT><H3 LAST_MODIFIED="1146440578" PERSONAL_TOOLBAR_FOLDER="true" ID="rdf:#$St gZz3">個人用ツールバーフォルダ</H3>
<DT><A HREF="find:datasource=rdf:bookmarks&match=http://home.netscape.com/NC-rdf#URL&method=contains&text=.org" ID="rdf:#$1ROcB3">Bookmark URLs containing &#39;.org&#39;</A>
dd
[N::B]
Fx1dl
(入れ子構造) [NN4] [Moz] [MacIE4] [iCab] [N::B]
Fx1p
* [NN4] [MacIE4] [Moz] [N::B]
Fx1dl
が何の子要素なのかはっきりしません。 HTML の歴史を鑑みれば <!ELEMENT dl
- - (p
-- = EMPTY --, dt
-- = EMPTY --, #PCDATA, (dd
-- = EMPTY --, #PCDATA)?, dl
, p
)>
という気持ちなのかもしれませんが、現代的には
<!ELEMENT dl
- - (p
-- (- o) --, dt
-- (- o) --, dd
? -- (- o) --, dl
-- (- -) --, p
)>
くらいに考えておくのが適当でしょう。dt
(項目) [NN4] [MacIE4] [Moz] [iCab] [N::B]
Fx1a
[NN4] [MacIE4] [Moz] [iCab] [N::B]
Fx1add_date
* [NN4] [MacIE4] [Moz] [N::B]
Fx1custom_address
*= "" [MacIE4]domain
* = "" [MacIE4]object_type
* = "LINK"
[MacIE4]sort_order
*subscribe
* (論理値) [MacIE4] [iCab]message
* = "The site has changed."
/ "There were no changes."
[MacIE4]checksum
= ["-"] 1*DIGIT
[MacIE4]aliasid=1*DIGIT
* [Moz] [N::B]id
Fx1intervalunit
= "3" [MacIE4]intervaltime
= 1*DIGIT
[MacIE4]last_modified
* [NN4] [MacIE4] [iCab]
Fx1last_modified_changed
(論理値) [MacIE4] [iCab]lastupdate
* = Un|x 時刻 [MacIE4] [iCab]nextupdate
* = Un|x 時刻 [MacIE4]sound_name
* = "ChuToy" [MacIE4]subscribe_failed
* (論理値) [MacIE4]update
* = Un|x 時刻 [iCab]use_custom_address
* = "TRUE"
/ "FALSE"
[MacIE4]user
* = "" [MacIE4]visitation_count
= 1*DIGIT
[MacIE4]<DT><A HREF="http://texturizer.net/firefox/" ID="rdf:#$DPOcB3">Firefox Help</A> <DD>David Tenser&#39;s Firefox help site
<DT><A HREF="http://getfirefox.jp/" ICON="data:image/png;base64,iVBORw0KGg oAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRv YmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfy D/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNn PgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27Cj ADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3 TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8 vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg 4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxq UZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAM J5THwGvJLAAAAABJRU5ErkJggg==" LAST_CHARSET="ISO-8859-1" ID="rdf:#$xYgZz3">Firefox 製品ページ</A>
dd
: たまに開始タグ (と内容) だけがある。
Fx1br
要素型が使用可能。P
[NN4] [N::B]DL
要素 (の終了タグ)
の後に必ず来る要素。p
(とその後の空白) で、
文書全体が終了。他の要素はタグなし。<!-- iCab, 1999 -->
[iCab]&
は &
のまま出力される [MacIE4] [iCab] [N::B]。[8] W3C HTML から推測して「フォルダ」の内容を表す DL
要素は直前の「フォルダ」の名前を表す DT
要素の内容の一部としましたが、出力されている字下げを考慮すると、
DL
は DT
の弟要素と考えた方が正しいのかもしれません。
要素型・属性名は、出力されるものでは一般に全て大文字で、
p
要素だけなぜか小文字になっています。
[5] 文書の charset は、 Classic Mozilla ではその環境の標準の文字コード, Mozilla では UTF-8 を使うようです。
[9] iCab は意味のない p
タグを全然吐きません。それに比較的綺麗なソースです。
(それでも &
を escape してないのは同じ。もっとも、 SGML 的に必ずしも間違いではないが。。。)
Netscape::Bookmark
[12] [NN4], [MacIE4], [iCab] についての情報は [N::B] 付属の例文を元にしました。
Classic/Gecko Mozilla についてはちゃんと調べてないので完全な情報ではありません。
[7] IW:CPAN:"Netscape::Bookmark" という Perl モジュールがあります。 Netscape bookmark 形式の栞文書を取扱うことができます。
[13] 影鷹も栞に Netscape Bookmarks 形式を使っています。
[11] Netscape Bookmark File Format (Internet Explorer) ( 版) https://msdn.microsoft.com/en-us/library/aa753582(v=vs.85).aspx
[24] Import Bookmarks from an HTML file | Firefox Help, https://support.mozilla.org/en-US/kb/import-bookmarks-html-file
[19] Perl Module: Netscape::Bookmarks ( 版) http://nsbookmarks.sourceforge.net/