Когда отображается "необработанный" символ &, интерпретатор ищет его. допустимых экранированных последовательностей & (таких как '& amp;'
). Когда обнаруживается недопустимая последовательность, возникает ошибка. Вот и все.
Поскольку rss - это формат на основе XML, а в xml амперсанд (&) означает начало объекта xml . Парсер ожидает там чего-то еще.
Вы можете возразить, что он должен быть достаточно умен, чтобы знать, что амперсанд в "Sanford & Sons"
- это просто амперсанд. Но что делать, если вы действительно хотите показать амперсанд с текстом? Является ли "& pc;
какой-то настраиваемой (также недействительной) сущностью, или он должен интерпретировать это также как амперсанд? А как насчет " & amp; "
?
Поскольку RSS - это XML, а XML требует экранирования определенных символов, таких как амперсанд.
Потому что это должно быть экранировано в синтаксисе XML. Причина здесь та же.
Это сильно зависит от клиента RSS, но, скорее всего, он пытается декодировать XML-содержимое (в вашем примере «Sanford & Sons»). Когда это происходит, & указывает на экранированный символ. Если вы не используете & amp;
при декодировании, он попытается использовать следующие несколько символов для завершения escape-последовательности. Велика вероятность того, что он потерпит неудачу.
Символ & является остатком от корней XML в SGML. Там & ...; синтаксис используется, чтобы избежать всякого рода вещей, даже целых документов для встраивания. Поэтому, если вы хотите использовать буквальный "&", вы должны его избежать. Это то же самое, что и использование кавычек внутри строк на любом языке программирования.
Нет смысла позволять XML выполнять какое-либо исправление ошибок типа «Если нет следующей буквы, вывести литерал &», потому что это нарушить синтаксис SGML. XML, как уже говорилось, основан на.
То, что это делается в HTML в большинстве браузеров, потому что они сказали, что пользователям лучше видеть любую вещь, чем SGML ошибка разбора. Но это открывает совершенно новый ящик Pandora, в котором браузер делает какие-то исправления ошибок. Посмотрите на спецификацию HTML5, и вы Я пойму, что на самом деле означает определение обработки ошибок. Это много текста.
Один особый случай: вы можете включить литерал «&» в XML / RSS, если заключите его в так называемую секцию «CDATA». Это будет выглядеть так:
Ура,
Не уверен, поможет ли это, но когда мне нужно было решить эту проблему, я использовал числовую сущность ref для амперсанда, которая & Выполняется через валидатор w3c, так что я думаю, можно использовать это .
Приветствую