#xml #xslt #xhtml
#xml #xslt #xhtml
Вопрос:
Я пытаюсь преобразовать XML в xHTML с помощью XSLT.
После этого я получаю xmlns=""
атрибут во всех HTML-тегах( <p>
).
Это моя часть моего файла XSL
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>
<html xmlns="http://www.w3.org/1999/xhtml">
В чем может быть проблема?
Комментарии:
1. Можете ли вы добавить больше вашего XSL? (Пытаюсь понять, почему ваш
<html>
начальный тег находится за пределами anxsl:template
.)2. Кроме того, что вы используете для обработки вашего XSLT?
3. @DevNull да, HTML включен в тег xsl:template… Я просто включил его для информации.. Я использую Xalan для обработки XSLT
4. Вы забыли предоставить полный (но минимальный, пожалуйста) пример, который позволил бы людям воспроизвести и понять проблему. Пожалуйста, предоставьте эту информацию.
Ответ №1:
Если вы хотите, чтобы все ваши результирующие элементы находились в пространстве имен XHTML http://www.w3.org/1999/xhtml
, вам нужно поместить это объявление пространства имен в xsl:stylesheet
элемент, поэтому используйте
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="foo">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
...
</xsl:stylesheet>