[1] [[NN]] の [[bookmark]] (栞) のデータ形式としては、
大昔から [[HTMLに似たマーク付け言語][HTMLもどき]]が使われています。
巷の [[WWWブラウザ]]で表示させるとそれなりに整形して表示され、
栞を挟んだ先へのリンクも機能するようになっています。

Netscape 0.9 で既にこの形式が使われていますが、
もしかすると [[Mosaic]] でも使われてたんでしょうか?

[6] >>1 でも一般的な mosaic は [[mosaic.ini]] とかに書いてたと思われ。

[[#comment]]


* 文書構造

[4] W3C HTML にないもの、非互換な物は「*」をつけてます。

- [CODE(HTML)[<HTML>]]  [MacIE4]
-- 文書型宣言の前に根要素開始タグ。阿呆としか言い様がない。しかも文書型と根要素型が一致してないし。
- [CODE(SGML)[[[DOCTYPE]]]]* ([[文書型宣言]]) [M0.9] [NN4] [Moz] [iCab] [N::B]
[SRC@en[Fx1]]
-- [WEAK[(純粋な HTML と区別するために必要なだけだけど)]] 当初からずっと文書型宣言をちゃんとしてるのは、とても偉い。[WEAK[[[DTD]] をちゃんと公開していればもっと偉かった。]]
-- 根要素型名 (= [[文書型名]]) は
--- [CODE(HTMLe)[Mosaic-Communications-Bookmark-file-1]] [M0.9]
--- [CODE(HTMLe)[NETSCAPE-Bookmark-file-1]] [NN4] [MacIE4] [MOZ]
-- [SRC@en[Fx1]]
[PRE(HTML example code)[
<!DOCTYPE NETSCAPE-Bookmark-file-1>
]PRE]
- [CODE(SGML)[<!Created by Microsoft Internet Explorer 4.0 >]]* [MacIE4]
-- 謎の[[マーク宣言]]もどき。
- [[注釈宣言]] [NN4] [Moz] [N::B]
-- 例:
[PRE[
<!-- This is an automatically generated file.
It will be read and overwritten.
Do Not Edit! -->
]PRE]
-- [SRC@en[Fx1]]
[PRE(HTML example code comment)[
<!-- This is an automatically generated file.
     It will be read and overwritten.
     DO NOT EDIT! -->
]PRE]
-- [[ClassicMozilla]] では、その版の言語。 [NN4]
-- [[Gecko]] Mozilla や [CODE(perl)[Netscape::Bookmark]] では英語。 [Moz] [N::B]
[SRC@en[Fx1]]
- [[根要素]]*
-- 文書型宣言で暗示されるのみで、[[タグ]]は使用されていない。
-- [CODE(HTMLe)[[[head]]]] 要素や [CODE(HTML)[[[body]]]]
要素は存在するのか不明 (少なくてもタグは存在しない)。
-- [CODE(HTMLe)[[[meta]]]] [MacIE4] [MOZ] [iCab]
--- @[CODE(HTML)[[CODE(HTMLa)[[[http-equiv]]]]="Content-Type"]]
--- @[CODE(HTML)[[CODE(HTMLa)[[[content]]]]="text/html; [[charset]]=[VAR[charset]]"]]
--- [SAMP(HTML)[<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-mac-roman">]] [MacIE4]
--- [SAMP(HTML)[<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">]] [MOZ]
[SRC@en[Fx1]]
--- [SAMP(HTML)[<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=X-MAC-SYSTEM">]] [iCab]
--- See >>5
--- ここで [CODE(MIME)[[[text/html]]]] と名乗っているし、 MacIE 4.0 は最初に [CODE(HTML)[<HTML>]] と書くことからも、この栞形式は HTML の一種 (と主張されている) と言える。
--- ファイル名も [CODE(file)@en[bookmarks.html]] だし。
-- 注釈宣言 [CODE(HTML)[<!-- Do not edit this file. -->]] [iCab]
-- [CODE(HTMLe)[[[title]]]] [NN 4] [MacIE4] [N::B]
--- 内容は、
---- Classic Mozilla では
----- 英語版: [CODE(HTML)[Bookmarks for [VAR[利用者名]]]] [NN4]
----- 日本語版: [CODE(HTML)[[VAR[利用者名]]のフ゛ックマーク]]
(もしかしたら [[Un|x]] 版では[CODE[フ゛]]ではなく[CODE[ブ]]かもしれない。未確認。 [[Windows]] 版では [[JISX0201]] の片仮名。) [NN 2〜4]
----- [VAR[利用者名]]は、設定で指定したもの。つまり、メイル送信時に使われるもの。[WEAK[(設定を変更してもそのまま使われるのか、適当なタイミングで書き換えられるのか。 Classic Mozilla 持ってる人がいたら確かめてみてください。)]]
---- Gecko Mozilla では単に [CODE(HTML)[Bookmarks]] [Moz]
[SRC@en[Fx1]]
--- [CODE(HTML)[Favorites]] [MacIE4]
--- [CODE(HTML)[iCab Hotlist]] [iCab]
-- [CODE(HTMLe)[[[h1]]]] [NN4] [MacIE4] [Moz] [iCab] [N::B]
[SRC@en[Fx1]]
--- 内容は [CODE(HTMLe)[title]] 要素と同じ。
--- @[CODE(HTMLa)@en[[[last_modified]]]] = 修正時刻 ([[Unix時刻]])
[SRC@en[Fx1]]
--- @[CODE(HTMLa)[substatus_pos]] = [SAMP(HTML)["626,230"]] [MacIE4]
--- @[CODE(HTMLa)[window_position]] = [SAMP(HTML)["300,48"]] [MacIE4]
--- @[CODE(HTMLa)[window_open]] = [SAMP(HTML)["TRUE"]] [MacIE4]
--- @[CODE(HTMLa)[window_size]] = [SAMP(HTML)["580,710"]] [MacIE4]
--- [SRC@en[Fx1]]
[PRE(HTML example code)[
<H1 LAST_MODIFIED="1149843381">Bookmarks</H1>
]PRE]
-- [CODE(HTML)[<DD>]]* [N::B]
([CODE(perl)[Netscape::Bookmark]] の不具合?)
-- [[dl]] [NN4] [MacIE4] [Moz] [iCab] [N::B]
[SRC@en[Fx1]]
--- [SRC@en[Fx1]]
[PRE(HTML example code)[
<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
[INS[...]]
</DL><p>
]PRE]
--- [[p]]* [NN4] [MacIE4] [Moz] [N::B]
[SRC@en[Fx1]]
---- 常に空要素と思われる。
--- [CODE(HTMLe)[[[dt]]]] (「フォルダ」) [NN4] [MacIE4] [Moz] [iCab] [N::B]
---- [CODE(HTMLe)[[[h3]]]] [NN4] [MacIE4] [Moz] [iCab] [N::B]
----- 階層の深さに関係なく、常に [CODE(HTMLe)[h3]] が使われる。
----- @[[add_date]]* (追加日時 ([[Un*x時間]])) [NN4] [MOZ] [N::B]
[SRC@en[Fx1]]
----- @[CODE(HTMLa)[object_type]] = [SAMP(HTML)["LINK"]] [MacIE4]
----- @[CODE(HTML)[[[folded]]]] (論理値) [NN4] [MacIE4] [iCab] [N::B]
----- @[CODE(HTML)[sort_order]] = [CODE(ABNF)[1*DIGIT]] (零以上) [MacIE4]
----- @[[id]]* [MOZ]
[SRC@en[Fx1]]
------ 例: [SAMP(HTML)[NC:BookmarksRoot#$b742f5b]]
----- @[[last_modified]]* [MOZ] (最終修正日 (Un*x 時間))
[SRC@en[Fx1]]
----- @[CODE(HTML)[[[menuheader]]=menuheader]]
----- @[[personal_toolbar_folder]][CODE(HTML)[="true"]] 
[SRC@en[Fx1]]
------ 個人用工具棒につかうフォルダである時指定。
----- 内容は「フォルダ」名。
----- 終了タグは省略可能。
----- [SRC@en[Fx1 (日本語)]]
[PRE(HTML example code)[
<DT><H3 LAST_MODIFIED="1146440578" PERSONAL_TOOLBAR_FOLDER="true" ID="rdf:#$St
gZz3">個人用ツールバーフォルダ</H3>
]PRE]
----- [SRC@en[Fx1]]
[PRE(HTML example code)[
                <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 &amp;#39;.org&amp;#39;</A>
]PRE]
---- [CODE(HTMLe)[[[dd]]]] [N::B]
[SRC@en[Fx1]]
----- フォルダの説明。
開始タグのみ明示する。説明なしのときはタグも含めて省略。
---- [CODE(HTMLe)[dl]] (入れ子構造) [NN4] [Moz] [MacIE4] [iCab] [N::B]
[SRC@en[Fx1]]
---- [CODE(HTMLe)[p]]* [NN4] [MacIE4] [Moz] [N::B]
[SRC@en[Fx1]]
----- 常に空要素と思われる。 [CODE(HTML)[DL]] 要素の後に必ず来る要素。(あわせて [CODE(HTML)[</DL><p>]])
---- [SAMP(HTML)[<DT>〜<DD>〜<DL>(下位)〜]] または [SAMP(HTML)[<DT>〜<DL>(下位)〜]] となり、終了タグがないので、下位構造のための [CODE(HTMLe)[dl]] が何の子要素なのかはっきりしません。 HTML の歴史を鑑みれば [CODE(SGML)[<![[ELEMENT]] [CODE(HTMLe)[dl]] - - ([CODE(HTMLe)[p]] -- = [[EMPTY]] --, [CODE(HTMLe)[dt]] -- = EMPTY --, #[[PCDATA]], ([CODE(HTMLe)[dd]] -- = EMPTY --, #PCDATA)?, [CODE(HTMLe)[dl]], [CODE(HTMLe)[p]])>]] という気持ちなのかもしれませんが、現代的には
[CODE(SGML)[<!ELEMENT [CODE(HTMLe)[dl]] - - ([CODE(HTMLe)[p]] -- (- o) --, [CODE(HTMLe)[dt]] -- (- o) --, [CODE(HTMLe)[dd]]? -- (- o) --, [CODE(HTMLe)[dl]] -- (- -) --, [CODE(HTMLe)[p]])>]] くらいに考えておくのが適当でしょう。
--- [CODE(HTMLe)[dt]] (項目) [NN4] [MacIE4] [Moz] [iCab] [N::B]
[SRC@en[Fx1]]
---- [CODE(HTMLe)[[[a]]]] [NN4] [MacIE4] [Moz] [iCab] [N::B]
[SRC@en[Fx1]]
----- @[CODE(HTMLa)[add_date]]* [NN4] [MacIE4] [Moz] [N::B]
[SRC@en[Fx1]]
----- @[CODE(HTMLa)[[[custom_address]]]] *= [SAMP(HTML)[""]] [MacIE4]
----- @[CODE(HTMLa)[[[domain]]]]* = [SAMP(HTML)[""]] [MacIE4]
----- @[CODE(HTMLa)[object_type]]* = [CODE(HTMLa)["LINK"]] [MacIE4]
----- @[CODE(HTMLa)[sort_order]]*
----- @[CODE(HTMLa)[subscribe]]* (論理値) [MacIE4] [iCab]
----- @[CODE(HTMLa)[message]]* = [CODE(HTML)["The site has changed."]] / [CODE(HTML)["There were no changes."]] [MacIE4]
----- @[CODE(HTML)[checksum]] = [CODE(ABNF)[ ["-"] 1*[[DIGIT]]]] [MacIE4]
----- @[CODE(HTML)[[[aliasid]]=[CODE(ABNF)[1*DIGIT]]]]* [Moz] [N::B]
----- @[[href]] ([[URI参照]]) [NN0.9] [NN4] [MacIE4] [Moz] [iCab] [N::B]
[SRC@en[Fx1]]
----- @[[icon]] [MOZ] ([[favicon.ico]] URI)
[SRC@en[Fx1]]
----- @[CODE(HTMLa)@en[[[id]]]] [SRC@en[Fx1]]
----- @[CODE(HTMLa)[[[intervalunit]]]] = [SAMP(HTML)["3"]] [MacIE4]
----- @[CODE(HTMLa)[[[intervaltime]]]] = [CODE(ABNF)[1*DIGIT]] [MacIE4]
----- @[[last_charset]] [MOZ] (最終閲覧時の charset)
[SRC@en[Fx1]]
----- @[CODE(HTML)[[[last_modified]]]]* [NN4] [MacIE4] [iCab]
[SRC@en[Fx1]]
----- @[CODE(HTML)[[[last_modified_changed]]]] (論理値) [MacIE4] [iCab]
----- @[CODE(HTMLa)[lastupdate]]* = Un|x 時刻 [MacIE4] [iCab]
----- @[CODE(HTMLa)[nextupdate]]* = Un|x 時刻 [MacIE4]
----- @[[last_visit]]* (最終閲覧日 (Un*x 時間)) [NN4] [MacIE4] [Moz]
[SRC@en[Fx1]]
----- @[CODE(HTMLa)[[[sound_name]]]]* = [SAMP(HTML)["ChuToy"]] [MacIE4]
----- @[CODE(HTMLa)[[[subscribe_failed]]]]* (論理値) [MacIE4]
----- @[CODE(HTMLa)[[[update]]]]* = Un|x 時刻 [iCab]
----- @[CODE(HTMLa)[[[use_custom_address]]]]* = [CODE(HTML)["TRUE"]] / [CODE(HTML)["FALSE"]] [MacIE4]
----- @[CODE(HTMLa)[[[user]]]]* = [SAMP(HTML)[""]] [MacIE4]
----- @[CODE(HTMLa)[[[visitation_count]]]] = [CODE(ABNF)[1*DIGIT]] [MacIE4]
----- 内容は項目名。
----- [SRC@en[Fx1]]
[PRE(HTML example code)[
        <DT><A HREF="http://texturizer.net/firefox/" ID="rdf:#$DPOcB3">Firefox Help</A>
<DD>David Tenser&amp;#39;s Firefox help site
]PRE]
----- [SRC@en[Fx1]]
[PRE(HTML example code)[
        <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>
]PRE]
--- [CODE(HTML)[[[dd]]]]: たまに開始タグ (と内容) だけがある。
[SRC@en[Fx1]]
---- 内容は説明。
---- [CODE(HTMLe)@en[[[br]]]] 要素型が使用可能。
--- [[hr]] (仕切り線) [NN4]
---- [[強制空要素]]。
--- [CODE(HTML)[P]] [NN4] [N::B]
---- 常に空要素と思われる。 [CODE(HTML)[DL]] 要素 (の終了タグ)
の後に必ず来る要素。
- 最後のお尻 [CODE(HTMLe)[p]] (とその後の[[空白]]) で、
文書全体が終了。他の要素はタグなし。
- 注釈宣言 [CODE(HTML)[<!-- iCab, 1999 -->]] [iCab]
- [[属性値]]は、[[属性値表記]]になっている。 [NN4] [MacIE4] [Moz] [iCab]
- [CODE(char)[&]] は [CODE(char)[&]] のまま出力される [MacIE4] [iCab] [N::B]。

[8] W3C HTML から推測して「フォルダ」の内容を表す [CODE(HTML)[DL]]
要素は直前の「フォルダ」の名前を表す [CODE(HTML)[DT]]
要素の内容の一部としましたが、出力されている字下げを考慮すると、
[CODE(HTML)[DL]] は [CODE(HTML)[DT]] の弟要素と考えた方が正しいのかもしれません。

要素型・属性名は、出力されるものでは一般に全て大文字で、
[CODE(HTMLe)[p]] 要素だけなぜか小文字になっています。

[5] 文書の [[charset]] は、 Classic Mozilla 
ではその環境の標準の[[文字コード]], Mozilla では [[UTF-8]]
を使うようです。

[9] [[iCab]] は意味のない [CODE(HTMLe)[p]] タグを全然吐きません。それに比較的綺麗なソースです。
(それでも [CODE(char)[&]] を escape してないのは同じ。もっとも、 SGML 的に必ずしも間違いではないが。。。)

[[#comment]]


* 文書型宣言

- [2] [CODE(HTML)[<!DOCTYPE Mosaic-Communications-Bookmark-file-1>]]
- [3] [CODE(HTML)[<!DOCTYPE NETSCAPE-Bookmark-file-1>]] [MOZ]


* 実利用例


[33] [CITE[Bookmarks for tomcat@hongkong.com]], [TIME[2025-10-27T03:34:22.000Z]] <https://members.tripod.com/tomcat_f14/link.html>

[34] >>33 [[Chrome]] では [[Big5]], [[Firefox]] では [[Windows-1252]]
で表示される。実際には [[Big5]] が多い。いくつか[[シフトJIS]]と思われるものも混じっている。
当該ページの[[文字コード]]そのままで[[ブックマーク]]に保存されていたと思われる。
[[Google検索]]の[[snippet]]では[[Big5]]部分が正しく表示されている ([[SJIS]]部分がどう認識されているのかは不明)。

* メモ

[10]
:[NN0.9]:[[MosaicCommunications]] 社の [[MosaicNetscape]] 0.9
:[NN1]:[[NN]] 1 系
:[NN2]:NN 2 系
:[NN3]:NN 3 系
:[NN4]:NN (単体または [[NC]] の一部) 4 系
:[Moz]:[[mozilla.org]] の [[Mozilla]] や Netscape 6 以降
:[MacIE4]:[[MacIE]] 4.0
:[iCab]:[[iCab]]
:[N::B]   :[CODE(perl)[Netscape::Bookmark]]
:[Fx1]:[[Firefox]] 1.5

[12] [NN4], [MacIE4], [iCab] についての情報は [N::B]
付属の例文を元にしました。

Classic/Gecko Mozilla についてはちゃんと調べてないので完全な情報ではありません。

[7] <IW:CPAN:"Netscape::Bookmark">
という [[Perl]] モジュールがあります。
Netscape bookmark 形式の栞文書を取扱うことができます。

[13]
[[影鷹]]も栞に Netscape Bookmarks 形式を使っています。

[11] [CITE@en[Netscape Bookmark File Format (Internet Explorer)]]
([TIME[2015-12-25 13:28:04 +09:00]] 版)
<https://msdn.microsoft.com/en-us/library/aa753582(v=vs.85).aspx>

[FIG(quote)[
[FIGCAPTION[
[14] [CITE@ja[PocketやYahoo!ブックマークにも対応! 他ブックマークサービスからの移行方法 - はてなブックマーク開発ブログ]]
([TIME[2015-12-25 13:28:29 +09:00]] 版)
<http://bookmark.hatenastaff.com/entry/import_from_pocket>
]FIGCAPTION]

> 上記サービス以外にも、以下のデータ形式に対応しています。対応するデータ形式のファイルをインポートしても、正常にデータが引き継がれない場合もありますので、ご了承くださいませ。
> Netscape Bookmark File Format

]FIG]


[FIG(quote)[
[FIGCAPTION[
[15] [CITE@en[Firefox bookmarks - Just Solve the File Format Problem]]
([TIME[2015-04-24 12:53:54 +09:00]] 版)
<http://fileformats.archiveteam.org/wiki/Firefox_bookmarks>
]FIGCAPTION]

> 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.

]FIG]


[FIG(quote)[
[FIGCAPTION[
-[16] [CITE@ja[HTML ファイルからブックマークをインポートする | Firefox ヘルプ]]
([TIME[2016-03-04 21:19:45 +09:00]] 版)
<https://support.mozilla.org/ja/kb/import-bookmarks-html>
-- [22] 移転確認 [TIME[2024-09-28T07:02:17.400Z]]
-- [23] 
[CITE@ja[HTML ファイルからブックマークをインポートする | Firefox ヘルプ]], [TIME[2024-09-28T07:02:02.000Z]] <https://support.mozilla.org/ja/kb/import-bookmarks-html-file?redirectslug=import-bookmarks-html&redirectlocale=ja>

]FIGCAPTION]

> この記事では、Netscape のブックマーク形式 である HTML ブックマークファイルをインポートする 方法について説明します。

]FIG]

[24] [CITE@en-US[Import Bookmarks from an HTML file | Firefox Help]], [TIME[2024-09-28T07:02:26.000Z]] <https://support.mozilla.org/en-US/kb/import-bookmarks-html-file>

[25] >>23 は古い版で、 >>24 が最新。

[26] >>24 にはブックマーク形式の記述なし。

[27] >>23 のリンク先は MSDN。

[FIG(quote)[
[FIGCAPTION[
[17] [CITE@ja[JCBookmark 使い方]]
([TIME[2016-03-04 21:20:55 +09:00]] 版)
<http://ztmsdf.appspot.com/jcbookmark/usage.html>
]FIGCAPTION]

> ブックマーク形式(NETSCAPE-Bookmark-file-1)のHTMLファイルからインポートします。
> 画面上のブックマークデータを、HTMLブックマーク形式(NETSCAPE-Bookmark-file-1)でダウンロードできます。(未保存のデータも含みます)

]FIG]


[FIG(quote)[
[FIGCAPTION[
[18] [CITE@ja[WebHub Manual - Misc]]
([TIME[2013-08-18 15:21:40 +09:00]] 版)
<http://halfwholescale.net/webhub/manual/misc.html>
]FIGCAPTION]

> Netscape Bookmark File Formatに準拠したファイルからブックマークをインポートできます。(ほとんどのブラウザでエクスポートを選択するとこのフォーマットのファイルが出力されます。)
> WebHubはファイル先頭が <!DOCTYPE NETSCAPE-Bookmark-file-1> で始るファイルをNetscape Bookmark File Formatと認識します。

]FIG]


[19] [CITE[Perl Module: Netscape::Bookmarks]]
([TIME[2001-09-23 02:14:59 +09:00]] 版)
<http://nsbookmarks.sourceforge.net/>

[FIG(quote)[
[FIGCAPTION[
[20] ([TIME[2005-01-22 22:16:02 +09:00]] 版)
<http://tatsu.life.coocan.jp/Devroom/NS_BM.txt>
]FIGCAPTION]

> 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回生成するだけ?)

]FIG]


[FIG(quote)[
[FIGCAPTION[
[21] [CITE[DTD of NETSCAPE-Bookmark-file-1]]
([TIME[2016-03-04 21:27:23 +09:00]] 版)
<http://web.archive.org/web/20101021092327/http://www.nslabs.jp/bookmark.dtd.htm>
]FIGCAPTION]

> <!--
>     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
>     >

]FIG]



[FIG(data)[ [29] [[HTML要素概説]]

:[F[要素名]]:[CODE[mosaic-communications-bookmark-file-1]]
:日付:[TIME[1994]]
:説明:
[TIME[1994]]の
[[Mosaic Netscape 0.9]]
の
[[Netscape Bookmark]]
形式ファイルの[[文書型宣言]]で
[CODE(HTML)[Mosaic-Communications-Bookmark-file-1]]
が[[文書型名]]として使われていた。
:出典:[[Netscape Bookmark][NSBookmark]]
:参照:[CODE[netscape-bookmark-file-1]]
:参照:[CODE[html]]

]FIG]

[FIG(data)[ [30] [[HTML要素概説]]

:[F[要素名]]:[CODE[netscape-bookmark-file-1]]
:日付:[TIME[1994]]
:説明:
[TIME[1994]]頃の
[[Netscape Navigator]]
以来、
[[Netscape Bookmark]]
形式ファイルの[[文書型宣言]]で
[CODE(HTML)[NETSCAPE-Bookmark-file-1]]
が[[文書型名]]として使われている。
:参照:[CODE[html]]
:出典:[[Netscape Bookmark][NSBookmark]]
:出典:
[REFS[

-
[28] 
[DFN[FxHelp:ImportBookmark]]:
[CITE@ja[HTML ファイルからブックマークをインポートする | Firefox ヘルプ]], 
最終更新日時:
[TIME(.published)[10/05/2019][2019-10-05]],
[TIME[2024-09-28T07:47:46.000Z]] <https://support.mozilla.org/ja/kb/import-bookmarks-html-file>
-
[31] 
[DFN[MSDN:NetscapeBookmark]]:
[CITE@en-us[Netscape Bookmark File Format (Internet Explorer) | Microsoft Learn]], 
[DATA(.author)[[[Microsoft]]]],
[TIME(.published)[08/15/2017][2017-08-15]],
[TIME[2024-09-03T18:05:28.000Z]], [TIME[2024-09-28T07:51:16.217Z]] <https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa753582(v=vs.85)>

]REFS]
:注釈:
-
[32] 
[DFN@en[Netscape Bookmark]]
[[Netscape Navigator]]
は[[ブックマーク]]を [[HTML]] 風ファイルで管理していた。
[SRC[MSDN:NetscapeBookmark]]
他の [[Webブラウザー]]もこれに対応し、
[[ブックマーク]]の交換の[[事実上の標準]]のデータ形式となっている。
公式ドキュメントは存在しなかったと思われる。
[[Firefox]] のヘルプは [[MSDN]] を参照している。
[SRC[FxHelp:ImportBookmark]]
[[SGML]] 風だが公式な [[DTD]] はない。 
[[SGML]] であれば[[文書型名]]が[[文書要素]]の[[要素名]]となるが、
実際のブックマークファイルでは[[文書要素]]の[[タグ]]は省略されている。
一般には [[HTML]] ファイルと認識され[[拡張子]]も [CODE[.html]]
が使われる。

]FIG]

[35] 
[CITE[ネットスケープ4.74~4.76のBookmarkの文字化けについて]], [TIME[2020-08-20T23:48:41.000Z]], [TIME[2025-11-23T05:57:56.546Z]] <https://www.shtml.jp/mojibake/bookmark.html>

[36] 
[CITE[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>]], [TIME[2025-11-23T06:27:08.000Z]], [TIME[2000-12-05T01:17:24.472Z]] <https://web.archive.org/web/20001205011700/http://www.nat.bg/~joro/book2.html>
