Lỗi phân tích cú pháp /page.xhtml: Đã theo dõi lỗi [line: 42] Thực thể “nbsp” đã được tham chiếu nhưng không được khai báo


88

Tôi muốn sử dụng khoảng trắng không ngắt trong trang JSF của mình. Tôi biết, trong HTML thuần túy, tôi có thể sử dụng  cho việc này và điều này hoạt động tốt. Tuy nhiên, khi tôi đặt những thứ đó  trong một trang Khuôn mặt, thì nó xảy ra lỗi như sau:

Lỗi phân tích cú pháp /page.xhtml: Đã theo dõi lỗi [line: 42] Thực thể "nbsp" đã được tham chiếu, nhưng không được khai báo.

Điều này gây ra như thế nào và làm thế nào tôi có thể giải quyết nó?


hiển thị thêm một số mã ... nơi ngốc bạn đã đặt nó  chính xác?
Daniel

Câu trả lời:


184

Khuôn mặt là một công nghệ xem dựa trên XML. XML chỉ có năm thực thể được xác định trước . Không  có trong số họ. Nó chỉ hoạt động khi được sử dụng trong HTML thuần túy hoặc trong JSP kế thừa (lưu ý: nó không hoạt động trong JSPX vì nó cũng dựa trên XML!).

Để khắc phục điều này, bạn cần phải tự khai báo thực thể trong loại tài liệu của chính tệp XHTML có chứa  thực thể,

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

hoặc tốt hơn, hãy sử dụng ký hiệu thập phân (hexa) thay thế:

&#xA0; or &#160;

Trong một IDE trung bình, việc thực hiện "tìm và thay thế trong tất cả các tệp" và thay thế mỗi lần xuất hiện của &nbsp;bởi là rất nhỏ &#xA0;.


3
Sử dụng ký hiệu thập lục phân hoặc thập phân. :-)
Nabin


10
  1. <![CDATA[&nbsp;]]>sẽ hoạt động tốt. Tuy nhiên, điều này không hoạt động bên trong giá trị thuộc tính.

  2. Ngoài ra, miễn &amp;là một thực thể được xác định trước trong XML, bạn có thể thử &amp;nbsp; - làm việc cho tôi với JSP dựa trên XML. Điều này cũng sẽ hoạt động trong các thuộc tính.


9

Đối với tôi, loại tài liệu sau cho phép &nbsp;:

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

Với điều này, tôi đã có thể làm điều gì đó như <xsl: variable name = "size" select = "substring-before (s: td [3], '& nbsp;')" />
slott

5

thêm vào

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

lên đầu tệp


4
Tại sao điều này nhận được hai âm bản, tôi tự hỏi. Nó có thể hơi quá ngắn gọn nhưng nó là chính xác. Thực thể không được xác định trong loại tài liệu và nó được xác định khi sử dụng thông số được cung cấp. Một năm sau, một người nào đó đăng tải điều tương tự và nhận được hai lượt ủng hộ.
Dilapidus,

Tôi đồng ý với @Dilapidus, hoàn hảo làm việc này cho tôi trong Chrome và JBoss EAP 7 và Facelets Version 2.2
JGlass
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.