この文書の役割は,このサイトの管理者のためのメモ書きとしてが 71.4% です。
主に,サイト全体で働いているコンテントネゴシエーションの仕組みとユーザーナビゲーションの使い方について書いています。
アウトラインナビゲーションを3種類実装。どのタイプでも,項目をクリックすればその箇所へ飛ぶ(ただし id が付けられてない見出しもあるかも,ごめん)。
ページのアウトラインをツリー型で一覧表示。 [+] と [-] をクリックすることによって,ツリーの枝の 広げる / 畳む ができる。 Windows のエクスプローラなどのツリー型 UI と同様の使用感。
x キーを押すことにより,アウトラインナビゲーションの表示/非表示が切り替えられる。 また,アウトラインナビゲーション右上の [x] をクリックしても非表示にできる。
ページのアウトラインのうち最上位のものが一覧され, その下位のアウトライン構成は各項目へカーソルを持っていったときにポップアップメニューとして表示される。
「ツリー展開型」と同様,x キーでの表示/非表示の切り替え,[x] のクリックでの非表示ができる。
上記「階層メニュー型」と同じメニュー型だが,スクリプトを使わず,アウトライン生成をサーバ側で行っている。 従ってスクリプトを利用しない設定にしていてもアウトラインナビゲーションが利用可能。
x キーでの表示/非表示の切り替えはできない。[x] のクリックは「アウトラインナビなし」ページへのリンクになっている。
ブラウザのスクロールが重くて困るようなら,アウトラインナビゲーションを一時的にでも非表示にするとよい。
ページコンテントの一番上と一番下にナビゲーションバーが配置される。 インデクスページや他の版などへのリンクが並ぶ。これは,そのページの link 要素の情報を反映している。
次のような種類が用意されている:
文書リソースは,特殊な事情がない限り, HTML4.01, XHTML1.1, ISO-HTML (ISO/IEC 15445:2000), HTML5, XHTML5 の 5 版が提供可能。 デフォルトでどの版が得られるかは,コンテントネゴシエーションの対象になっている。 たいていの現代的なブラウザでは XHTML1.1 版。
特殊な事情とは,例えば,ISO-HTML ではスクリプトが使用できないため,スクリプトを使ったウェブ UI 関係は動作しない。
文書によってはDocBook, PDF の 2 版も提供され 7 種対応。
Internet Explorer に対しては特別な XHTML 文書を返す。
通常 | IE | |
---|---|---|
XML宣言 | あり | なし |
スタイルシート | xml-stylesheet処理命令 | link要素 |
XML名前空間 | 埋め込み要素にデフォルト名前空間 | ルート要素で名前空間を指定 |
スクリプトのtype | application/ecmascript, application/javascript | text/ecmascript, text/javascript |
スクリプトのdefer | defer, async を適宜使用 | defer の順序が保証されないため async の場合以外は defer を削除 |
数式表現のため MathML を使用。 Gecko 系ブラウザ (Firefox, Netscape, SeaMonkey, Camino, etc.) ならば, 数式用フォント をインストールされたし。 Internet Explorer ならば,MathPlayer プラグインをインストールすれば表示可。
対応していないブラウザ向けには次の代替策が用意されている。
コンテンツ用のグラフィックスは基本的に SVG を使用。 XHTML に埋め込んでいる。 埋め込みに対応していない UA 向けに,object 要素による外部 SVG ファイルの参照も使用。
CSS 2.1 を用いてページスタイルを調整。 現状,一部に少しだけ各ブラウザ専用の記述を入れてある (これはコンテントネゴシエーションによって切り替わる)。
代替スタイルシートを複数用意。
セマンティックウェブの実験をかねて,DC や RDF にもとづいたメタ情報記述を試験的に導入。
http://purl.org/net/ns/metaprof を利用。
このサイトで提供されるリソース(特に文書リソース)については基本的にコンテントネゴシエーションが行われる。 使用している次元は以下の通り。
文書のデフォルトが XHTML であるか HTML であるかも,コンテントネゴシエーションで決まる。
コンテントネゴシエーションに使用される次元に関して対応するクエリを付加することで, 強制的に特定の様式のドキュメントを得ることができる。 例えば,http://x-n.io/technical-note について http://x-n.io/technical-note?lang=en とすることで 英語版の文書を得ることができる(もし提供されていれば,の話。実際,このページの英語版はまだ提供されていてない)。
中でも,ドキュメントタイプの指定だけは特殊な扱いが許されており,クエリだけではなく拡張子の指定を理解する。 例えば,http://x-n.io/technical-note について http://x-n.io/technical-note.html とすることで HTML版の文書を得ることができる。http://x-n.io/technical-note.xhtml とすると強制的にXHTML版になる。
以下,クエリの項目名と可能な値の一覧。
ドキュメントタイプを指定。
値 | 説明 |
---|---|
xhtml | XHTML1.1文書 |
html | HTML4.01文書 |
isohtml | ISO-HTML文書 |
html5 | HTML5文書 |
xhtml5 | XHTML5文書 |
文書の MIME タイプ。これに指定した値はブラウザが渡す Accept を上書きする。
文書の言語。これに指定した値はブラウザが渡す Accept-Language を上書きする。
数式の表現方法を指定。
主値 | 説明 |
---|---|
b:mathml | MathML |
b:mathtex | mathTeX |
b:mimetex | mimeTeX |
b:asciimath | ASCIIMathML ソース |
b:tex | TeX ソース |
b:fallback | fallback (スクリプトで UA の機能を判断して切り替え) |
b:google | Google Chart API |
オプション | 説明 |
a:asciimath | alt に ASCIIMathML |
a:tex | alt に TeX |
t:asciimath | title に ASCIIMathML |
t:tex | title に TeX |
c:asciimath | コメント に ASCIIMathML |
c:tex | コメント に TeX |
プリセット | 説明 |
mathml | MathML with ASCIIMathML (annotation) |
mathtex | mathTeX with ASCIIMathML (alt) |
mimetex | mimeTeX with ASCIIMathML (alt) |
mathjax | MathJax ( experimental *1 ) |
Google Chart API ( experimental *2 ) |
*1 数式の量が多い一部のページでは MathJax での数式表示は重すぎてブラウザが止まるかもしれませんのでご注意下さい.
*2 Google Chart API での数式表示は, 入力長の制限によって一部の数式が表示できません.
アウトライン要素の表示形式を指定。
値 | 説明 |
---|---|
none | なし |
fold | 折りたたみツリー型 |
menu | メニュー型 |
css | メニュー型スクリプトなし |
使用例
http://ofmind.net/?lang=en-US
http://ofmind.net/doc/anova-note?math=mathml
http://ofmind.net/?doctype=isohtml&outline=css
クエリによってネゴシエーションの値を明示的に指定し強制した場合,
サイト内の他のページへのリンクにもそれが反映され,強制指定が自動的に引き継がれる。
例えば,一度 ?outline=menu
を指定したページを開くと,そのページから他のサイト内ページをたどって行ってもずっと ?outline=menu
が付いてくる。
ただし,クッキーなどの使用は避けているため,他のサイトへの移動してからリンクをたどることでこのサイトへ戻ってきても強制指定は持続していない。
その他使用している特徴的な技術。