xfy technology についての備忘録です。
xfy Personal Client の XHTML コンポーネントの不思議な挙動について、さらに調べてみました。どうやら XHTML コンポーネントは、文書が編集されたタイミングで、文書中の空白類文字を別の文字に置き換えてしまうようです。
まず、下記の仮説の下、 XHTML 文書のレンダリング結果が変わるかどうかを調べてみました。
XHTML コンポーネントの HTML レンダラは、 CSS の white-space プロパティ (デフォルト値: normal) を正しく解釈できていないのでは ?
それを回避するために、 XHTML 文書を読み込んだタイミングで何らかのレンダリング修正処理を加えているのでは ?
サンプル文書 (先のエントリーで挙げた XHTML 文書) を xfy Personal Client で読み込み、
編集し (= 一つにまとめられていた空白類文字が復元される)、
上書き保存した上で、
再読み込みする。
これで XHTML 文書が正しく表示されれば、文書の読み込み時に何らかのレンダリング修正処理を加えていると見なせます。
XHTML 文書は正しく表示されない (= 復元された空白類文字はそのまま)。
上書き保存した XHTML 文書中を <oXygen/> (XML エディタ) で確認したところ、文書中の空白類文字が「no-break space (  で参照される文字)」と「空白 (  で参照される文字)」とのペアに置き換えられていた。
というわけで、 XHTML 文書を読み込んだタイミングで何らかのレンダリング修正処理を加えているわけではなく、文書の編集後に文書中の空白類文字を別の文字に置き換えているようです。
次に、どのタイミングで XHTML 文書中の空白類文字が別の文字に置き換えられているのかを調べてみました。
XHTML コンポーネントの挙動からして、 (文書が保存されたタイミングではなく、) 文書が編集されたタイミングで、文書中の空白類文字が別の文字に置き換えられているのでは ?
サンプル文書を xfy Personal Client で読み込み、
ソースをクリップボードにコピーし、
その内容を <oXygen/> で確認する (これをサンプル文書 (対照区) とする)。
さらに、サンプル文書を編集し (= 一つにまとめられていた空白類文字が復元される)、
ソースをクリップボードにコピーし、
その内容を <oXygen/> で確認する (これをサンプル文書 (実験区) とする)。
というわけで、 XHTML 文書が編集されたタイミングで、文書中の空白類文字が別の文字に置き換えられていることがわかりました。
XHTML コンポーネントでは、文書が編集されたタイミングで、文書中の空白類文字が別の文字に置き換えられてしまう。
「空白が連続する」のと「no-break space と空白とのペアが連続する」のとでは、文書の意味が異なる (後者は明らかに見た目を重視している)。見た目に重きを置くのであれば、 pre 要素としてマークアップすべきであり、文字の置き換えで対処すべきではない。
が、ボキャブラリコンポーネントとして実装されている以上、この現象は回避できない ?