экранирование амперсандов в XML

Я понимаю, что в XML необходимо экранировать определенные символы, и амперсанд является одним из таких символов.

В соответствии с этим необходимо экранировать только 5 символов: Какие символы нужно экранировать в XML-документах?

Мой вопрос: если у вас есть амперсанд, и за ним НЕ следует один из них, означает ли это, что XML недействителен?

Причина, по которой я спрашиваю, заключается в том, что я использую веб-службу, которая возвращает это:

<blah>&#4;</blah>

Я пытаюсь решить, является ли он действительным или недействительным XML. Если он недействителен, я попрошу их исправить. Если он действителен, то мой php-код обрабатывает его неправильно, и мне нужно это исправить.

Согласно проверке w3schools (http://www.w3schools.com/xml/xml_validator.asp), оно недействительно, но я просто хотел убедиться.


person NL3294    schedule 06.07.2016    source источник


Ответы (1)


Амперсанд также может быть частью цифровой ссылки на символ, но этот конкретный символ (&#4;) не разрешен в XML:

Диапазон символов

[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

Небольшое примечание: вы имеете в виду правильный формат, а не действительный. См. Правильно сформированный и действительный XML.

person kjhughes    schedule 06.07.2016
comment
Идеальный ответ. Спасибо. - person NL3294; 06.07.2016