Які символи повинні бути залишені в документах 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>