xhtmlの時代に

ネットサーフィンで最近目にするのが「xhtml」を採用するホームページが多くなっていることです。 現に利根町でも[利根中(旧新館中)]、[布川小]のホームページの全ページが、[xhtml]記述で立派に作成されていました。
[W3C]が[xhtml]を提唱してから、早くも6〜7年経過しています。いくら緩やかな変革とは言え、 非常に便利だった[HTML 4.01 Transitional]の非推奨タグ類の暫定猶予期限も7年目になろうとしています。

現在私のホームページでは、2005年1月に作成掲載した[トップページ]、[xhtmlの時代に]と[xhtmlのテーブル(昨今改訂)] のたった3ページが、「xhtml1.0-strict方式」で作成されているだけです。
他は、古いものを除いて手書きで、「HTML 4.0 Transitional」方式ですが、[xhtmlへの変更がスムースに行くよう、strict方式を意識しながら書いております。

マイクロソフトが[Windows98、ME]のアフターサービス(ウイルス対策のアップデート)を停止したため、 Windows Vistaがお盆商戦の目玉になるように、各ブラウザが「W3C」の言うことを聞いて「xhtml」対応に踏み切るようだと、何らかの形で商戦に反映されかねません。 また、既に作成したホームページの手直しが、大変な作業になりそうです。打つ手がないことは、 ないのですが。   2007年7月6日  記

2007年10月22日追記
昨日、無料ホームページ スペース提供の[FC2]から、メールがありました。内容は「タグに用いる英文字(半角)は、 全て半角小文字を使用せよ。期限は10月末日まで」でした。
思い当たるのは、[FC2]のブログ(Blog)は既に「xhtml」仕様になっていることです。ひたひたと、 「xhtml」の波が押し寄せてきた感じがしました。

例えば、[IMG src]は[img src]、[BR]は[br]、[TABLE]は[table]、[TR]は[tr]、[TD]は[td]・・・。に直しなさいということです。
例を上げたのは「Homepage Builder Version 9.0.3.0 for Windows」のソースからの話です。Version 9.0の 無料アップデートが出れば問題なく処理できるのですが? (ビルダーは修正が得意で「手書きや他社のHTMLなどをビルダーで開くと 必ず修正されます。)
現在の最新版はV11で、販売はV10からはソースネクストと他社の二社で行うようになったようで、 「タグに用いる英文字は、全て半角小文字」化しているかも知れません。

2年位前になりますが、ヤフーgeocitiesか、Infosheekの「無料ホムページ スペース」へ同サイトの フアイル マネージャーでアップロードしようとした時、「英半角大文字を英半角小文字に直しますか!」との問がありました。
(FTTPなどは、設定しておけばファイル名は自動的に大文字を小文字に変換して送って くれるが、HTTPで書き込んだリンクの指定タグまでは小文字に変換してくれません。)

その「問」に対して「OK」すれば、フアイル名の[JPG]は[jpg]に、[HTML]は[html]直してくれますが、
html文章内のリンク先の[a href="***.HTML"]の[HTML]や[img src="***.JPG"]の[JPG] (GIF,PNGも有ります。)は直してくれませんので、 「リンク切れ」や「画像の非表示」が発生してしまいます。 (私が以前使っていたフォトショップ ライト版では、画像は、必ず「JPG」表示でした。これなどは、1つづつ直さなければなりません。)
若しかすると、ホームページビルダーの場合、新しいバージョンを購入することになりかねません。 (全てが「xhtml」化して、「ビルダーV11」が非対応だった時の危惧です。ユーザーがNo1との噂なので大変なことです。)

xhtmlとは

W3C Recommendation 26 January 2000の「1. XHTMLとは何か 」によれば
XHTML 1.0(eXtensible HyperText Markup Language)はXHTML系統のマークアップ言語の中の第1段階を踏み出したものである。
それはXML1.0[XML]へ移行する前段階として、従来使用の3つのHTML 4.01(HTML 4.01 Transitional、html4.01/strict、HTML4.01 Frameset) ドキュメント・タイプの改良である。
それは、両方ともXML一致している内容のために言語として使用されるように意図されている。

即ち、従来使用していた html(HyperText Markup Language)と次世代に進化するであろうXML(eXtensible Markup Language)の合わさったもので、その中間に位置し、htmlからxmlへの移行がスムースに行はれるように配慮したものがxhtmlです。ですから、拡張子も[.html]を使用します。

XHTML 1.0 Strictを使用する

ところで、XHTML 1.0がW3Cから勧告された16ヶ月後((2001年5月31日)足早にXHTML 1.1が勧告されました。
XHTML 1.0で、HTML救済措置として、暫定的に含まれた「XHTML 1.0 Transitional」及び 「XHTML 1.0 Frameset」は外され、「XHTML 1.0 Strict」の改良型となりました。
この改革により、XHTML 1.0と違って、従来のHTMLとの互換性のために残されていたレイアウト的な [要素]は取り除かれ、すべて、スタイルシートの [属性](それも外部スタイルシート推奨)での記述になります。
xhtmlへの移行を段階的に行うため、私たちにわかりやすい「XHTML 1.0 Strict」でやって行きたいと思います。

冒頭の宣言について

すべてのXHTML文書はXML宣言で開始する

<?xml version="1.0" encoding="Shift_JIS"?>
これは、XML1.0で処理することを宣言した構文で、ファイルの冒頭に宣言します。
文書の文字コードに「Shift_JIS」を用いる場合には、「encoding="Shift_JIS"」と 宣言する必要があります。
記述はすべて小文字ですが、文字コードに関しては大文字と小文字を区別しません。

XML宣言の後に、DOCTYPE 宣言と文書タイプ宣言の2つを宣言する

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 strict//EN" "http://www.w3.org/TR/xhtml1/DTD/strict.dtd">
この宣言は W3C が制定した、どのバージョンのタグセット(タグの集合体)を使うのかを明らかに示さなければならないので、URIで指定されたXHTML1.0の 「DTD文書」の場所を示しています。なお、大文字と小文字の区別があります。URIの省略は不可となっています。(DTD:Document Type Definition)

xmlns属性のXHTML名前空間を指定する

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
XHTML文書は XMLに適合した文書なので、XMLの名前空間を利用することができます。
使用する「タグの意味」が指定されている位置を参照することで、コンテンツがブラウザに整形できるわけです。
このように名前空間を指定することで<html>要素以下がXHTMLの要素として成立します。
htmlでは、lang 属性で言語指定がされていますが、XHTML でも「xml:lang="ja"」を付け加えています。xml:lang 属性は必須です。

XHTMLの3つの公式バージョン

1.strict(厳密な)xhtml、2.transitional xhtml、3.frameset xhtml
がありますが、(2)は転換期のバージョン、(3)はフレームバージョンに対応しているわけですが、 双方とも、W3C で推奨されない要素を使用しているため過度期のバージョンと言えます。

従来 head 間に記述したコメントの扱い

HTMLでは、<style type="text/css">〜 <!-- ・・・・・--></style>
とエンベッドスタイルシートを head 間に埋め込んでいましたが、XHTMLにおいてはスタイルシートは [#PCDATA(字句解析を受けるデータ)] として定義されたため、< はタグの開始と見なされ、コメントした内容は無視されることになります。

従来スタイルシートを非対応のブラウザから隠すために
<style type="text/css">
<!--
p {color:red}
-->
</style>
のように記述していましたが、XHTMLではその定義は無視されてしまう可能性があります。
解決策としては、外部に[.css]ファイルを作り「リンキングスタイルシート」方式をとることが推奨されています。 (ちなみに、このページでもhead 間にスタイルの埋め込みはしておりません。)

その他の変更点

従来のHTMLのタグは使用できるのか

殆んどが使用できます。ですから、正しいhtml(html4.01 Strict仕様)を記述していたなら、転向は割合簡単にできるはずです。 全くあたらしいものに挑戦するのでなく、従来のhtmlに少し手を加えると考えると楽になります。

今まで作ってきたHTMLファイルは使えるか

少し修正すれば使えます。それについて下記注意点があります。

XHTMLはすべて小文字で書く

HTMLでは要素および属性の記述に、大文字でも小文字でも良かったのですが、XHTMLでは、大文字と小文字が厳格に区別されます。 即ちタグには「<HEAD>とか<TABLE>」等大文字は使えません。
「<head>や<table>」のように英数小文字のみ通用することになります。

終了タグの省略はできないことになりました

例えば、<p>タグですが、本来<p>〜</p>という形で内容をマークアップするものですが、</p>は省略しても 差し支えありませんでした。というのは、次に、新しい「タグ」が現れると自動的に終了したからです。
しかしXHTML文書では、すべての省略が禁止されています。とにかく、必ず<p>〜</p>という形で使います。
その外に<li>〜</li>などが挙げられます。

空要素(エンプティ要素)の扱い方

空要素とは、終了タグを持たない要素を指し、下記が挙げられます。

猫の写真

空要素全体に言えることですが、「必ず最後の部分で半角スペースを置いた後に、スラッシュ 「 alt="猫の写真" /> のように記述します。

属性は必ずダブルクォーテーションで囲む

HTMLでも普段からきちんと付けている人は問題はないのですが。
従来属性の値が数字だけ、あるいはアルファベットだけの場合、引用符(ダブルクォーテーションで囲むこと)を省略できましたが、 XHTMLでは省略は許されません。
例えば、<hr width=376 />は不合格で、<hr width="376" />としなければなりません。

タグは必ず入れ子にする

HTMLではタグの終了の仕方が、たすき掛け状に交差していても大丈夫でしたが、XHTMLでは許されません。 数学比例式でいう内項と外項のように、先ず内項を終了させ、 次いで外項を終了させることです。例を挙げると、 <strong><span style="font-style: oblique;">ようこそ</strong></span>は、 XHTMLでは駄目で、<strong><span style="font-style: oblique;">ようこそ</span></strong>としなければなりません。

旧 name 属性と新 id 属性を併記すると安全

HTMLでは、name 属性を使ってファイル内の特定の場所へリンクしたのですが、 XHTMLでは、id 属性を使うことになります。
アンカー名の指定は、NAME 属性ではなくID 属性で行なう方向にW3Cは移行させています。 XHTML1.0(J)では過渡的な措置として、どちらでもうまくいくように、両方を指定しておくように薦めています。 ただし、同じ値を書かなければなりません。過渡的なものなので、XHTML1.1ではそのようなNAME属性は廃止されています。

即ち、下記の従来の形は使用出来ません。
<a name="siyo">XHTMLの仕様</a>

XHTMLではこのような形になります。
XHTMLの仕様左の項目へリンク移動したい場合
(送り手側)<a href="#siyo">XHTMLの仕様</a>と記述します。
(受け手側)<a id="siyo">XHTMLの仕様</a>となります。

ところで、現段階では、このid 属性に対応していないブラウザもあるようなので、 安全策としてname 属性とid 属性を併記するのが一般的なようです。
<a href="#suyo">XHTMLの仕様</a> (送り手側)こちらは従来と変りありません。
(受け手側)<a name="siyo" id="siyo">XHTMLの仕様</a>
[name]属性か、[id]属性のどちらか一方が無視されて実行されます。

注釈:そもそも[id属性]には3っつの使用法があります。

  1. 要素に特定の識別子(id 値)を割り当て、その文書内で同じid 値を持つ要素が存在できないことを意味する。即ち1文書内で1箇所しか利用できないことです。
  2. ハイパーテキストのリンク先を定義する(ラベルを貼り付ける)
  3. 文書のスクリプトプログラムが文書をアドレス付けしたり操作したりするために文書の一部にラベルを貼り付ける

今後リンク先へジャンプするには、name 属性に替えて「2番目」のid 属性を使用し、ラベルを貼り付けることになったのです。 (id 属性を使用すると、<a name="siyo">が、<id="siyo"> となり、アンカー要素[a]が不用となります。)

[&]はあらゆるところで[&amp]と記述する

従来からHTMLでも&は&ampと記述することになっていましたが、XHTMLの場合、その用法が厳格になります。 特に、CGIを呼び出すためのURL記述の場合要注意です。
(例えば)<a href="/cgi-bin・・・中の&・・・">は
<a href="/cgi-bin・・・中の&anp・・・">と記述します。

2008年10月27日 W3CよりXHTML 1.0 検証ロゴ取得

Valid XHTML 1.0 Strict

正当なCSSです!

トップへ戻る    総目次へ戻る    XHTML 2へ進む

inserted by FC2 system