初稿: 2005-08-17
意外なことにあまり知られていないのが、XML にバージョン 1.1 が存在するということです。XML では文書の冒頭で XML 宣言をし、ここにバージョンを記述しますがおそらくほとんどの文書が「version="1.0"」となっていると思います。また XML の入門書などには「version="1.0"」は決まり文句として説明されているものも見かけます。しかし実際には XML にはバージョン 1.1 が存在しています。
では実際に XML 1.0 と 1.1 では何が違うのでしょうか。バージョン番号が 0.1 だけ進んでいることからも分かるとおり、各マークアップの文法や機能面ではこれらに大きな違いはなく、ほぼ同じものだといえます。では何が違うかというと、それらの大きな違いはマークアップに使える文字が違うことにあります。XML はご存知のとおり 文字コードに Unicode を採用しています。これは国際的な規格として非常に有効な選択です。XML 1.0 が策定された当時、Unicode はバージョン 2.0 でした。そこで XML 1.0 ではその Unicode 2.0 を基準にして、マークアップに使用できる文字を定義しました。しかしその後、Unicode のバージョンは上がっていき、使用できる文字が拡張されていくことにより、Unicode では使用できる文字が XML では使用できないという問題が発生するようになりました。そこで XML 1.1 ではその文字の使用制限を緩和して、マークアップに使用できない文字を定義するように変更しました。これは何を意味するかというと、今後 Unicode が拡張されていっても、XML 側では変更することなく、その拡張に対応できるということです。ただここで一つ問題が起こります。それは XML 1.1 の文書が、XML 1.0 で使用できる文字以外を使用している場合、XML 1.0 では違反となってしまうことです。つまり、XML 1.0 と 1.1 で互換性がないということです。このため、XML パーサーに XML 1.1 を実装する場合には、同時に XML 1.0 も実装するように推奨されています。
XML 1.0 より 1.1 の方が新しいのだからそちらを使用すればよいと単純に考えることもできますが、実際には 1.1 はあまり使用されていません。理由は前節でも述べたとおり、XML 1.0 と 1.1 に互換性がないためです。広く普及してしまった XML 1.0 に対し、互換性のない 1.1 を無防備に導入することは混乱を招きかねません。そこで 文書に XML 1.1 独自の機能を使用する必要がない限り、XML 1.0 で記述することが推奨されています。既に XML 1.0 の時点で不自由なく使用できた日本語では、XML 1.1 を使用する必要はまずありません。私たちが XML 1.1 の文書をあまり見かけないのはここに理由があります。