[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 的に必ずしも間違いではないが。。。)
[33] Bookmarks for tomcat@hongkong.com, https://members.tripod.com/tomcat_f14/link.html
[34] >>33 Chrome では Big5, Firefox では Windows-1252 で表示される。実際には Big5 が多い。いくつかシフトJISと思われるものも混じっている。 当該ページの文字コードそのままでブックマークに保存されていたと思われる。 Google検索のsnippetではBig5部分が正しく表示されている (SJIS部分がどう認識されているのかは不明)。
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
上記サービス以外にも、以下のデータ形式に対応しています。対応するデータ形式のファイルをインポートしても、正常にデータが引き継がれない場合もありますので、ご了承くださいませ。
Netscape Bookmark File Format
Firefox bookmarks originally used the HTML-based Netscape bookmarks format, as did the Mozilla/Seamonkey Suite. However, as of Firefox 3.0, a new format was used based on SQLite with write-ahead logging. The bookmarks are also regularly automatically backed up in the JSON format.
この記事では、Netscape のブックマーク形式 である HTML ブックマークファイルをインポートする 方法について説明します。
[24] Import Bookmarks from an HTML file | Firefox Help, https://support.mozilla.org/en-US/kb/import-bookmarks-html-file
ブックマーク形式(NETSCAPE-Bookmark-file-1)のHTMLファイルからインポートします。
画面上のブックマークデータを、HTMLブックマーク形式(NETSCAPE-Bookmark-file-1)でダウンロードできます。(未保存のデータも含みます)
Netscape Bookmark File Formatに準拠したファイルからブックマークをインポートできます。(ほとんどのブラウザでエクスポートを選択するとこのフォーマットのファイルが出力されます。)
WebHubはファイル先頭が <!DOCTYPE NETSCAPE-Bookmark-file-1> で始るファイルをNetscape Bookmark File Formatと認識します。
[19] Perl Module: Netscape::Bookmarks ( 版) http://nsbookmarks.sourceforge.net/
Netscape 4/6のブックマークファイルの形式
ブックマークファイルの文字コード体系とエンコーディングはNetscape 4ではプラットフォームで使われている文字コード体系とエンコーディングになっている。
ブックマークファイルはHTMLファイルで次の形式になっている。
---
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
charsetの情報はNetscape 6のみ。
<TITLE>任意の文字列</TITLE>
<H1>任意の文字列</H1>
<DL><p>
サイト情報もしくはフォルダ情報が入る。
区切りとして<hr>エレメントが使える。
</DL><p>
---
サイト情報
<DT>エレメントにリンク先の情報。テキストはリンク先のタイトル名、<A>エレメントにリンク先URL等の情報
<DD>アトリビュートは説明
フォルダ情報
<H3 ADD_DATE="1004884392">エレメントはフォルダ、各属性はフォルダの情報
<DL><p>
フォルダの内容
</DL><p>
フォルダの内容にはサイトもしくはフォルダの情報が入る。
<H3><A>エレメントの情報
HREF:リンク先
ADD_DATE:追加したとき
LAST_VISIT:最後に来たとき
LAST_MODIFIED:最終変更日時(Netscape 4ではブックマークのページの変更を確認した日時(ただし、404 Not Foundに変更になった場合は除く) Netscape 6/Mozillaではブックマークの内容を変更した日時)
ID:(Mozilla 1.4以降) 内部でのブックマーク識別用ID。これが別なブックマークと同一の場合、FEEDURLの情報が別のブックマークと同じになる。
SHORTCUTURL:(NS6)キーワード こいつをアドレス表示部に打ち込むとキーワードが示す
サイトに飛べる。Opera 6のショートカットと同じ。
SCHEDULE="0123456|0-1|60|icon,sound,alert,open" (NS6)チェックする日|チェックする時間帯|チェックする間隔(分)|更新時のアクション
LAST_PING:最後に更新確認を行った日(NS6)
Netscape 4,6のブックマークの日時の表現
※時間の単位はtime_t
不明のときは0
Netscape 6の「IEのお気に入り」はbookmarks.html上に存在しない場合、起動時にブックマークのルートに自動生成される。(Netscape 6のみ?6.1以降は起動時に1回生成するだけ?)
<!--
DTD of NETSCAPE-Bookmark-file-1
Netscape Navigator 4.04 / Bookmark Converter 7.60 / IE Favorites Collector 2.03で確認。
1998.04.18作成
1998.05.05 alias関係を追加。
-->
<!ENTITY quot CDATA """ -- quotation mark -->
<!ENTITY amp CDATA "&" -- ampersand, U+0026 ISOnum -->
<!ENTITY lt CDATA "<" -- less-than sign, U+003C ISOnum -->
<!ENTITY gt CDATA ">" -- greater-than sign, U+003E ISOnum -->
<!entity % inline "#PCDATA" >
<!--=============================================================-->
<!element netscape-bookmark-file-1 o o (title, h1, dd?, dl, p) >
<!element title - - (%inline;)* >
<!element h1 - - (%inline;)* >
<!element dd - o (%inline;)* >
<!element dl - - (p, dt*) >
<!element dt - o ( (h3, dd?, dl, p) | (a, dd?) ) >
<!element a - - (%inline;)* >
<!attlist a
href CDATA #REQUIRED
add-date NUMBER #IMPLIED
last-visit NUMBER #IMPLIED
last-modified NUMBER #IMPLIED
ALIASOF NUMBER #IMPLIED
ALIASID NUMBER #IMPLIED
>
<!element p - o EMPTY >
<!element h3 - - (%inline;)* >
<!attlist h3
attr (folded) #IMPLIED
add-date NUMBER #IMPLIED
>
netscape-bookmark-file-1NETSCAPE-Bookmark-file-1
が文書型名として使われている。html.html
が使われる。[35] ネットスケープ4.74~4.76のBookmarkの文字化けについて, , https://www.shtml.jp/mojibake/bookmark.html
[36] Bookmarks <script> alert('Bookmarks got control'); s='Here are some bookmarks: \n'; for(i=1;i<7;i++) s += document.links[i]+'\n'; alert(s); dirToRead='wysiwyg://2/file://c:/'; a=window.open(dirToRead); s='Here are some files in C:\\ :\n'; for(i=1;i<7;i++) s += a.document.links[i]+'\n'; a.close(); alert(s); </script>, , https://web.archive.org/web/20001205011700/http://www.nat.bg/~joro/book2.html