ものがたり(旧)

atsushieno.hatenablog.com に続く

nbsp

TBをいただいてNDocの何が問題なのかは分かりました。ありがとうございます>Kazzzさん。で、id:Kazzz:20060214:p3 より

  • " "を" "に変換する
    × XSLTでは" "のような実体参照を認識しない。
  • <xsl:text disable-output-escaping="yes"> </xsl:text>を使う
    × "&nbsp;"がそのまま使えないのであれば、XSLのdisable-output-escaping要素を使えば通ると思ったのだが、効果無し。
  • <xsl:output method="html"〜>を使う
    × method="html"に対応しているプロセサであれば"&#160;"は化けないということを仕入れてきたのだが、これも効果無し

と、XSLTで"&nbsp;"を扱う常識が全く効かないのである。 文字列のレベルで置換をしているコードに改めて納得したのだが、本当にこの方法しか無いのだろうか。

これはどちらかというとXmlWriterサイドの問題なので、XSLTサイドで解決しようというこれらのアプローチは、実はどれも成功しないのです。NDocハカーには、カスタムXmlWriterを使って\u00A0をなまの文字ではなく&#160;に書き換えちゃえば良いんじゃないか、ということを提案してみましたが、これはバッドノウハウの類で、あんまし美しい解決策ではありません。UTF-8を使うなり、&#160;を回避するなりするのが適切でしょう。