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