Не работает XSL transformation
Никита Камчаткин
nikita на kamchatkin.ru
Ср Апр 11 14:49:30 UTC 2012
Здравствуйте.
У меня не работает XSL transformation, причем именно на nginx. На
остальных движках работает - проверяли через связку Apache+PHP. а также
в онлайновых сервисах.
Nginx настроен как прокси, а ответ должен преобразовываться. Конфиг:
location /portal-facade-picassa-jsonpp/ {
proxy_pass http://picasaweb.google.com/;
proxy_set_header Host picasaweb.google.com;
xslt_stylesheet /var/spool/nginx/tve-jsonpp/picassa.xsl;
break;
}
URL, откуда грузится исходный XML:
http://picasaweb.google.com/data/feed/api/user/alexander.babin/albumid/5487919689060061681?kind=photo&access=public&imgmax=640
XSLT-файл:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/2002/06/xhtml2"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:media="http://search.yahoo.com/mrss/">
<xsl:output method="text" media-type="application/x-javascript" />
<xsl:template match="atom:feed">
<![CDATA[{"feed":{"entry":[]]>
<xsl:for-each select="atom:entry">
<xsl:if test="position() > 1"><![CDATA[ ,]]></xsl:if>
<xsl:for-each select="media:group">
<xsl:for-each select="media:content">
<![CDATA[{"media$group":{"media$content":[{]]>
<![CDATA["url":"]]><xsl:value-of
select="@url"/><![CDATA[",]]>
<![CDATA["width":]]><xsl:value-of
select="@width"/><![CDATA[,]]>
<![CDATA["height":]]><xsl:value-of
select="@height"/><![CDATA[}]}} ]]>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
<![CDATA[ ]}} ]]>
</xsl:template>
</xsl:stylesheet>
В результате, при запросе на
http://localhost/portal-facade-picassa-jsonpp/data/feed/api/user/alexander.babin/albumid/5487919689060061681?kind=photo&access=public&imgmax=640
nginx отдает не преобразовыанный XML - ровно то, что он получает с Picasa.
Кто-нибудь может предположить, в чем тут дело?
Подробная информация о списке рассылки nginx-ru