Всегда ли это необходимо? - PullRequest
14 голосов
/ 25 августа 2010

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

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

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

Символьные данные

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

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

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

Ответы [ 5 ]

7 голосов
/ 25 августа 2010

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

XML - это все о семантике, и это не совсем семантическая совместимость., вы забыли эту часть:

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

Вариант использования, приведенный в документации, более похож на этот:

<xmlmarkup>
]]>
</xmlmarkup>

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

3 голосов
/ 25 августа 2010

Я использовал один, а не 19 часов назад, чтобы пройти строгий валидатор xml. Другой случай, когда вы используете их на самом деле в текстовом содержимом html / xml (а не в атрибутах), например: <.

Конечно, слабый синтаксический анализатор примет большинство всего, что вы на него бросите, но если вы когда-нибудь беспокоитесь о XSS, & lt; твой друг.

Обновление: вот пример, где вам нужно бежать > в Firefox:

<?xml version="1.0" encoding="utf-8" ?>
<test>
    ]]>
</test>

Конечно, это еще не пример того, что нужно бежать от одиночества >.

3 голосов
/ 25 августа 2010

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

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

0 голосов
/ 21 декабря 2013

Представьте, что у вас есть следующий текст 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>
0 голосов
/ 18 июля 2011

Я только что подумал о другом примере, где вам нужно цитировать > в HTML5 ( не XHTML5 ) документах: если вам это нужно в атрибутах без кавычек (что-то, о чем можно спорить Конечно).

<img src=arrow.png alt=&gt;>

должно быть эквивалентно XHTML

<img src="arrow.png" alt=">" />

Но опять же, (? <! X) HTML - это не SGML. </p>

...