だいぶ前に『JavaWorld』連載のコラムとして書いたものです(異例に長いコラムだけど)。ほとんど変更はしてなくて、ほぼ原稿そのままです。
「空白問題を解く」というような体裁になってますが、むしろ、空白問題がwell-posedではない疑似問題ではないか、というのが趣旨です。だから、「解く」というよりは、空白問題を「問題」だと捉えてしまうような視点のほうを矯正しようということです。
最後に書いておいた次のようなことが僕の主張:
何にでも通用するような普遍的な空白処理を期待してはいけない。ありもしない理想の方法を求めても徒労に終わる。空白処理は、テキストストリームへの書き出し/テキストストリームからの読み込みのルールに依存して決まる。つまり、応用領域ごとに個別に考えるしかない。
空白問題のように、一見構文の問題に見えるものでも、構文の議論だけではまったく解決できないことがある。結局、適切な解は構文の使用状況に依存するのである。繰り返し強調するが、XML文書の同値性は応用領域に依存する。空白問題が解けないのは、個々の応用領域を無視して、普遍的/絶対的な処理を求めたからだったのだ。応用領域ごとの空白処理(同値性定義の一部)に基づけば、そこにもはやミステリーはない。