2012年8月10日金曜日

[Blogger] nbsp

Blogger のテンプレートをカスタマイズしていて気が付いたのだが、 「&nbsp」(ノーブレークスペース)が使えない。 使うと、

テンプレートの形式が適切でないため、解析できませんでした。 すべての XML 要素が適切に閉じられているかどうかを確認してください。 <br/>XML エラー メッセージ: The entity "sbnp" was referenced, but not declared.
Error 500

というエラーになる。
空白を複数続けても表示時には1つ分にしかならないので、 スペースを空けたいときにはノーブレークスペースを使うのだが、これが使えないと、全角空白を使うしかなくなってしまう。
外人さんとか困らないのだろうか?


他は大丈夫だろうか?

さすがに、「 &lt ( < )」、「 &gt ( > )」 は大丈夫。
「&amp;(&:アンパーサンド)」、「&quot;(")」 もOK。
「&copy;(© コピーライト)」がNG。自分はあまり使わないけど、使う人は使うと思う。

「&copy;」 はエラーになったが、「&#169;」 や 「&#xA9;」 と書けば © が表示される。
同様に 「&nbsp;」 も「 &#160; 」「&#xA0;」と書けば期待通りに動作する。



出力される HTML ソースを見て気が付いたのだが、これらの文字参照はそのまま HTML に出力されるのではなく、 テンプレートエンジンが評価してしまっているようだ。「&#xA0;」とテンプレートに記載しておいても「 &#160; 」と10進表記で出力されている。

「 &lt; 」もエラーにはならなかったので気が付かなかったが、HTML 上はベタに「<」 になってしまっている。
なので、「HOGE&lt;BR&gt;HOHE」と記載すると「<BR>」になって改行されてしまう。
「<BR>」 と画面上に表示したかったら「&amp;lt;BR&amp;gt;」 としないといけない。

テンプレートをカスタマイズするときには気を付けよう。



蛇足だが、テンプレート上に Table 要素を作った際に、tdoby を使ったらエラーになった。TBODY と大文字にすればOK。
THEAD は thead でも問題ない。意味が分からない。
文字参照だけでなく、HTML 要素にも想定外の動きをするものがありそうだ。要注意。



0 件のコメント:

コメントを投稿