Які символи повинні бути залишені в документах XML або де я можу знайти такий список?
Які символи повинні бути залишені в документах XML або де я можу знайти такий список?
Відповіді:
Якщо ви використовуєте відповідний клас або бібліотеку, вони зроблять вам втечу. Багато проблем з XML викликаються конкатенацією рядків.
Усього п'ять:
" "
' '
< <
> >
& &
Утеча символів залежить від того, де використовується спеціальний символ.
Приклади можна перевірити в службі перевірки розмітки 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='"'/>
Усі п'ять спеціальних персонажів не можна уникати в коментарях:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Не можна уникати всіх п'яти спеціальних символів у розділах CDATA :
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
У всіх інструкціях з обробки XML не можна уникати всіх п'яти спеціальних символів :
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML має власний набір кодів втечі, які охоплюють набагато більше символів.
"
зміну, будуть змінені на&quot;
Можливо, це допоможе:
Список посилань на сутність символів XML та HTML :
У документах SGML, HTML та XML логічні конструкти, відомі як символьні дані та значення атрибутів, складаються з послідовностей символів, у яких кожен символ може проявлятися безпосередньо (представляючи себе), або може бути представлений рядом символів, що називається посиланням на символи, яких існує два типи: числова посилання символів та посилання на сутність символу. У цій статті перераховані посилання суб'єктів символів, які дійсні в документах HTML та XML.
У цій статті перелічено наступні п'ять попередньо визначених об'єктів XML:
quot "
amp &
apos '
lt <
gt >
Відповідно до специфікацій Всесвітнього веб-консорціуму (w3C), існує 5 символів, які не повинні відображатися в їх буквальній формі в XML-документі , за винятком випадків, коли вони використовуються як обмежувачі розмітки або в межах коментаря, інструкції з обробки або розділу CDATA . У всіх інших випадках ці символи повинні бути замінені або за допомогою відповідної сутності, або числової посилання відповідно до наступної таблиці:
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
Зауважте, що згадані об'єкти можуть використовуватися також у HTML, за винятком & apos; , що було введено з XHTML 1.0 і не задекларовано в HTML 4. З цієї причини та для забезпечення ретро-сумісності специфікація XHTML рекомендує використовувати & # 39; замість цього.
>
слід уникати, якщо це випливає з ]]
вмісту, за винятком випадків, коли він має бути частиною ]]>
роздільника, що вказує на кінець розділу CDATA.
Екрани символів відрізняються для тегів та атрибутів.
Для тегів:
< <
> > (only for compatibility, read below)
& &
Для атрибутів:
" "
' '
З даних символів та розмітки :
Символ амперсанда (&) та лівий кутовий дужок (<) не повинні відображатись у прямому вигляді, за винятком випадків, коли вони використовуються як обмежувачі розмітки, або в коментарі, інструкції з обробки чи розділі CDATA. Якщо вони потрібні в іншому місці, їх слід уникнути, використовуючи або числові посилання символів, або рядки "& amp;" та "& lt;" відповідно. Правий кутовий кронштейн (>) може бути представлений за допомогою рядка "& gt;", і для сумісності його слід уникати, використовуючи або "& gt;", або посилання символів, коли воно відображається у рядку "]]>" коли цей рядок не позначає кінця розділу CDATA.
Щоб дозволити значенням атрибутів містити як одиничні, так і подвійні лапки, символ апострофа або одноцитата (') може бути представлений як "& a", а символ подвійного цитування (") як" & quot; ".
Нова спрощена відповідь на старе поширене запитання ...
Завжди (важливо пам'ятати на 90%)
Значення атрибутів (важливо пам'ятати 9%)
attr="
'
Одиночні котирування '
в порядку подвійних лапок."
attr='
"
Подвійні котирування "
в порядку однієї лапки.'
"
як "
і '
як '
інакше.Коментарі , CDATA та інструкції з обробки (важливо пам'ятати 0,9%)
<!--
У коментарях -->
нічого не потрібно уникати, але жодних --
рядків не допускається.<![CDATA[
У CDATA ]]>
нічого не потрібно уникати, але ні]]>
рядки не допускаються.<?PITarget
У межах ПІ ?>
нічого не потрібно уникати, але жодні ?>
рядки не допускаються.Езотерика (важливо пам'ятати 0,1%)
]]>
як ]]>
тільки ]]>
не закінчується розділом CDATA. ]]>
потрібно уникати ]]>
, навіть якщо він не знаходиться в розділі CDATA. Найпростішим способом досягнення цього може бути завжди втекти >
як >
.
]]>
але вирішив перенести її на езотерику, а не пропонувати >
завжди уникати (чого, як ви знаєте, не потрібно). Моя мета тут зробити правила виходу з XML легко запам'ятовувати і на 100% точні .
AttValue
цитується у моїй відповіді за посиланням на 2. Значення атрибутів .
Скорочений: XML, Escaping
Існує п'ять заздалегідь визначених утворень:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
"Усі дозволені символи Unicode можуть бути представлені числовою посиланням символів." Наприклад:
中
Більшість контрольних символів та інших діапазонів Unicode спеціально виключаються, тобто (я думаю) вони не можуть відбуватися ні втеченими, ні прямими:
Це залежить від контексту. Щодо змісту, це < і & , і ]]> (хоча рядок із трьох замість одного символу).
Для значень атрибутів це < , & , " і ' .
Для CDATA це ]]> .
Тільки <
і &
повинні бути екрановані , якщо вони повинні бути оброблені символьні дані , а не розмітка:
<company>AT&T</company>