2009-06-23 24 views
10

Khi tôi gặp phải một nguồn cấp dữ liệu RSS bị hỏng, lý do thông thường của nó bị thổi thành từng mảnh là vì dòng 23 nói "Sanford & Sons".Tại sao RSS không thể xử lý dấu và?

Điều khó hiểu nhất là việc bạn chuyển đổi & thành &, tất cả đều tốt, mặc dù lựa chọn thay thế của bạn vẫn chứa ký tự sự cố.

Tại sao RSS không thể hiển thị ký tự dấu và (&) theo mặc định?

Trả lời

10

Khi một 'thô' & được nhìn thấy, người phiên dịch đang tìm kiếm một trong những giá trị thoát & chuỗi (như '&'). Khi một chuỗi không hợp lệ được tìm thấy nó ném một lỗi. Thats tất cả để có nó.

+0

Có, nhưng tại sao? :) – Sampson

+6

.. bởi vì đặc tả XML –

+3

Điều này không khác gì so với việc hỏi tại sao bạn không thể sử dụng raw < and > trong văn bản XML – ironfroggy

1

Điều này phụ thuộc rất cao vào ứng dụng khách RSS, nhưng rất có thể nó đang cố gắng giải mã XML nội dung (trong ví dụ "Sanford & Sons") của bạn. Khi điều đó xảy ra, & cho biết ký tự thoát. Nếu bạn không sử dụng &amp; khi giải mã, nó sẽ cố gắng sử dụng vài ký tự tiếp theo để hoàn thành chuỗi thoát. Tỷ lệ cược rất có khả năng là nó sẽ thất bại.

2

Vì RSS là XML và XML yêu cầu các ký tự nhất định được thoát, chẳng hạn như dấu và.

6

Vì rss là định dạng dựa trên XML và trong xml dấu và (&) biểu thị sự bắt đầu của thực thể xml . Các phân tích cú pháp đang mong đợi cái gì khác ở đó.

Bạn có thể cho rằng cần đủ thông minh để biết rằng ký hiệu và trong "Sanford & Sons" chỉ là dấu và. Nhưng khi bạn thực sự muốn hiển thị ký hiệu và văn bản thì sao? Có phải "&pc; một số thực thể (cũng không hợp lệ) tùy chỉnh hay nó nên diễn giải như một dấu và cũng? Điều gì về "&amp;amp;"?

2

& là phần còn lại của gốc XML trong SGML. Có & ...; cú pháp được sử dụng để thoát khỏi tất cả các loại công cụ, thậm chí toàn bộ tài liệu để nhúng. Do đó, nếu bạn muốn sử dụng chữ "&", bạn phải thoát khỏi nó. Nó giống như sử dụng dấu ngoặc kép bên trong các chuỗi trong bất kỳ ngôn ngữ lập trình nào.

Không có sử dụng trong việc cho phép XML thực hiện một số loại sửa lỗi của loại "Nếu không có chữ cái nào sau đây, xuất một chữ cái &", vì điều đó sẽ phá vỡ cú pháp XML của SGML, như đã nói, dựa trên.

Điều đó được thực hiện như vậy trong HTML bởi hầu hết các trình duyệt, bởi vì họ cho biết, tốt hơn là người dùng phải xem bất kỳ điều nào hơn lỗi phân tích cú pháp SGML. Nhưng điều này sẽ mở ra một hộp hoàn toàn mới của Pandora trong đó trình duyệt thực hiện loại sửa lỗi nào. Nhìn vào thông số HTML5 và bạn sẽ thấy ý nghĩa của việc xác định lỗi thực sự. Rất nhiều văn bản.

Một trường hợp đặc biệt: Bạn có thể bao gồm chữ "&" trong XML/RSS, nếu bạn đính kèm nó trong phần "CDATA".Điều đó sẽ trông giống như sau:

< mục> < [CDATA [ Smith & Wesson ]]> </item>

Chúc mừng,

0

Không chắc chắn nếu điều này giúp nhưng khi Tôi cần phải giải quyết vấn đề này Tôi đã sử dụng ref thực thể số cho một ký hiệu và là & Chạy điều này thông qua trình duyệt tính hợp lệ w3c được thông qua vì vậy tôi đoán nó là ok để sử dụng điều này.

Chúc mừng

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