web-dev-qa-db-ja.com

/page.xhtmlの解析エラー:トレースエラー[line:42]エンティティ「nbsp」が参照されましたが、宣言されていません

JSFページで改行しないスペースを使用したいと思います。プレーンHTMLでは これとこれはうまく機能します。しかし、それらを置くと_  Faceletsページで、次のようにエラーが発生します。

/page.xhtmlの解析エラー:エラートレース[line:42]エンティティ「nbsp」が参照されましたが、宣言されていません。

これはどのように引き起こされ、どうすれば解決できますか?

79
Fahim Parkar

Faceletsは、XMLベースのビューテクノロジーです。 XMLには 事前定義された5つのエンティティ のみがあります。  はその中にはありません。これは、プレーンHTMLまたはレガシーJSPで使用された場合にのみ機能します(注:JSPXでも機能しません。これはXMLベースでもあるためです!)。

これを修正するには、 エンティティを含むXHTMLファイルのdoctypeでエンティティを自分で宣言する必要があります。

<!DOCTYPE html [
    <!ENTITY nbsp "&#160;"> 
]>

または、代わりに(hexa)decimal notationを使用してください:

&#xA0; or &#160;

平均IDEでは、「すべてのファイルの検索と置換」を実行し、すべての&nbsp;&#xA0;で置換するのは簡単です。

170
BalusC

&amp;#160;を使用してみてください。エンティティの詳細については、次のURLを参照してください HTML ISO-8859-1リファレンス

11
Sanjeevi.V
  1. <![CDATA[&nbsp;]]>は正常に動作するはずです。ただし、このしない属性値内で動作します。

  2. または、&amp;はXMLの定義済みエンティティです。&amp;nbsp;-私はXMLベースのJSPで働いていました。これは属性内でも機能するはずです。

10

私にとって、次のDoctypeは&nbsp;を有効にします:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
9

追加

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

ファイルの先頭へ