Параметр xhtml

Параметр xhtml является частью конфигурации библиотеки Marked и отвечает за способ генерации закрывающих тегов в HTML, особенно для самозакрывающихся элементов, таких как <br> и <img>. В контексте стандартов HTML5 и XHTML этот параметр имеет ключевое значение, так как влияет на совместимость с различными парсерами и валидаторами.


Назначение параметра xhtml

По умолчанию HTML5 позволяет использовать одиночные теги без закрывающего слэша, например:

<br>
<img src="image.png" alt="Описание">

Однако в XHTML все элементы, не имеющие содержимого, должны быть закрыты слэшем:

<br />
<img src="image.png" alt="Описание" />

Параметр xhtml в Marked решает, какой стиль использовать при генерации HTML из Markdown. Если xhtml: true, все самозакрывающиеся теги будут иметь слэш перед закрывающей скобкой.


Пример использования

import { marked } from 'marked';

marked.setOptions({
  xhtml: true
});

const markdown = `
Hello
World

![Alt text](image.png)
Line break here  
Next line
`;

const html = marked(markdown);
console.log(html);

Вывод с xhtml: true:

<p>Hello
World</p>
<p><img src="image.png" alt="Alt text" /></p>
<p>Line break here<br />Next line</p>

Вывод с xhtml: false (по умолчанию):

<p>Hello
World</p>
<p><img src="image.png" alt="Alt text"></p>
<p>Line break here<br>Next line</p>

Разница заметна на <img> и <br>: слэш используется только при включенном xhtml.


Влияние на производительность

Включение xhtml не оказывает значительного влияния на производительность, так как операция добавления слэша минимальна. Основной эффект параметра заключается в совместимости с инструментами, которые строго проверяют соответствие XHTML, например, XML-парсерами или некоторыми CMS, ожидающими корректный XML.


Использование в различных сценариях

  1. Проекты с строгой проверкой валидности XHTML или XML Если HTML будет парситься как XML, или необходимо гарантированное соответствие стандарту XHTML, рекомендуется включать xhtml: true.

  2. Современные веб-проекты, ориентированные на HTML5 Для большинства современных сайтов использование XHTML-стиля необязательно. Можно оставить xhtml: false для более лаконичного кода.

  3. Комбинация с другими параметрами Marked Параметр xhtml часто используется вместе с sanitize или gfm для контроля безопасности и соответствия стандартам GitHub-flavored Markdown:

marked.setOptions({
  gfm: true,
  sanitize: true,
  xhtml: true
});

Взаимодействие с самозакрывающимися тегами

Список тегов, на которые влияет xhtml:

  • <br> – перенос строки
  • <hr> – горизонтальная линия
  • <img> – изображение
  • <input> – поля формы (если используются через Markdown-расширения)
  • <meta>, <link> – редко встречаются в Markdown, но при генерации документа через Marked могут быть включены.

Важно, что xhtml: true не изменяет поведение обычных блочных и строчных тегов, таких как <p>, <strong>, <em>, <ul>, <ol> и <li>.


Советы по практическому применению

  • Всегда проверять, какой стандарт ожидается в проекте (HTML5 или XHTML).
  • Для публикации Markdown как XML-документа xhtml: true является обязательным.
  • Не смешивать Marked с ручной генерацией HTML с разными стилями закрытия тегов, чтобы избежать конфликтов при валидации.
  • При использовании CMS или редакторов, которые автоматически обрабатывают HTML, убедиться, что слэш перед закрывающим тегом не вызывает ошибок.

Параметр xhtml является маленькой, но критически важной настройкой для контроля формата выходного HTML. Он обеспечивает совместимость с разными стандартами, повышает предсказуемость кода и позволяет безопасно интегрировать Markdown в системы, строго проверяющие разметку.