Как бы я аккуратно установить доктайп файл в HTML5 с <!DOCTYPE html>
помощью XSLT (в данном случае с collective.xdv )
Следующее, что лучше всего нашел мой Google foo:
<xsl:output
method="html"
doctype-public="XSLT-compat"
omit-xml-declaration="yes"
encoding="UTF-8"
indent="yes" />
производит:
<!DOCTYPE html PUBLIC "XSLT-compat" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
, устаревший<!DOCTYPE HTML SYSTEM "about:legacy-compat">
и устаревший («не должен») HTML 4, HTML 4.01, XHTML 1.0 и XHTML 1.1 (все строгие DTD при наличии SYSTEM).Ответы:
Я думаю, что в настоящее время это поддерживается только записью doctype в виде текста:
Это даст следующий результат:
источник
disable-output-escaping
имел в виду КейсиДля того, чтобы использовать простой HTML доктайп
<!DOCTYPE html>
, вы должны использоватьdisable-output-escaping
функцию:<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
. Тем не менее,disable-output-escaping
это дополнительная функция в XSLT, поэтому ваш механизм XSLT или конвейер сериализации могут не поддерживать ее.По этой причине HTML5 предоставляет альтернативный тип документа для совместимости с версиями XSLT, не поддерживающими HTML5 (т. Е. Со всеми существующими версиями XSLT), и другими системами, которые сталкиваются с такой же проблемой. Альтернативный тип документа есть
<!DOCTYPE html SYSTEM "about:legacy-compat">
. Для вывода этой DOCTYPE, используйте атрибутdoctype-system="about:legacy-compat"
наxsl:output
элемент без использованияdoctype-public
атрибута вообще.источник
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
к моему типу документа. Как сказал @Jirka Kosek, я думаю, что мой процессор XSLT может быть сломан.<!DOCTYPE html SYSTEM "about:legacy-compat">
это выводы
это исправлено как мое исправление для http://ukchill.com/technology/generating-html5-using-xslt/
источник
<!DOCTYPE html SYSTEM "about:legacy-compat">
С Saxon 9.4 вы можете использовать:
Это создает:
источник
Используйте doctype-system вместо doctype-public
источник
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
в doctype.Вы должны использовать XHTML 1.0 Strict как DOCTYPE , если вы хотите выход XHTML в соответствии с HTML5, XML сериализатору Libxml2 имеет специальный режим вывода вызываемую XHTML 1.0 DOCTYPEs , который обеспечивает выход в XHTML совместимы (например ,
<br />
вместо того<br/>
,<div></div>
вместо<div/>
).doctype-system="about:legacy-compat"
это не вызовет этот режим совместимостиЕсли вы довольны выводом html, тогда настройка
<xsl:output method="html">
должна работать правильно. Затем вы можете установить doctype с помощью<xsl:text disable-output-escaping="yes"><!DOCTYPE html></xsl:text>
, хотя для этого потребуется подключиться в соответствующем месте, поскольку XDV пока не поддерживает это.На самом деле это, похоже,
<xsl:output method="html"/>
тоже не очень помогает - это приведет<br/>
к выводу как<br></br>
.источник
Эта вариация советов Джирки Косек через тематику Advanced XDV на Plone.org, похоже, работает для меня в коллективно.xdv .
источник
Это комментарий, но мне не хватает очков кармы, чтобы поставить его в нужное место. Вздох.
Нет, ваш XSLT-процессор не сломан, просто XDV добавляет:
<xsl:output method="xml" indent="no" omit-xml-declaration="yes" media-type="text/html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
по умолчанию, поэтому при добавлении секунды
<xsl:output doctype-system="about:legacy-compat"/>
предыдущаяdoctype-public
не перезаписывается.Обратите внимание, что строгий XHTML 1.0 указан как устаревшая разрешенная строка типа документа , поэтому вполне допустимо использовать этот тип документа и по-прежнему называть его HTML5.
источник
Извините, что предоставил только ссылки, но это обсуждалось в группе WHATWG, но прошло много месяцев с тех пор, как я с этим справился. Здесь Йен Хиксон и некоторые эксперты по XML обсуждают это:
http://lists.w3.org/Archives/Public/public-html/2009Jan/0640.html
http://markmail.org/message/64aykbbsfzlbidzl,
и вот актуальная проблема номер:
http://www.w3.org/html/wg/tracker/issues/54
и вот эта дискуссия
http://www.contentwithstyle.co.uk/content/xslt-and-html-5-problems
источник
Используйте этот тег
источник
Следующий код будет работать как отдельный шаблон, если он сохранен как
html5.xml
:Ссылки
источник
это то, что я использую для генерации совместимого html5 doctype (извлечение саксонского html5, в противном случае выполнение устаревшего)
источник