IS & GT; когда-либо необходимый?
Вопрос
Теперь я разрабатываю веб-сайты и интерфейсы XML с 7 лет, и никогда не приходил в ситуацию, где было действительно необходимо использовать >
для >
. Отказ Все необитание может быть до сих пор обрабатывается путем цитирования <
, &
, "
а также '
в одиночестве.
Кто-нибудь когда-либо находился в ситуации (связанной с, например, обработкой SGML, проблемы браузера, XSLT, ...), где вы обнаружили, что это неотъемлемому, чтобы избежать большего, чем подписать >
?
Обновлять: Я только что проверил с XML Spec., где он говорит, например, о характере данных в разделе 2.4:
Данные персонажа
[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
Так что даже там, >
Не упоминается как что-то особенное, за исключением окончательной последовательности секции Cdata.
Этот один случай, где >
имеет любое значение, будет окончание раздела CDATA, ]]>
, но опять же, если вы процитируете его, цитата (т. е., буквальная строка ]]>
) приземлился бы буквально на выходе (так как это CDATA).
Решение
Вам не нужно абсолютно, потому что почти любой интерпретатор XML поймет, что вы имеете в виду. Но все же вы используете специальный персонаж без какой-либо защиты, если вы это сделаете.
XML все о семантике, и это не совсем семантический совместимый.
О тебе Обновить, Вы забыли эту часть:
Правый угловой кронштейн (>) может быть представлен с помощью строки «>», а также для совместимости, для совместимости можно избежать использования либо «
>
«или ссылка на символ, когда оно появляется в строке»]]>
«В контент, когда эта строка не отмечает конец раздела CDATA.
Дело использование, приведенное в документации, - это больше о чем-то вроде этого:
<xmlmarkup>
]]>
</xmlmarkup>
Здесь ]]>
Часть может быть проблемой со старыми парсерами SGML, так что это должен быть сбеженным в = ]]>
для соображений совместимости.
Другие советы
я использовал один не 19 часов назад, чтобы пройти строгий валидатор XML. Другим случаем является, когда вы используете их на самом деле в тексте содержимого содержимого HTML / XML (а не атрибуты), как это: <
.
Конечно, анализатор LAX примет больше всего, что вы бросаете на него, но если вы когда-нибудь беспокоитесь о XSS, <это твой друг.
Обновление: вот пример, где вам нужно сбежать >
В Firefox:
<?xml version="1.0" encoding="utf-8" ?>
<test>
]]>
</test>
Предоставлено, он все еще не пример, чтобы избежать одиночества >
.
Не так много как автор (x) HTML-документов, но более чем пользователь небрежных письменных комментариев полей на веб-сайтах, что «предложить» вам вставить HTML.
Я имею в виду, если вы сделаете свой сайт правильным способом, вы бы все равно не устроили ваш контент, верно? Так что ваш звонок htmlentities
или что-то (давно не видно, PHP) позаботится о замене для вас специальных символов. Так что уверен, вы бы не вручную ввести >
Но я надеюсь, что вы принимаете меры так >
автоматически заменяется.
Я просто подумал о другом примере, где вам нужно цитировать >
в HTML5 (не XHTML5) Документы: если вам это нужно в атрибутах без кавычек (что это что-то, что можно спорить, конечно).
<img src=arrow.png alt=>>
должен быть эквивалентен XHTML
<img src="arrow.png" alt=">" />
Но затем снова, (?
Представьте, что у вас есть следующий текст this is a not a ]]> nice day
И вы решили окружить его секциями CDATA <![CDATA[this is a not a ]]> nice day]]>
.
Чтобы избежать этого (и для разрешения разборы фрагментов SGML с неtermined отмеченными разделами), пункт 10.4 ISO 8879: 1986 заявляет, что возникновение ]]>
За пределами отмеченного раздела - ошибка.
Кроме того, во времена SGML отмеченные разделы были очень популярны, поскольку они не только использовались для CDATA (как в XML), но также для RCDATA (только листанки и ссылки на символы разрешены) и игнорируют и включают (что позволило распознать разметку внутри них).
Например, в SGML можно написать:
<!ENTITY %WHATTODO "INCLUDE">
<![%WHATTODO;[<b>]]></b>]]>
Который эквивалентно:
<b>]]></b>