XML/XHTML関連規格の参考情報

このページで取り上げている規格は、概ね2003年6月25日現在の状態を紹介しています。

スタイルシートに関する仕様

CSSに関しては、ある程度仕様が安定してから改めてフォローする予定です)

CSS 2.1

CSS2の改訂版であるCascading Style Sheets, level 2 revision 1 (CSS 2.1)(2003年1月28日時点で草案)は、CSS2のエラー修正、不明瞭な部分の明確化が行われています。さらに、style属性のルールはIDセレクタと同じではなく最優先として扱う、HTMLなどによるレイアウト指定はブラウザ標準スタイルと同等に扱う、自動生成カウンタの廃止、text-shadowプロパティの廃止など、ちょっとした変更が加えられています。新しいプロパティ値としては、色名にorange(#ffA500)が、displayに'inlie-block'が、cursorに'progress'が、white-spaceに'pre-wrap' と'pre-line'加わりました。

Cascading Style Sheet Level 3 (p.66)

次期のCSSであるCSS3は、モジュール化されることになっています。これは、複雑化してきたスタイルシートの各機能の関係を明確にし、部分的なテストや実装を容易にし、さらに新しい機能を導入しやすくするというメリットが期待されています。

このCSS3の概要を解説するIntroduction to CSS3(2001年5月23日時点で草案)では、26ものモジュールが示されていますが、そのうちいくつかは、勧告案までにふるいにかけられるかも知れないということです。

CSS3スタイルシートのセレクタ (pp.69-71)

スタイルシートの適用対象を指定するセレクタは、CSS3のモジュールの一つであるSelectorsにおいて更に強力なものとして定義されます(2001年11月13日時点で勧告候補)。

CSS3のセレクタでは、 :first-child のようなDOM風の構造化疑似クラスや、 :contains(string) という要素内容の文字列にマッチする疑似クラス、 :not(selector) のような「あるセレクタに該当しない要素」を選ぶ疑似クラスなどが追加されます。特に興味深いのは「何番目の子要素」を示す :nth-child() 疑似クラスで、例えば

(例)

tr:nth-child(2n)   {background-color: white}   /*nth-child(even)も可*/
tr:nth-child(2n+1) {background-color: silver}  /*nth-child(odd)も可*/

というスタイル宣言によって、表の列に交互に背景色を設定するなどという、従来の方法ではいちいちtr要素にクラス指定が必要だったスタイルを、すっきりと構造的に記述できるようになります。

CSS3のボックスモデル (pp.79-83)

ドキュメントの内容をCSSで視覚表現する場合、それぞれの要素を長方形のボックスとして扱い、構造に従って配置(flow)します。理解しやすい情報デザインにとても重要なこのルールを定めるのがCSS3 module: the box modelです(2002年10月24日時点で最終草案)。

最初の草案で示されていた枠線の角を丸くするborder-radiusなどはCSS3のborderモジュールに移されました。また、ボックスのwidthの計算方法が実装によって異なる問題を吸収するbox-sizingといったプロパティは、不要ではないかということで削除されています。さらに、HTML以外の文書でハイパーリンクの役割を持つ要素を表現するための@linkルール、リストなどを折り畳んでおいて、選択時に展開するcollapseといったプロパティも行方不明になりました(UIモジュールに移されるか、新たにハイパーリンクモジュールがつくられるかも知れません)。

Line-Box: ブロックおよびインライン要素内での「行」やベースラインの表現をカバーするのがCSS3 module: lineです(2002年5月15日時点で草案)。line-heightdominant-baselineといったプロパティの他、::first-letter疑似要素に適用するdrop-initial-sizeなども定めています。

CSS3 Textと縦書き (p.48)

CSS3のモジュールの一つで、テキストのレイアウトや装飾をカバーするCSS3 module: Text(2003年5月14日時点で勧告候補)では、縦書きを実現するwriting-modeや升目に沿った文字配置のline-grid、禁則処理のhanging-punctuationといった国際化対応のプロパティ、下線のスタイルを指定するtext-underline-style、影付き文字を実現するtext-shadowプロパティなどを定義します。

CSS3で採用される縦書きのためのスタイルは、もともとXMLのスタイルシートであるExtensible Stylesheet Language (XSL)の7.26 Writing-mode-related Propertiesで定義されていたものです。

CSSのより高度なメディア 指定 (p.75)

HTML4とCSSでは、media="screen", @media print...といった表現によって、画面表示、印刷用などメディアに応じたスタイルを設定することができます。これをさらに高度にして、「カラー表示の可能な画面」「幅が25cm以上ある印刷出力」といった詳細なメディア指定を可能にしようというのがMedia queriesです(2002年7月8日時点で勧告候補)。

具体例としては、media="screen and (color)", media="print and (min-width: 25cm)"といった形で、メディアの特徴を記述する方法が提案されています。指定する機能としては、width, height, device-width, device-height, viewport-aspect-ratio, color, color-index, monochrome, resolution, scan, gridが、また新たな単位としてdpi, dpcmがあげられています。

複数列=Multi-Column (p.64)

文書内の要素を複数列に分けて段組表現するには、今のところtable要素を使って無理やり実現するしかないという状況ですが、これをスタイルシートで表現するのがCSS3のモジュールの一つであるMulti-column layoutです(2001年1月18日時点で草案)。

CSS3のMulti-Columnを使うと、テーブルの場合と違って、ウインドウサイズの変更などに応じて、テキストが自動的に流し込まれるようになります。コラム(段組)の設定は、コラムの数、コラムの幅、コラム間のスペースなどによって指定します。

(例)

div.article {column-count: 3; column-width: auto; column-gap: 3em}

たとえば上記のようなスタイルで、記事を3段組にし、コラムの間に3文字分のスペースをとるという方法が検討されています。高度な表現として、コラムをまたがる見出しなどのためのcolumn-spanというプロパティや、コラム中に挿入するボックスを扱うためのfloat:mid-columnといった設定も示されています。

CSS3のカラーモジュール (p.79)

CSS3 module: Color(2003年5月14日時点で勧告候補)はCSS3での色指定は、ブラウザ依存とされていたHotPinkのような色の値(X11 Color+SVGグレイスケールの147色名)、RGBにアルファチャンネルを加えたRGBAの4要素による数値指定、HSL、HSLAによる指定などが加わり、大きく拡張されます。また、SVGで定められている@color-profileというルールに関する定義、ガンマ補正も追加されます。

CSS3そのほかのモジュール
モジュールが非常に多いので、ほかのモジュールはまとめて紹介します。
  • リスト: Listsモジュール(2002年11月7日時点で草案)では、CSS2と比べるとマーカーの扱いが変更され、::markerの疑似クラスが提案されています。CSS2の12.6で:beforeを用いて表現されていた例が、CSS3では次のようになります。

    (例)

    LI::marker { content: counter(list-item, lower-roman) "." }
    LI { display: list-item; }
  • 背景定義: Backgroundsモジュール(2002年8月2日時点で最終草案)は、CSS2からは、'Background-clip'、'background-origin'、'background-size'、'background-quantity、'background-spacingというプロパティが追加されています。

  • フォント指定: Fontsモジュール(2002年8月2日時点で最終草案)は、CSS2と同じフォント指定機能に加え、エンボスなどを実現するfont-effect、傍点などの強調を表現するfont-emphasize-styleといったフォント装飾のプロパティが使えるよう拡張されます。また、Web Fontsも同時に最終草案として公開されました。

  • カスケーディングと継承: Cascading and inheritanceモジュール(2002年2月19日時点で草案)は、基本的にCSS2と同じです。前回より少し定義が詳細になりました。

  • プロパティの値と単位: Values and Unitsモジュール(2001年7月13日時点で草案)は、基本的にはCSS2の仕様書4.3を再構成したものです。

  • 枠線: ボックスモデルに含まれていたborder-radiusや、border-imageborder-shadowといったプロパティを加えたものがBorderモジュール(2002年11月7日時点で草案)となっています。

  • 生成/置換コンテンツ: 疑似要素::before、::afterの扱い、カウンタ、引用符などについて定義するのがGenerated and Replaced Contentモジュール(2003年5月14日時点で草案)です。

  • 音声: 読み上げ音声の音量、ポーズ、声の種類などを制御するのはSpeechモジュール(2003年5月14日時点で草案)です。

インラインstyle属性の拡張文法 (p.68)

HTMLなどの要素の開始タグに直接スタイル規則を記述するインラインstyle属性について、汎用の文法を定義するのはSyntax of CSS rules in HTML's "style" attribute(2002年5月15日時点で草案)です。

この文法では、インラインのstyle属性でも疑似クラスに対するスタイルを設定できるような方法を定めています。例えば、リンクのアンカーの場合:

(例) <a href="http://foo.com" style="{color: blue} :hover {color: green}">

という方法が可能になります。さらに、今回の改訂では、その要素と子孫要素に適用する外部スタイルシートを読み込む方法も加わっています。

(例) <div style="@import url(navigationstyles.css);">

モバイル機器のためのスタイル (p.75)

CSS2仕様のうち、携帯端末で共通して利用できるようにすべき部分(サブセット)を定義するのがCSS Mobile Profile 1.0(2002年7月25日時点で勧告候補)です。このプロファイルで定めるスタイルの仕様は、ほぼCSS1と同様になっています。

スタイルシートの利点の一つは、機器に応じて異なる定義を用意して、それぞれの機器にふさわしい形でスタイルを宣言できるところにあります。携帯端末のためのスタイルは、handheldメディアタイプで指定できます。

テレビを念頭に置いたCSS TV Profile 1.0(2002年8月7日時点で勧告候補)もあります。最終草案に比べ、セレクタの種類が増えたほか@ルールに関するプロファイルも追加されています。

その他

DOM Level 3 (p.149)

DOM Level 3は、XML名前空間、Infoset、XML Baseをサポートし、キーボードイベントなどの処理を拡張します。また、抽象スキーマ(DTD、XML Schemaなど)や文書の読み書き、 "Embedded DOM"の開発、XPathのサポートなどが計画されています。

  • Core:DOM3 Core(2003年6月9日時点で最終草案)では、DOM2で定義されているAttr, Document, Entity, Node, Textというインターフェイスに、いくつかの新しい属性やメソッドを追加し、さらにTypeInfo、DOMStringList、NameList、UserDataHandlerなど10あまりの新しいインターフェイスが追加されます。新しい型としてはDOMUserData、DOMObjectが加わります。

  • LS: DOM3のLoad and Save(2003年6月19日時点で最終草案)はXML文書を読み込んでDOMとして表現したり逆にDOMで表現されたデータをXML文書として書き出すためのインターフェイスを提供します。またValidation(2003年7月30日時点で勧告候補)は、文書の編集に際しての検証インターフェイスと例外を提供します。以前DOM 3 Abstract Schemas and Load and Save Specificationとして検討されてきた仕様のうち、Abstract Schemasは2002年7月25日にW3C Noteとなっています。

  • XPath:DOM 3 XPath Specification(2003年3月31日時点で勧告候補)はDOMでXPath式によるノードの指定を可能にしようというもので、Textノード、Namespaceノードの扱いなど、従来のDOMとXPathでの違いを調整しながら、XPathEvaluator, XPathExpressionといったインターフェイスを定義していきます。

  • Events:DOM3のイベント処理インターフェイスはEvents Specification(2003年3月31日時点で最終草案)で定義されます。

言語に関する情報 (p.123)

lang属性xml:lang属性で指定する言語コードの書式は、従来RFC 1766に基づいていましたが、2001年1月31日にRFC 3066が公開され、RFC1766を上書きしました。より現状に即した細かい規定が加わっていますが、lang属性の書き方については変更はありません。

文字に関する情報 (p.125)

WWW上でさまざまな文字の情報を相互運用性を確保して扱うためのCharacter Model for the World Wide Web 1.0(2002年4月30日時点で最終草案)は、ウェブの標準文字セットをUnicodeとした上で、仕様書などを策定する際の解釈の統一や要件を定めています。

文字コード情報に関しては次のように述べられており、そろそろx-sjisのような書き方は全廃すべき時期に来ているようです。

The 'x-' convention for unregistered character encoding names SHOULD NOT be used, having led to abuse in the past. ('x-' was used for character encodings that were widely used, even long after there was an official registration.) 3.6.2 Character Encoding Identification

また、Unicode文字レパートリのうち、マークアップでは使うべきでない文字などについての考え方がUnicode in XML and other Markup Languagesとしてまとめられています(2002年2月18日改訂)。

MIMEタイプ(p.115)

インターネット上でリソースのタイプを示す基本となるMIMEタイプ(メディアタイプ)について、いくつかの新しい提案があります。

  • XML文書のMIMEタイプ: XML文書のMIMEタイプはtext/xml、application/xmlなどいろいろな表現がありましたが、これらを整理する考え方が2001年1月にRFC 3023 XML Media Typesとして示されました。

  • XHTMLのMIMEタイプ: XHTML 1.0仕様書では、5.1でメディアタイプをtext/htmlとしてよいということのみ定め、XMLとしてのMIMEは保留扱いになっていましたが、RFC 3023を受け、application/xhtml+xmlRFC 3236として定められました。これは従来のものを置き換えるのではなく、text/htmlも依然として有効です。XHTMLにはXHTML Basicなどのプロファイル(バリエーション)があるので、それを示すためにprofileパラメータをオプションでつけてもよいとなっています。

  • スクリプト言語のMIMEタイプ: 長い間text/javascriptなどが非公式のまま用いられ、HTML仕様書などでも用例に示されてきましたが、これらを正式にIANAに登録しようというインターネットドラフトJavaScript and ECMAScript Media Typesが2001年9月21日に発行されました。

変更不要のURI (p.107)

URIが変更されてしまうことの問題点はしばしば指摘されていますが、これは言い換えれば時間が経過するとその内容やロケーションが変わってしまうというとことです。ならば「ある特定の日時のURI」を示せば、永続性の問題が解決できるだろうということで、日付情報を付加したURIである"duri" and "tdb": URN Namespaces based on dated URIsのインターネットドラフトが提案されていましたが、2003年に廃棄されてしまいました。

なおURLという用語については、2001年9月21日付けのW3CノートURIs, URLs, and URNs: Clarifications and Recommendations 1.0で古典的な説明と新しい説明が対比して示され、現在では「有用だが非公式な概念」であるとされました。当サイトのURIとURLで簡単に紹介しています。

  • URN:ISBN: 以前からURNの例として取り上げられながら、IANAに登録されないままだったISBNが、2001年10月にRFC 3187が発行され、正式にIANAに登録されたURNとなりました。

  • URNに関しては、当サイトのURNについての簡単な説明でも概要を紹介しています。

WML 2.0

携帯電話向けの情報提供用の共通プロトコルを開発しているWAPフォーラムがWAP2.0の公開レビュー用リリース(Conformance Release)を発表しています(2001年8月1日時点)。その中には、コンテンツ記述用のマークアップ言語で、XHTML Basicに準拠するといわれていたWML 2.0の案(2001年6月26日時点でProposed Version)も含まれます。

WML2.0は、実際XHTML Basicを基本に、別の名前空間を使ってWML独自のcard, do, go, widgetなどといった要素タイプや属性が定義(拡張)されています(参考:当サイト内のごく簡単な紹介)。ルート要素はhtmlとなり、ユーザエージェントはXHTML Basic文書を受け入れなければならないと明記されているので、XHTML Basicで記述すれば完全にWAP対応ブラウザで表示できることが保証されます(NTT DoCoMoはcHTMLも包含されると主張しているようですが…)。

WAP2.0では、CSS2のサブセット(CSS Mobile Profile相当)に一部拡張を施したスタイルシートWCSSが定義される他、プロトコルに全面的にTCP/IPが採用されるなど、ウェブの標準に沿った仕様となっています。

XHTML 2.0

XHTML 2.0と呼ばれる言語が検討されています(2003年5月6日時点で草案)。XHTMLという名前を使っているものの、XHTML1とは名前空間が異なる別のマーク付け語彙です。XML対応ブラウザでスタイルシートを使えばいいから、従来のHTMLとの要素タイプごとの後方互換性は不要としています。

敢えて親戚筋にあたるXHTML1と比べると、新しい要素型としてBlock Textモジュールにsection, h, blockcode, Inline Textモジュールにl, quote、Listモジュールにnl, label, Objectモジュールにstandbyが加わっているほか、p要素型の内容モデルに| List | blockcode | blockquote | pre | tableが含まれます。また、imgモジュールが外されてobjectを用いることに統一され、br, acronym, map, area, qなどの要素型も削除されています。meta要素型は空要素でなく文字列を内容に持つように改められ、RDFなどを含めたメタデータの扱いが検討されています。さらに、bdo, ins, delは要素型ではなくdir, editという属性に変更され、多くの要素から利用できることになるようです。

  • フォームに関するモジュールはXFormsを用います。また、ハイパーリンクもXLinkではなく、従来のa要素/href属性を採用しています。XFramesモジュールを想定してtarget属性がHypertext Attributesに含まれます。画像などを指定するsrc属性はEmbedding Attributeとなり、Hypertext AttributesとともにCommon Attributesとしてほとんどの要素から利用できるようになっています。

  • ほかにも、h1〜h6は非推奨にしようかとか、hrはどうしようとか、strongもやめちゃおうとか、数値を示すnr要素を追加しようとか、いろいろ検討事項があげられています。

  • HLINK: 現在のXLinkは(1)名前空間接頭辞が必要、(2)リンク先を示す属性名がhrefに固定されている、(3)ひとつの要素に複数のリンク先を指定できない(ex:ハイパーリンク先URIとプロファイルURIなど)といった点から、XHTMLほか既存の文書型では利用し難いという議論があります。これを回避するための代替仕様HLink: Link recognition for the XHTML Familyが提案されています(2002年9月13日時点で草案)。

    XHTML文書内で、どの名前空間に属するどの要素型のどの属性がリンク機能を持つかということを、hlinkという要素で定義しようというもので、これは外部文書とすることも可能です。スキーマで構文を定義するだけでなく、それを解釈するための定義をさらに別に用意する(schema annotationの一種?)というわけですが、XLink自身でこういう定義ができればいいものを、W3Cの内輪もめというか何というか…

    2002年9月25日には it is the unanimous opinion of the TAG that XLink should be used for hypertext references in XHTML 2.0という見解を示したTAG Comments on XHTML 2.0 and HLinkが出されて、議論が沸騰しています。