2012-06-27 54 views
9

Tôi đang xây dựng một trang web nơi tôi phải làm việc với ít hơn masterdata hoàn hảo (tôi đoán tôi không phải là duy nhất :-))Tôi có thể sử dụng các ký hiệu không được mã hóa (&) trong html không?

Trong trường hợp của tôi, tôi phải trả một tập tin xml thành html (sử dụng xsl). Đôi khi các masterdata đang sử dụng html-enitites allready (ví dụ: é trong các từ tiếng Pháp) vì vậy tôi phải sử dụng 'disable-output-escaping =' yes ') ở đó để tránh mã hóa đôi.

Giải pháp dễ nhất là vô hiệu hóa đầu ra thoát tất cả cùng nhau, vì vậy tôi không bao giờ chạy nguy cơ mã hóa kép.

Các ký tự duy nhất bỏ qua mã hóa cho dữ liệu chính này là ký hiệu &. Nhưng khi tôi phân tích chúng 'thô' (để thay & hơn & tất cả các trình duyệt dường như là ok với nó

Vậy câu hỏi:. Các consequenses của cách bằng ký hiệu không được mã hóa trong html là gì

+0

Bạn có một tình huống thực sự khó xử để giải quyết - sự đồng cảm của tôi.Bạn có thể xử lý trước dữ liệu chủ trước khi chuyển đổi XSL không? Bạn có thể thay thế bất kỳ ký hiệu trống nào bằng '&', bằng cách sử dụng một regexp đơn giản, vì vậy hãy chuẩn hóa đầu vào trước khi nó đến XSL. –

+0

@Peter nó có thể những ngày này cho một người hỏi đơn phương tự đóng một câu hỏi như là một bản sao. Tôi đề nghị làm như vậy. –

+0

@Mark Tôi đã nhận được thông báo về nhận xét của bạn, tôi nghĩ rằng trạng thái là ok bây giờ? – Peter

Trả lời

8

Ký hiệu trống AFAIK là bất hợp pháp trong HTML. Với cách đó, hãy xem xét hậu quả:

  • Bạn hiện đang dựa vào khả năng của trình duyệt để phát hiện và khôi phục một cách hiệu quả vấn đề. Lưu ý rằng để thực hiện điều này, trình duyệt phải đoán: là "rõ ràng" và dấu "và" theo sau là dấu cách và © rõ ràng là biểu tượng bản quyền. Nhưng còn đoạn văn bản edit&copy thì sao? Trình duyệt tôi đang sử dụng ngay bây giờ mangles nó.
  • Nếu bạn đang sử dụng XHTML, hoặc nếu nội dung sẽ được chèn vào một tài liệu XML, kết quả sẽ là một lỗi phân tích cú pháp cứng.

Vì khó phát hiện và giải thích các trường hợp này theo cách thủ công hơn thay thế tất cả các ký hiệu không phải là một phần của thực thể (nói với regex).

+1

trình duyệt không phải * đoán * vì có thông số kỹ thuật cho điều đó, ít nhất là trong HTML5 – Razor

7

Nó phụ thuộc?

các nghiên cứu tốt nhất mà tôi đã thấy về chủ đề này có thể được tìm thấy here

trong HTML5 bạn nên thoát khỏi tất cả các ampersands không thuộc trong các danh mục dưới đây:

Một dấu và mơ hồ là a + 0026 nhân vật dấu và U (&) đó là theo sau là một hoặc nhiều ký tự trong phạm vi U + 0030 DIGIT ZERO (0) đến U + 0039 DIGIT CHÍN (9), U 6161 LATIN NHỎ THƯ A đến U + 007A LATIN THƯ NHỎ THƯ Z, và U + 0041 VỐN LATIN THƯ A đến U + 005A LATIN THƯ VỐN Z, theo sau là ký tự U + 003B SEMICOLON (;), trong đó các ký tự này không khớp với bất kỳ tên nào được đặt trong phần tham chiếu ký tự có tên.

+0

Matthias Bynens, tác giả của bài đăng được liên kết, là một nhà phát triển mạnh mẽ và năng động. Bất kỳ câu hỏi thú vị bạn có về các trường hợp cạnh của HTML, ECMAScript và thông số kỹ thuật CSS, có một cơ hội quan trọng Matthias đã viết về nó trong chi tiết pedantic, như ông đã làm ở đây. –

4

Xem Do I really need to encode '&' as '&'?

Để tóm tắt: Có bạn có thể, nhưng nói đúng nó không phải là quy phạm pháp luật (trừ trường hợp trong HTML5, nơi nó là hợp pháp miễn là nó không "trông giống như" một thực thể ký tự).

+0

cảm ơn vì đã chỉ ra url – Peter

Các vấn đề liên quan