xml lang




Какие символы мне нужно скрывать в документах XML? (6)

Возможно, это поможет:

Список ссылок на объекты XML и HTML :

В документах SGML, HTML и XML логические конструкции, известные как символьные данные и значения атрибутов, состоят из последовательностей символов, в которых каждый символ может проявляться непосредственно (представляющий себя) или может быть представлен рядом символов, называемых символьной ссылкой, из которых два типа: цифровая ссылка на символ и ссылка на символ. В этой статье перечислены ссылки на объекты символов, которые действительны в документах HTML и XML.

В этой статье перечислены следующие пять предопределенных XML-объектов:

quot  "
amp   &
apos  '
lt    <
gt    >

Какие символы должны быть экранированы в XML-документах или где я могу найти такой список?


Если вы используете соответствующий класс или библиотеку, они будут выполнять эвакуацию для вас. Многие проблемы XML вызваны конкатенацией строк.

Элементы escape-кода XML

Их всего пять:

"   &quot;
'   &apos;
<   &lt;
>   &gt;
&   &amp;

Экранирующие символы зависят от того, где используется специальный символ.

Примеры могут быть подтверждены службой валидации разметки W3C .

Текст

Безопасный способ состоит в том, чтобы избежать всех пяти символов в тексте, однако три символа " , ' и « > не должны быть экранированы в тексте:

<?xml version="1.0"?>
<valid>"'></valid>

Атрибуты

Безопасный способ состоит в том, чтобы избежать всех пяти символов в атрибутах, однако символ > не должен быть экранирован в атрибутах:

<?xml version="1.0"?>
<valid attribute=">"/>

«Символу не нужно избегать атрибутов, если кавычки: " :

<?xml version="1.0"?>
<valid attribute="'"/>

Аналогичным образом, " не нужно избегать атрибутов, если кавычки:»

<?xml version="1.0"?>
<valid attribute='"'/>

Комментарии

Все 5 специальных символов не должны удаляться в комментариях:

<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>

CDATA

Все 5 специальных символов не должны быть экранированы в разделах CDATA :

<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>

Инструкции по обработке

Все 5 специальных символов не должны выполняться в инструкциях по обработке XML:

<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>

XML против HTML

HTML имеет собственный набор кодов эвакуации, которые покрывают намного больше символов.


Сокращен от: http://en.wikipedia.org/wiki/XML#Escaping

Существует пять предопределенных объектов:

&lt; represents "<"
&gt; represents ">"
&amp; represents "&"
&apos; represents '
&quot; represents "

Msgstr "Все разрешенные символы Юникода могут быть представлены с помощью числовой символьной ссылки". Например:

&#20013;

Большинство управляющих символов и других диапазонов юникода специально исключены, что означает (я думаю), что они не могут произойти ни с экранированием, ни с прямой:

http://en.wikipedia.org/wiki/Valid_characters_in_XML


Только <и & должны быть экранированы, если они должны обрабатываться символьными данными, а не разметкой:

http://www.w3.org/TR/xml11/#syntax


Это зависит от контекста. Для содержимого это <и &, и]]> (хотя строка из 3 вместо одного символа). Для значений атрибутов это <и & и "и". Для CDATA это]]>.


в дополнение к общеизвестным пяти символам [<,>, &, ", '] я также мог бы избежать символа вертикальной вкладки (0x0B). Он действителен UTF-8, но не действителен XML 1.0 и даже многие библиотеки (включая libxml2) пропустить его и тихо выводить неверный XML.





character