Is > когда-либо необходимо?

Теперь я разрабатываю веб-сайты и интерфейсы XML с 7 лет и никогда не приходил в ситуацию, когда было действительно необходимо использовать &gt; для >. До сих пор можно было бы устранить все несоответствия, указав только <, &, " и '.

Кто-нибудь когда-либо находился в ситуации (связанной с, например, обработкой SGML, проблемами браузера, XSLT,...), где вы обнаружили невозможность избежать знака большего размера с помощью &gt;?

Обновление: Я только что проверил с спецификацией XML, где говорится, например, о символьных данных в раздел 2.4:

Данные символа

[14]      CharData       ::=      [^<&]* - ([^<&]* ']]>' [^<&]*)

Итак, даже там > не упоминается как нечто особенное, кроме как из конечной последовательности раздела CDATA.

Этот единственный случай, когда > имеет какое-либо значение, был бы окончанием раздела CDATA, ]]>, но опять же, если бы вы его процитировали, цитата (т.е. буквальная строка ]]&gt;) будет попадать буквально на выходе (поскольку это CDATA).

Ответы

Ответ 1

Вам не нужно абсолютно, потому что почти любой интерпретатор XML поймет, что вы имеете в виду. Но все же вы используете специальный символ без какой-либо защиты, если вы это сделаете.

XML - это все о семантике, и это не является действительно семантическим.

О вашем обновлении, вы забыли эту часть:

Прямая угловая скобка ( > ) может быть представлена ​​с использованием строки " > " и должна быть совместима с экранированным "&gt;" или символьной ссылкой, когда она появляется в строке "]]>" в содержании, когда эта строка не помещает конец раздела CDATA.

Пример использования, приведенный в документации, более подробно описывает следующее:

<xmlmarkup>
]]>
</xmlmarkup>

Здесь часть ]]> может быть проблемой со старыми синтаксическими анализаторами SGML, поэтому она должна скрываться в = ]]&gt; по соображениям совместимости.

Ответ 2

Не так много, как автор (x) html-документов, но больше как пользователь неаккуратных письменных комментариев на сайтах, которые "предлагают" вам вставить html.

Я имею в виду, что если вы правильно разместите свой сайт, вы все равно не будете жестко кодировать свой контент, верно? Поэтому ваш вызов htmlentities или что-то еще (долгое время нет, php) позаботится о замене специальных символов для вас. Поэтому вы не будете вручную вводить &gt;, но я надеюсь, что вы предпримете меры, поэтому > будет автоматически заменена.

Ответ 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=&gt;>

должен быть эквивалентен 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>]]&gt;</b>]]>

Что эквивалентно:

 <b>]]&gt;</b>