Re: ngx_http_xslt_module: убрать заголовок xml

Maxim Dounin mdounin на mdounin.ru
Вт Дек 27 11:34:36 UTC 2011


Hello!

On Tue, Dec 27, 2011 at 02:11:41PM +0300, Eugene Batogov wrote:

> Привет.
> 
> Столкнулся с проблемой. Мне необходимо преобразовать xml в JavaScript,
> для этого использую ngx_http_xslt_module.
> 
> Конфигурация nginx:
> 
>         location portal-facade-ytraffic-jsonpp {
>           proxy_pass http://op.yandex.ru/;
>           proxy_set_header  Host op.yandex.ru;
>           add_header Content-Type application/x-javascript;
>           xslt_stylesheet /var/spool/nginx/tve-jsonpp/yandex-traffic.xsl;
>           break;
>         }
> 
> XSLT-преобразование:
> 
>     <?xml version="1.0" encoding="UTF-8"?>
>     <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>         <xsl:template match="/">
>             <![CDATA[fw.core.RequestManager.response({ rate:]]>
>             <xsl:value-of select="export/Traffic/rate" />
>             <![CDATA[});]]>
>         </xsl:template>
>     </xsl:stylesheet>
> 
> Оно преобразовывает XML с сайта Яндекс.Пробки в JavaScript:
> 
>     fw.core.RequestManager.response({ rate: 7 });
> 
> Проблема в том, что в ответе первой строкой выдается XML-заголовок:
> 
>     <?xml version="1.0"?>
>     fw.core.RequestManager.response({ rate: 7 });
> 
> Вот именно этот заголовок мне надо убрать, и оставить только чистый
> JavaScript. Как это можно сделать?

Добавить в xslt шаблон:

<xsl:output method="text" media-type="application/x-javascript" />

И убрать add_header.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru