Вы помещаете объявление пространства имен в XSLT, например:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:atom="http://www.w3.org/2005/Atom"
exclude-result-prefixes="atom"
>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<body style="font-family:Arial;font-size:12pt;background-color:#EEEEEE">
<xsl:apply-tepmplates select="atom:feed/atom:entry" />
</body>
</html>
</xsl:template>
<xsl:template match="atom:entry">
<div style="background-color:teal;color:white;padding:4px">
<span style="font-weight:bold">
<xsl:value-of select="atom:title"/>
</span>
<xsl:text> - </xsl:text>
<xsl:value-of select="atom:author"/>
</div>
<div style="margin-left:20px;margin-bottom:1em;font-size:10pt">
<b><xsl:value-of select="atom:published" /> </b>
<xsl:value-of select="atom:summary" disable-output-escaping="yes" />
</div>
</xsl:template>
</xsl:stylesheet>
Обратите внимание, что пространство имен ATOM зарегистрировано с префиксом atom:
и используется во всех XPath по всей таблице стилей. Я использовал exclude-result-prefixes
, чтобы убедиться, что atom:
не будет отображаться в полученном документе.
Также обратите внимание, что я заменил ваш <xsl:for-each>
на шаблон. Вы также должны стараться избегать каждого в пользу шаблонов.
Использование disable-output-escaping="yes"
несколько опасно в сочетании с XHTML - если только вы не уверены, что содержимое summary
также является правильно сформированным XHTML.