診断士の経営視点とSEのシステム技術の両面からIT・システム開発・Web技術+アウトドア情報を提供しています

トップブログでつくるビジネスサイト無料ブログでここまでできるCMSでつくるビジネスサイトウェブ講座&SEOシステム開発個人情報保護Googleでお仕事信州撮っておき情報








スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[--------] スポンサー広告 | |

正しさのレベル W3C XML Recommedationを読む Part1  

XHTMLの先頭に書くべきだといわれているXML宣言について、3回の連載記事としてW3CのXHTML Recommendation を確認してきました。

ところが 「XHTMLはHTMLをXMLの構文で再構築したもの」だと言われています。しかも記事で取り上げているのは XML宣言です。やはり、XMLのRecommendationも読んでおいたほうが良さそうです。

XMLのRecommendationは量も内容ももりだくさん

W3CのサイトでXMLのRecommendationが入手できる。Extensible Markup Language (XML) 1.0 (Fifth Edition) 第二版あたりを取り上げた情報もあるが、現在は第五版が最新版だ。

XMLのRecommendationはページ数も多い。さらにEBNFという記法で書かれている。すべてを読むのはたいへんだ。XMLに対する本格的な取り組みも必要だが、ここではXML宣言に関係する部分に限定して読んでみよう。

XML文書ではXML宣言が必要か?

膨大で難解な仕様を前に立ちすくんでいたが、「XMLドキュメントにXML宣言が必要か」という疑問に関しては、意外と簡単に答えは得られた。

2.8 Prolog and Document Type Declaration の章の冒頭に答えがある。

Definition: XML documents SHOULD begin with an XML declaration which specifies the version of XML being used.(W3C Recommedation XML)

簡潔な文だ。これならExciteに翻訳してもらわなくても理解できそうだ。

定義:XML文書は使用されているXMLのバージョンを特定したXML宣言で始めるSHOULD

ところが問題になるのは SHOULD だ。わざわざ大文字で書かれている。辞書検索では、「should 《義務》~すべきである、~べきだ、~しなくてはならない(Goo辞書)」 と説明されている。同じような意味を持つ単語に must もある。 「must ~しなければならない、~する必要 がある(Goo辞書)」 

MUST と SHOULD どう違うのか?

W3C Recommendationは用語の使い方にも気を配っている

実はこの must,shouldなどについては W3Cと同様にインターネット上の標準を定める組織 IETFのRFC(RequestForComments)で規定されている(IETFは、インターネットそのもののインフラとなる規定を中心に扱い、W3Cはその上で利用されるWWWに関連する規定を中心に扱っている @ITより)。Request for Comments: 2119 「Key words for use in RFCs to Indicate Requirement Levels」

XML Recommendation には、MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAYなどの用語は、RFC2119の表現に従って解釈すべきだと明記されている。

追記 やはり最新版を読まないと正確な話しはできない

W3C XML Recommedation 1998年2月10日 日本語訳を参照すると、1.2 定義で、MUST, MAYがW3C勧告の中で規定されていたようである。「MUST:適合する文書又はXMLプロセサは,記述されたとおりに動作することが要求され る。そうでなければ,エラーとする。」

同訳の参照の中に RFC2119 は含まれていない。さらに同訳では SHOULD は定義されていない。

ところが、最新版の第五版では、参照の中に RFC2119 が含まれ、1.2 Terminology から MUST,MAYの定義が削除され、RFC2119の説明に従うということが明記されている。(to be interpreted as described in [IETF RFC 2119].)

つまり、過去はいざ知らず、現在のW3C XML勧告では、RFC2119の用語定義に基づいて解釈することが求められている ということだ。やはり、最新版を読まなければ正確な判断はできない。

MUSTが絶対要求、SHOULDは・・・

翻訳にも疲れた。RFC2119の日本語訳を作成してくれた方がいるので、ここではありがたく参照させていただく。

MUST
この単語、もしくは用語 "REQUIRED" や "SHALL" は、定義が仕様書の絶対の要求であることを意味する
SHOULD
この単語、もしくは形容詞の "RECOMMENDED" は、特定の状況で、特定の item を無視するための有効な理由が存在するかもしれないが、完全な実装は異なった方針を選択する前に、理解され注意深くよく考えられなければならないことを意味する。

正しさのレベル

「HTML的に正しい」あるいは「W3Cの勧告通りなので正しい」などと言っているが、実は正しさにもレベルがある というわけだ。

MUSTとSHOULD、辞書的な意味ではどちらも 「・・・・すべき」だが、W3C Recommendation の中では厳密に使い分けられている。

MUST は絶対要求、これに反していると「正しい」ことにはならない。一方、SHOULDは「注意深くよく考えられなければならない」とされ、「実装は異なった方針を選択」することにも言及されている。

XML宣言の定義は SHOULD

このXML宣言の定義では SHOULD が使われている。絶対要求のMUSTではない。

SHOULDの説明文の中に、「無視するための有効な理由が存在するかもしれない」とあり、さらに「異なった選択をする」とある。つまり SHOULD が使われている場合、SHOULDの通りにしない という判断もありうるという意味だろう。

RFCに基づいてXML宣言の定義を再翻訳すると

「SHOULD とは、言っていることを理解し、背景をかんがえなくてはならないが、良く考えた結果としててW3Cの言っているとおりにしない場合もありうる」ということだ。

先ほどの我流翻訳にRFCの規定を反映させると、下のような定義になるのではないか。

定義:XML文書は使用されているXMLのバージョンを特定したXML宣言で始めた方が良いが、これに従わない有効な理由があれば、注意深く良く考えて異なる方針を選択しても良い。

SHOULD に従っていなければ「正しくない」のか

「XML文書は使用されているXMLのバージョンを特定したXML宣言で始めるSHOULD」という定義に従っていない文書、つまり、「XML宣言が先頭にない文書は正しいXML文書ではない」 と言えるのか?

MUST に反すると「正しくない」、これはたいていの人が一致する見解だろう。絶対要求を守っていないのだから。ではSHOULDの通りにしなかった場合は? やはり 「正しくない」 のだろうか?


[2009-05-01] ウェブ講座&SEO | TB(2) | CM(2)

以下の場合は必須と書かれてます。

興味深く読ませていただきました。

「XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)」で調べましたら、「3.1.1. Strictly Conforming Documents」の5に、UTF8、UTF-16の場合は必要と書かれていますので、UTF-8、UTF-16の場合はXML宣言を省略しても正しいと解釈します。

http://www.w3.org/TR/xhtml1/
[ 編集 ] [2009/11/09 20:29]

UTF-8、UTF-16の場合はXML宣言を省略しても正しい

Dakinyさん、コメントありがとうございます。

FCKEditorなどの記事でDakinyさんのサイトを参考にさせていただいています。
お立ち寄りいただき光栄です。

ご指摘の部分をGoogle翻訳してみました。
(一部意味不明です!)
> XML宣言は、すべてのXML文書では必要ありません。
> しかし、XHTML文書の著者に強く、すべてのドキュメント内のXML宣言を使用することが推奨されます。
> このような宣言をするときは、文字は、ドキュメントのエンコーディングは、デフォルトのUTF以外の- 8またはUTF - 16と、
> エンコードはより高いレベルのプロトコルによって決定されたが必要です。

ご指摘の通り、
文字コードがUTF-8 UTF-16の場合、
または上位プロトコルで文字コードが指定されている場合には、
XML宣言を省略しても正しい と考えております。
[ 編集 ] [2009/11/10 09:36]

コメントの投稿













管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://wiz2.blog16.fc2.com/tb.php/450-282b1e88


-

管理人の承認後に表示されます
[2009/05/20 14:19] URL

UTF-8ならばXML宣言は入れなくてもいい

明確な理由がなければXML宣言はいれない。 このブログをはじめとして、仕事ではずっと、XML宣言を惰性で入れてきたのですが、昨年7月から明確な理由がなければXML宣言をいれなくなりました。 IE6の...
[2010/03/15 00:06] URL 世界中の1%の人々へ






トップブログでつくるビジネスサイト無料ブログでここまでできるCMSでつくるビジネスサイトウェブ講座&SEOシステム開発個人情報保護Googleでお仕事信州撮っておき情報
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。