2009-06-23 9 views
10

내가 부서진 RSS 피드를 발견하면, 23 번 라인에 "Sanford & Sons"이 나와 있기 때문에 모든 것이 날아간 일반적인 이유가 있습니다.왜 RSS가 앰퍼샌드를 처리 할 수 ​​없습니까?

&&으로 변환하면 문제가있는 문자가 포함되어 있어도 가장 좋은 점은 사실입니다.

왜 RSS는 앰퍼샌드 (&) 문자를 렌더링 할 때 기본적으로 실패합니까?

답변

10

(예 : '&' 등) & 시퀀스를 탈출했다. 잘못된 시퀀스가 ​​발견되면 오류가 발생합니다. 그게 전부입니다.

+0

네, 그 이유는 무엇입니까? :) – Sampson

+6

.. XML 사양 –

+3

때문에 XML 텍스트에 < and >이라는 원시 문자를 사용할 수없는 이유는 무엇입니까? – ironfroggy

5

XML 구문에서 이스케이프해야하므로 같은 이유가 여기에 있습니다. &는 '원시'를 볼 때, 인터프리터가 유효한 중 하나를 찾고 있습니다

http://myst-technology.com/public/item/11878

1

이것은 RSS 클라이언트에 크게 의존하지만 컨텐츠 (예 : "Sanford & 아들")에서 XML 디코딩을 시도 할 가능성이 큽니다. 이 경우 &은 이스케이프 된 문자를 나타냅니다. 디코드 할 때 &amp;을 사용하지 않으면 다음 몇 문자를 사용하여 이스케이프 시퀀스를 완료하려고 시도합니다. 확률은 실패 할 확률이 높습니다.

2

RSS는 XML이므로 XML은 앰퍼샌드와 같이 특정 문자가 이스케이프되도록 요구합니다.

6

rss는 XML 기반 형식이며 XML에서 앰퍼샌드 (&)는 xxx 엔터티의 시작을 나타냅니다. 파서가 다른 곳에서 뭔가를 기대하고 있습니다.

"Sanford & Sons"의 앰퍼샌드가 단지 앰퍼샌드라는 것을 알면 충분히 똑똑해야한다고 주장 할 수 있습니다. 그러나 실제로 텍스트로 앰퍼샌드를 표시하고 싶다면 어떨까요? "&pc;은 일부 사용자 정의 (유효하지 않은) 엔티티입니까, 아니면이를 앰퍼샌드로 해석해야합니까? "&amp;amp;"은 어떨까요?

2

&은 SGML에서 XML의 근본적인 나머지 부분입니다. 거기에 & ...; 구문은 모든 종류의 항목, 심지어 포함 할 전체 문서를 이스케이프하는 데 사용됩니다. 따라서 리터럴 "&"을 사용하려면 이스케이프해야합니다. 모든 프로그래밍 언어에서 문자열 내에서 따옴표를 사용하는 것과 같습니다.

XML에 SGML 구문 XML을 깨뜨릴 수 있기 때문에 "다음 문자가없는 경우 문자가 출력되지 않습니다. &"과 같은 종류의 오류 수정을 수행하는 용도는 없습니다.

대부분의 브라우저에서 HTML 형식으로 처리한다는 것은 사용자가 을보고 더 좋은 것은 SGML 구문 분석 오류보다입니다. 그러나 이것은 브라우저가 어떤 종류의 오류 수정을하는지 완전히 새로운 판도라 상자를 엽니 다. HTML5 스펙을 보면 오류 처리를 실제로 정의하는 것이 무엇을 의미하는지 알 수 있습니다. 그것은 많은 텍스트입니다.

하나의 특수한 경우 : 은 XML/RSS에 "&"이라는 리터럴이 포함되어 있습니다 (소위 "CDATA"섹션에 묶음).! 즉, 다음과 같이합니다 :

< 항목> < [CDATA [ 스미스 & 웨슨 ]]> </항목>

건배,

0

이 도움이되는지 확실하지하지만 때 나는이 문제를 해결할 필요가 있었다. 숫자 엔티티 ref를 앰퍼샌드에 사용했다. & w3c validator를 통해 이것을 실행하면 이것을 사용하는 것이 좋을 것 같다.

환호

관련 문제