Почему RSS не может обработать амперсанд?

examCancelButton.tintColor = nil;

10
задан Makoto 18 October 2013 в 04:49
поделиться

7 ответов

Когда отображается "необработанный" символ &, интерпретатор ищет его. допустимых экранированных последовательностей & (таких как '& amp;' ). Когда обнаруживается недопустимая последовательность, возникает ошибка. Вот и все.

11
ответ дан 3 December 2019 в 15:36
поделиться

Поскольку rss - это формат на основе XML, а в xml амперсанд (&) означает начало объекта xml . Парсер ожидает там чего-то еще.

Вы можете возразить, что он должен быть достаточно умен, чтобы знать, что амперсанд в "Sanford & Sons" - это просто амперсанд. Но что делать, если вы действительно хотите показать амперсанд с текстом? Является ли "& pc; какой-то настраиваемой (также недействительной) сущностью, или он должен интерпретировать это также как амперсанд? А как насчет " & amp; "?

6
ответ дан 3 December 2019 в 15:36
поделиться

Поскольку RSS - это XML, а XML требует экранирования определенных символов, таких как амперсанд.

2
ответ дан 3 December 2019 в 15:36
поделиться

Потому что это должно быть экранировано в синтаксисе XML. Причина здесь та же.

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

5
ответ дан 3 December 2019 в 15:36
поделиться

Это сильно зависит от клиента RSS, но, скорее всего, он пытается декодировать XML-содержимое (в вашем примере «Sanford & Sons»). Когда это происходит, & указывает на экранированный символ. Если вы не используете & amp; при декодировании, он попытается использовать следующие несколько символов для завершения escape-последовательности. Велика вероятность того, что он потерпит неудачу.

1
ответ дан 3 December 2019 в 15:36
поделиться

Символ & является остатком от корней XML в SGML. Там & ...; синтаксис используется, чтобы избежать всякого рода вещей, даже целых документов для встраивания. Поэтому, если вы хотите использовать буквальный "&", вы должны его избежать. Это то же самое, что и использование кавычек внутри строк на любом языке программирования.

Нет смысла позволять XML выполнять какое-либо исправление ошибок типа «Если нет следующей буквы, вывести литерал &», потому что это нарушить синтаксис SGML. XML, как уже говорилось, основан на.

То, что это делается в HTML в большинстве браузеров, потому что они сказали, что пользователям лучше видеть любую вещь, чем SGML ошибка разбора. Но это открывает совершенно новый ящик Pandora, в котором браузер делает какие-то исправления ошибок. Посмотрите на спецификацию HTML5, и вы Я пойму, что на самом деле означает определение обработки ошибок. Это много текста.

Один особый случай: вы можете включить литерал «&» в XML / RSS, если заключите его в так называемую секцию «CDATA». Это будет выглядеть так:

Ура,

3
ответ дан 3 December 2019 в 15:36
поделиться

Не уверен, поможет ли это, но когда мне нужно было решить эту проблему, я использовал числовую сущность ref для амперсанда, которая & Выполняется через валидатор w3c, так что я думаю, можно использовать это .

Приветствую

0
ответ дан 3 December 2019 в 15:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: