すべてのページは CVS にて管理されてます。ページの更新には、専用の CVS のアカウントが必要です。CVS についての詳細は省略します。
XML (XHTML) に XSLT のスタイルシートを適用して、HTML を生成しています。
XHTML によってコンテンツを記述し、ナビゲーションバーや飾りなど、どのページでも共通なものは XSLT スタイルシートに記述します。それらを XSLT プロセッサに通して、HTML が生成されます。これらは CVS でコミットした際に自動実行されます。
ページによっては特別な XML ファイルも使用されます。
/foo/bar.html という URL のページは /foo/bar.xhtml という XHTML ファイルにコンテンツを記述します。
これらは build スクリプト (という名前の Makefile) で対応付けられますので、ページを追加する場合は build スクリプトにエントリを追加してください。
トップの common.xsl がどのページにも適用されます。ナビゲーションの部分は sitemap.xml に定義しています。sitemap.xml は XBEL 形式で記述されており、xbel2navi.xsl によって HTML に変換され、ナビゲーションバーとして埋めこまれます。
「ニュース」は news/ ディレクトリにある年別のファイル (2002年であれば /news/2002.xml) に記述します。このファイルはニュース項目ごとに g:newsitem
要素を並べたものになっています (g:
は名前空間 http://www.gnome.gr.jp/xml/web
に関連付けられた名前空間接頭辞です)。たとえば以下のとおり。
<g:newsitem id="20"> <g:date year="2002" month="12" day="23" /> <g:title> GTK+ ユーザ・インタフェース 2.2.0 リリース! </g:title> <g:item> GTK+ ツールキットと関連するライブラリ (GLib/ATK/Pango) の 最新版のリリースです。 </g:item> <g:url href="http://mail.gnome.org/..../msg00090.html"> GTK+ user interface libraries, version 2.2 </g:url> </g:newsitem>
g:newsitem
タグの id
属性には記事の(各年における)通し番号を指定します。g:title
要素ではニュースのタイトル、g:item
要素ではニュースの本文、g:url
要素では関連リンクを示します。これらのうち、g:title
と g:item
は必須で、g:url
はあってもなくても構いませんし、複数あっても構いません。
これらのファイルに記述したもののうち、どの項目が使われるのかについては、/index.xhtml において指定します。
<g:from year="2002" id="8" /> <x:include href="news/2002.xml" />
と書けば、2002年の id属性が 8 以降の記事が /index.html で使用されます。
現在のところ、XHTML 1.0 Transitional 形式を使っています。どのページも原則的に、
<?xml encoding="euc-jp"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns:x="http://www.w3.org/2001/XInclude" xmlns:g="http://www.gnome.gr.jp/xml/web" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <title>タイトル</title> </head> <body> <h1>タイトル</h1> <div class="topic"> <h2>トピック1</h2> ...... </div> <div class="topic"> <h2>トピック2</h2> ...... </div> ...... </body> </html>
という単純な XHTML です。ナビゲーションバーとか、フッタとか、背景や色指定などは基本的に書かないで下さい。それらはスタイルシートで自動的に付加されます。
<a href="....">
や <img src="..." />
などの「リンク」の URI は、www.gnome.gr.jp (bonobo.gnome.gr.jp) 内のコンテンツを指す場合は、「サーバ内絶対 URI」または「サーバ内相対 URI」を使ってください。
後述しますが、出力ではサーバ内絶対 URI は相対 URI に自動変換されるので、../ の数などに悩む必要はありません。
普通の HTML とほとんど同じですが、おおざっぱにいって以下のところが異なります。
各要素のタグ名や属性名は大文字と小文字が区別されます。XHTML のタグ名や属性名は小文字で統一されていますので、小文字を使うようにしてください。
<br>
のような「閉じタグ」が無いものは <br />
のように最後に />
が必要になります。<br/>
でもいいですが、普通の web ブラウザでも読めるよう、<br />
と、空白を入れておくとよいです。
先頭部分に、
<?xml version="1.0" encoding="euc-jp"?>
という XML 宣言が必須。文字コードを必ず encoding
属性で指定しなくてはなりません。省略した場合は UTF-8 または UTF-16 というものとして処理されてしまいます。
XML 宣言に続いて、
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
という DOCTYPE の宣言を書きます。
最初の html タグに
<html xmlns:x="http://www.w3.org/2001/XInclude" xmlns:g="http://www.gnome.gr.jp/xml/web" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
という名前空間と言語の定義を入れてください。XML では「名前空間」の機能によって、いろんな XML ベースの規格を組み合わせて利用することができますが、これにより、
となります。xml:lang
は XML において言語を指定するための汎用的な属性です。
属性の値を囲む " あるいは ' は省略できません。面倒ですが、常に引用符で囲んでください
現在、RSS を利用して FootNotes <http://www.gnomedesktop.org/> の情報をトップページに反映するようにしています。wget で定期的に RSS を取得し、RSS の内容が更新されていたら XSLT で (_rss2xhtml.xsl)で) XHTML 素片に変換します。それを /index.xhtml から XInclude で読みこんでいます。
www.gnome.gr.jp では wk という独自の XSLT 処理プログラムを使っています。これは、LibXSLT を使って書かれた特化した XSLT 処理系です。内容は、
というものです。出力で必ず相対 URI が使われるので、file:///your/work/direcotry/moge.html をブラウザに指定するなどして、Web サーバを使わずにページのデバッグをするのに便利です。path 変数はナビゲーションバーでの条件判定に使われます。
普通に libXSLT 附属の xsltproc を使い、その出力に適当なフィルタをかければ実現できそうなものですが、なんとなく C で書いてあります。
http://bonobo.gnome.gr.jp/~kusano/wk-0.2.tar.gzからソースコードを取ってコンパイルして適当に path の通ったところに入れてください。
LibXSLT や wk をインストールしたら、以下の手順で更新できます。
% ./build
)