Розбір помилки /page.xhtml: Простежена помилка [рядок: 42] На сутність “nbsp” було вказано посилання, але не оголошено


88

Я хотів би використовувати пробіли на моїй сторінці JSF. Я знаю, у звичайному HTML я міг би  для цього використовувати, і це чудово працює. Однак, коли я  поміщаю їх на сторінку Facelets, це помиляється наступним чином:

Розбір помилок /page.xhtml: Простежена помилка [рядок: 42] На сутність "nbsp" було вказано посилання, але не оголошено.

Як це спричинено та як я можу це вирішити?


показати ще якийсь код ... де idi ви  саме це розмістили ?
Даніель

Відповіді:


184

Facelets - це технологія перегляду на основі XML. XML містить лише п'ять заздалегідь визначених сутностей .  Серед них немає . Він працює лише при використанні в звичайному HTML або в застарілому JSP (примітка: він не працює в JSPX, оскільки це також засновано на XML!).

Щоб виправити це, потрібно або оголосити сутність самостійно у типі документа самого XHTML-файлу, що містить  сутність,

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

або, краще, використовуйте (гекса) десятковий запис замість:

&#xA0; or &#160;

У середній IDE має бути тривіально виконувати "пошук і заміну у всіх файлах" і замінювати кожну появу &nbsp;на &#xA0;.


3
Використовуйте шістнадцяткове або десяткове позначення. :-)
Набін,


10
  1. <![CDATA[&nbsp;]]>повинен працювати нормально. Однак це не працює всередині значення атрибута.

  2. Як альтернатива, якщо &amp;це заздалегідь визначена сутність у XML, ви можете спробувати &amp;nbsp; - працювали для мене з JSP на основі XML. Це також має працювати в межах атрибутів.


9

Для мене такий тип доктрини дозволяє &nbsp;:

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

За допомогою цього я зміг зробити щось на зразок <xsl: variable name = "size" select = "substring-before (s: td [3], '& nbsp;')" />
slott

5

додати

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

до початку файлу


4
Чому це отримало два негативи, цікаво. Можливо, це занадто стисло, але це правильно. Сутність не була визначена у типі доктрини, і вона визначається під час використання специфікації, що надається. Через рік хтось публікує точно те саме і отримує два голоси за.
Dilapidus

Я погоджуюсь з @Dilapidus, це для мене прекрасно працювало в Chrome та JBoss EAP 7 та Facelets версії 2.2
JGlass
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.