





Быстрый поиск в Google по W3C показывает, что XMP был введен для отображения предварительно отформатированный текст в HTML 3.2 и ранее. Когда W3C отказался от тега XMP, он предложил использовать тег PRE в качестве предпочтительной альтернативы.
Обновление: http://www.w3.org/TR/REC-html32#xmp, http://www.w3.org/MarkUp/html-spec/html-spec_5.html#SEC5.5.2.1
Фактически они уже были отмечены как «устаревшие» в справочнике HTML 3.0. w3.org/MarkUp/html3/html3.dtd от 1 августа 1995 года. Который, кстати, также цитирует точную причину, по которой он устарел (это был бы ответ на второй вопрос ОП).
pre не является альтернативой xmp цитирует весь содержащийся текст. Отлично подходит для отладки. Однако не безопасно. Работает везде AFAIK.
На этой странице объясняется, почему <xmp> небезопасен: html5sec.org/#134
@Julien Это небезопасный способ объединения вводимых пользователем данных в HTML (потому что он по-прежнему подвержен воздействию XSS), но вы все равно не должны этого делать. Afaik, использование тега в целом не является уязвимостью безопасности.
По-прежнему работает, чтобы показать необработанный html - если вы используете его в скрипте, сломайте начальный тег.
var stuff='<xmp'+'>this is shown as is<br/>hello</xmp>';
document.getElementById("x").innerHTML=stuff;<div id = "x"></div>См. http://www.w3.org/Bugs/Public/show_bug.cgi?id=12235
Для HTML5. По словам редактора HTML5 (комментарии 11 и 12), в любом случае это был очень близкий вызов.
Я до сих пор использую тег xmp для отладки var_dump(); в PHP. По какой-то причине я просто не могу вспомнить, что использовал тег pre.
Я думаю, это не имеет особого значения, потому что, если вы действительно хотите выводить текст, вы должны использовать textarea с атрибутом readonly.
Это очень удобно для этого. Поскольку var_dump() ничего не возвращает, вам нужны функции выходного буфера для HTML-кодирования его вывода. <xmp> - это быстрая альтернатива написанию функции-оболочки, работающая везде.
Обратите внимание, что если в var_dump() есть какие-либо данные, вводимые пользователем, этот метод оставляет вас уязвимым для XSS-атак.
XMP и PRE различаются. Содержимое тегов PRE форматируется следующим образом:
Если вы хотите включить специальные символы, такие как <, > и &, в теги PRE, они должны быть экранированы, чтобы они не подвергались специальной интерпретации браузером.
Напротив, содержимое тегов XMP не требует экранирования нет.
Единственная последовательность символов, которая не может быть включена в теги XMP, - это конечный тег XMP (</XMP>).
XMP по-прежнему поддерживается браузерами, которые я тестировал. Вы можете попробовать это с xmp.html. Просмотрите источник, чтобы увидеть теги.
Я представил четыре способа представления кода. Textarea кажется победителем. Вот моя оценка: dadinck.x10.mx/code_example.html
Примечание по безопасности: XMP не является - защита XSS - его единственная цель - когда вы создаете HTML-страницу статическийсамостоятельно и хотите показать некоторый код, не экранируя его ...
@dadinck, Ваша ссылка xml.html ссылается на "Учетная запись веб-хостинга, связанная с этим сайтом, временно приостановлена!" ....
@Pacerier Извините. Это было временно. Он снова вернулся.
Вы забыли <plaintext>. Те же преимущества, что и у <xmp>, без каких-либо недостатков Помимо, что все (включая любой </plaintext>) после тега будет напечатан дословно, включая </body> и </html>.
@Boldewyn <plaintext> устарел, как и тег <xmp>, поэтому его использование запрещено. Наверное, лучшая альтернатива - бирка <textarea>.
XMP отлично подходит для отладки необработанного HTML.
XMP делает некоторые вещи, которые не поддерживает PRE. Еще зависим от XMP, есть заменитель нет.
Возможно, вы могли бы объяснить, что Почему PRE не заменяет XMP. В нынешнем виде это не совсем ответ.
<xmp> игнорирует HTML-теги и объекты; <pre> - нет.
Как насчет <textarea /> в качестве замены?
Как насчет использования экранирования сценария на стороне сервера? :П ................................................ ............ .................... .......... <pre><?php echo htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); ?></pre>
Попробуйте отладить вывод XML в браузере с помощью xmp, а затем pre. xmp покажет правильный результат.
Я использовал <textarea>, который помещает html-код в аккуратное поле и четко определяет код как отличный от текста до или после.
<textarea><b>boldtext</b><textarea>
<xmp> используется с strapdown.js в нотации уценки форматирования. Имя ремень, объединяющее термины бутстрап и уценка.
<!DOCTYPE html>
<html>
<title>Example</title>
<xmp theme = "united">
## Example
- note one
- note two
- note three
</xmp>
<script src = "http://strapdownjs.com/v/0.2/strapdown.js"></script>
</html>
Совершенно уверен, что он использовался для раздражающих разработчиков, пишущих парсеры html, учитывая, что это действительно (и используется Google не меньше):
<xmp style = "display:none"><!-- do not remove the plaintext nor xmp tags --><plaintext/><xmp>.</xmp>