Параметр 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

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.
Проекты с строгой проверкой валидности XHTML или
XML Если HTML будет парситься как XML, или необходимо
гарантированное соответствие стандарту XHTML, рекомендуется включать
xhtml: true.
Современные веб-проекты, ориентированные на
HTML5 Для большинства современных сайтов использование
XHTML-стиля необязательно. Можно оставить xhtml: false для
более лаконичного кода.
Комбинация с другими параметрами 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>.
xhtml: true
является обязательным.Параметр xhtml является маленькой, но критически важной
настройкой для контроля формата выходного HTML. Он обеспечивает
совместимость с разными стандартами, повышает
предсказуемость кода и позволяет безопасно интегрировать Markdown в
системы, строго проверяющие разметку.