スタイルシートをXML文書に結びつける


W3C

スタイルシートをXML文書に結びつける

W3C勧告 1999年4月28日

このバージョン[原文]:
http://www.w3.org/TR/1999/xml-stylesheet-19990428
最新のバージョン:
http://www.w3.org/TR/xml-stylesheet
以前のバージョン:
http://www.w3.org/TR/1999/xml-stylesheet-19990407
編集者:
James Clark ()

著作権  ©  1999 W3C (マサチューセッツ工科大学, フランス国立情報処理自動化研究所, 慶應義塾大学). すべての権利が留保されている。W3Cの免責(liability), 商標(trademark), 文書利用(document use), ソフトウェア使用許諾(software licensing)規則が適用される。


概要

この仕様書は、XML文書のプロローグ部に xml-stylesheet というターゲットをもつ1個以上の処理命令を組み込むことにより、スタイルシートをXML文書に結びつけられるようにするものである。

この文書の位置づけ

この文書は World Wide Web Consortium の勧告案(Proposed Recommendation)であり、現在はW3Cのメンバーによるレビューを受けているところである。

この仕様書に関するレビューコメントは、1999年5月26日までに <www-xml-stylesheet-comments@w3.org> へ送ること。公開コメントの アーカイブが利用可能である。W3Cメンバーは公式のコメントを、W3Cチームにしか見えないよう、<w3c-xml-stylesheet-review@w3.org> へ送ってもかまわない。

この勧告案で説明されている技術は、その仕事にとって唯一の技術ではない。利用可能であったり開発中の技術の中にはこのほかにも、リンクをXML文書の外に置けるにするもの(HTTPリンクヘッダ. 仕様書内で後述.)や、拡張可能なもの(XML名前空間に基づく)、自己文書化的なもの(RDFのように)、妥当性を検証できるもの(属性と要素だけしか使わないから)、スタイルルールを直接に文書に埋め込めるようにするものがある。もっとも、強力で一般的なメタデータ技術の開発が続いているけれども、現在の仕様書は単純かつ好都合であり、うまく機能することがわかっている。

この仕様書は先例ととられるべきものではない。XML処理命令は、将来のW3C勧告では使われないことになりそうだからである。

この仕様書は、1999年4月7日付け公開ワーキングドラフトを見直したものである。ワーキンググループは、この仕様書に対するこれ以上の本質的な変更を予定しておらず、勧告案レビュー期間の間、この仕様を試すための活発な実装を奨励する。ワーキンググループは、将来の仕様においては、スタイルシートをXML文書に結びつけるための機構が追加されるものと思っている。

勧告案としての公開は、W3C会員組織による保証という意味合いをもつものではない。この文書はまだドラフト(草稿)文書であって、何時にても他の文書によって更新され、置換され、あるいは廃止されることがある。W3Cドラフトを「進行中の作業」以外のものとして引用することは不適切である。ドラフトの位置づけについては テクニカルレポートのページを見ること。

この作業は、W3C XMLアクティビティの一部である。

目次

1. xml-stylesheet 処理命令

付録

A. 参考資料
B. 理屈 (非規範的)

1. xml-stylesheet 処理命令

スタイルシートは、ターゲットが xml-stylesheet である処理命令を利用することにより、XML[XML10]文書に結びつけることができる。この処理命令は、HTML 4.0 [HTML40]<LINK REL="stylesheet"> の挙動に従う。

xml-stylesheet 処理命令は、開始タグと同じように解析されるが、定義済み実体以外の実体を参照してはならないという例外がある。

以下の文法は、XML勧告[XML10]で使われている文法と同じ表記法を使って与えられている。文法中の記号のうちここで定義されていないものは、XML勧告の中で定義されている。

xml-stylesheet 処理命令


[1] StylesheetPI ::= '<?xml-stylesheet' (S PseudoAtt)* S? '?>'
[2] PseudoAtt ::= Name S? '=' S? PseudoAttValue
[3] PseudoAttValue ::= '"' ([^"<&] | CharRef | PredefEntityRef)* '"'
      | "'" ([^'<&] | CharRef | PredefEntityRef)* "'"
[4] PredefEntityRef ::= '&amp;' | '&lt;' | '&gt;' | '&quot;' | '&apos;'

PseudoAttValue では、CharRef または PredefEntityRef は、通常のXML属性値と同様に解釈される。疑似属性の実際値は、それぞれの参照が参照先のキャラクタによって置換された後の値である。この置換は、XMLプロセッサによって自動的に実行されるものではない。

xml-stylesheet 処理命令は、XML文書のプロローグ部ならばどこでも許される。XMLの文法は、プロローグ部の中で処理命令が許される場所を制約している。xml-stylesheet 処理命令は、他の処理命令と同様この制約に服する。

以下の疑似属性が定義される。

href CDATA #REQUIRED
type CDATA #REQUIRED
title CDATA #IMPLIED
media CDATA #IMPLIED
charset CDATA #IMPLIED
alternate (yes|no) "no"

疑似属性の意味論は、HTML 4.0 の <LINK REL="stylesheet"> と全く同じであるが、alternate 疑似属性という例外がある。alternate="yes" が指定されていれば、処理命令は <LINK REL="stylesheet"> の代わりに <LINK REL="alternate stylesheet"> の意味論をとる。

場合によっては、スタイルシートが、外部的な文脈によってXML文書に結びつけられるかもしれない。たとえば、HTTP[RFC2068](section 19.6.2.4)の初期バージョンは、Link ヘッダを用いてスタイルシートをXML文書に結びつけられるようにしていた。HTTPの Link ヘッダによって指定されたリンクはどれも、xml-stylesheet 処理命令によって指定されたリンクの前に出現するものと見なされる。これは HTML 4.0 の場合と同じである(section 14.6 を見ること)。

こちらにあるのは、HTML 4.0 からの例と、それに対応する処理命令とである。

<LINK href="mystyle.css" rel="stylesheet" type="text/css">
<?xml-stylesheet href="mystyle.css" type="text/css"?>

<LINK href="mystyle.css" title="Compact" rel="stylesheet"
type="text/css">
<?xml-stylesheet href="mystyle.css" title="Compact" type="text/css"?>

<LINK href="mystyle.css" title="Medium" rel="alternate stylesheet"
type="text/css">
<?xml-stylesheet alternate="yes" href="mystyle.css" title="Medium"
type="text/css"?>

複数の xml-stylesheet 処理命令も、LINK REL="stylesheet" と全く同じ意味論で認められる。たとえば、

<LINK rel="alternate stylesheet" title="compact" href="small-base.css"
type="text/css">
<LINK rel="alternate stylesheet" title="compact" href="small-extras.css"
type="text/css">
<LINK rel="alternate stylesheet" title="big print" href="bigprint.css"
type="text/css">
<LINK rel="stylesheet" href="common.css" type="text/css">

であれば、つぎのものと等価である。

<?xml-stylesheet alternate="yes" title="compact" href="small-base.css"
type="text/css"?>
<?xml-stylesheet alternate="yes" title="compact" href="small-extras.css"
type="text/css"?>
<?xml-stylesheet alternate="yes" title="big print" href="bigprint.css"
type="text/css"?>
<?xml-stylesheet href="common.css" type="text/css"?>

A. 参考資料

HTML40
World Wide Web Consortium. HTML 4.0 Specification. W3C Recommendation. http://www.w3.org/TR/REC-html40 を見ること。
RFC2068
R. Fielding, J. Gettys, J. Mogul, H. Frystyk Nielsen, and T. Berners-Lee. Hypertext Transfer Protocol -- HTTP/1.1.. IETF RFC 2068. http://info.internet.isi.edu/in-notes/rfc/files/rfc2068.txt を見ること。
XML10
World Wide Web Consortium. Extensible Markup Language (XML) 1.0. W3C Recommendation. http://www.w3.org/TR/1998/REC-xml-19980210 を見ること。

B. 理屈 (非規範的)

処理命令を使うと、主文書構造をアプリケーション特有の処理情報で汚染することが避けられる。これは処理命令が狙いとするところである。

主要なブラウザベンダーからの次リリースに間に合うように完成できるスタイルシートのリンクのための仕様を求める緊急の要請があった。実績のある既存の機構に密接に基づいた単純な機構を選ぶことによってのみ、この要請に沿って時間内に仕様書を完成できたのである。

このバージョンの仕様書について選ばれた機構は、将来のバージョンについて計画されている追加機構の制約となるものではない。処理命令を使わなければならないとか、あるいはリンク情報をソース文書に組み込まなければならないという制約さえないのである。


どら猫本舗 (webmaster@doraneko.org)