По историческим причинам у нас есть смесь
<xsl:output method="xml">
и
<xsl:output method="html">
и
<xsl:output method="xhtml">
во включать-иерархии файлов XSL. Теперь мы хотим осуществить рефакторинг так все использование файлов XSL тот же выходной метод.
В конце мы хотим произвести XHTML-вывод, таким образом, я предполагаю, что последний был бы лучшим выбором.
Но каковы различия между теми тремя выходными методами и который Вы использовали бы для какой решение?
Править: Я использую XSLT 2.0
I found the answer by reading the XSLT 2.0 specification (XSLT 2.0 and XQuery 1.0 Serialization).
Given an empty instance of an XHTML element whose content model is not EMPTY (for example, an empty title or paragraph) the serializer MUST NOT use the minimized form. That is, it MUST output
and not
.
Given an XHTML element whose content model is EMPTY, the serializer MUST use the minimized tag syntax, for example
, as the alternative syntax
allowed by XML gives uncertain results in many existing user agents. The serializer MUST include a space before the завершающий />, например
,
и
.
Сериализатор НЕ ДОЛЖЕН использовать сущность ссылка
'
, которая, хотя допустимо в XML и, следовательно, в XHTML, не определен в HTML и не распознается всеми пользовательскими агентами HTML.Сериализатору СЛЕДУЕТ выводить пространство имен декларации таким образом, чтобы в соответствии с требованиями XHTML DTD, если это возможно. В XHTML 1.0 DTD требует объявления xmlns = "http://www.w3.org/1999/xhtml" появиться в элементе html, и только на элементе html. В сериализатор ДОЛЖЕН выводить пространство имен декларации, которые соответствуют узлы пространства имен, присутствующие в дерево результатов, но НЕОБХОДИМО избегать вывод избыточного пространства имен объявления об элементах, где DTD сделает их недействительными.
Это означает, что ответ использует
.
HTML will serialize as HTML, so the output may not be well-formed XML. If you are only sending to browsers and don't care about being able to parse as XML then that may work for you.
XML will serialize as XML, so the output will be well-formed, but you may run into some issues with browsers using the output. Small things, like self closing and
elements. In order to avoid that issue you would have to play games, like adding comments inside of the element (e.g.
)
If you have an XSLT 2.0 engine and want well formed HTML output without the headache of worrying about how some elements are serialized, then use XHTML.
Насколько мне известно, в xslt 1.0 не существует метода : xhtml
для директивы xsl: output
.
wc3schools согласны с этим.
Поскольку XHTML - это диалект XML, я бы использовал именно его.
Однако, если вы используете xslt 2.0 , можно также использовать xhtml
, поскольку это то, что вы выводите .