Я сейчас разрабатываю веб-сайты и интерфейсы XML уже 7 лет и никогда не сталкивался с ситуацией, когда было действительно необходимо использовать & gt;
для a >
.
Так что даже там, >
не упоминается как нечто особенное, кроме как из конечной последовательности раздела CDATA.
Это единственный случай, когда >
имеет какое-либо значение, будет концом раздела CDATA, ]]>
, но, опять же, если вы кавычки, то цитата (т. е. литеральная строка ]] & gt;
) буквально попадет на выход (так как это CDATA ).
В этом нет необходимости, потому что почти любой интерпретатор XML поймет, что вы имеете в виду. Но все же вы используете специальный символ без какой-либо защиты, если вы это сделаете.
XML - это семантика, и она не совсем совместима с семантикой.
Что касается вашего обновления , вы забыли эту часть:
Правая угловая скобка (>) может быть представлена с помощью строки «>», и для совместимости должна быть экранирована с помощью либо «
>
"или ссылка на символ, когда она появляется в строке"]]>
"в содержимом, когда эта строка не отмечает конец раздела CDATA.
Вариант использования, приведенный в документации, больше похож на этот:
<xmlmarkup>
]]>
</xmlmarkup>
Здесь часть ]]>
могла быть проблемой со старыми синтаксическими анализаторами SGML, поэтому она должна быть экранировано в = ]]>
по соображениям совместимости.
Я использовал один не 19 часов назад, чтобы пройти строгий валидатор xml. Другой случай — когда вы используете их на самом деле в тексте содержимого html/xml (а не в атрибутах), например: <
.
Конечно, нестрогий синтаксический анализатор примет почти все, что вы ему бросите, но если вас когда-нибудь беспокоит XSS, < — ваш друг.
Обновление: Вот пример, когда вам нужно экранировать >
в Firefox:
<?xml version="1.0" encoding="utf-8" ?>
<test>
]]>
</test>
Конечно, это все еще не пример того, как нужно экранировать одинокое >
.
Не столько как автор (x)html документов, сколько как пользователь неаккуратно написанных полей комментариев на сайтах, которые "предлагают" вам вставить html.
Я имею в виду, что если вы сделаете свой сайт правильно, вы все равно не будете жестко кодировать свой контент, верно? Таким образом, ваш вызов htmlentities
или что-то еще (давно не виделись, php) позаботится о замене специальных символов для вас.
Конечно, вы бы не стали набирать вручную >
, но я надеюсь, что вы примете меры, чтобы >
автоматически заменялись.