- - PR -
CDATAとNMTOKEN(DTDの属性リスト宣言)
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-06-07 00:42
数字を扱う際にCDATAとNMTOKENのどっちを選んで良いものか、よく分かりません。
何が基準になるのでしょうか? |
|
投稿日時: 2003-11-28 17:42
XML 1.1 仕様を読んでみましたが、CDATA の場合は Attribute-Value Normalization (以下 AVN)を一切行わないという点しか違いが見当たりませんでした。
AVN とは、大雑把に言うと改行コードやタブはスペースに、連続するスペースはスペース 1 個に変換し、語の前や後にあるスペースは取り除くということです。(詳しくは仕様を参照してください) NMTOKEN の場合、XML パーザは AVN を行うことを(仕様上は)義務付けられています。 " 1 " のようなテキストが現れた時、これをアプリケーションで "1" と受け取りたいなら NMTOKEN、アプリケーションで処理するから何もしなくて良いなら CDATA ということでしょうか。 アプリケーションでこういう細々とした処理を書かなくて良いという点では NMTOKEN を推します。もっとも、NMTOKEN の場合は AVN というパーザのオーバーヘッドも発生しますが。 得られた語が数字として正しいかというチェックは必要になるので、空白処理くらい大した手間ではないかもしれません。 もちろん、型が定義できる XMLSchema も推します ![]() |
|
投稿日時: 2003-11-28 17:55
すみません。仕様を一部読み違えていました。
CDATA でも改行→スペースの変換は行われます。 連続スペースの変換と前後の空白の除去は CDATA では行われません。 |
1