nginx-0.7.8

Igor Sysoev is at rambler-co.ru
Tue Aug 5 12:44:28 MSD 2008


On Tue, Aug 05, 2008 at 03:02:14PM +0700, Denis F. Latypoff wrote:

> Hello Igor,
> 
> Tuesday, August 5, 2008, 2:20:04 PM, you wrote:
> 
> > On Tue, Aug 05, 2008 at 02:14:23PM +0700, Denis F. Latypoff wrote:
> 
> >> <xsl:output media-type="text/html" ... />
> >> 
> >> атрибут media-type игнорируется и выход получается в text/xml.
> >> 
> >> патч в аттаче лечит.
> 
> вообще в аттаче - хак.
> 
> правильней делать так:
> 
> char *get_content_type(xsltStylesheetPtr style)
> {
>      xsltStylesheetPtr walk;
>      char *type;
> 
>      for (walk = style->imports; walk; walk = walk->next)
>      {
>          if (walk->mediaType)
>             return (char *) walk->mediaType;
> 
>          if (walk->imports)
>          {
>             type = get_content_type (walk);
> 
>             if(type)
>                  return type;
>          }
>      }
> 
>      return NULL;
> }

По-моему, нужно брать
1) style->mediaType, если он не NULL
2) или последений не NULL mediaType из imports

Кстати, для

<xsl:output method="text" media="text/plain" />

style->mediaType == NULL, а doc->type == XML_DOCUMENT_NODE.

> потому что по спеке можно делать так:
> 
> global.xsl:
> 
>        <xsl:output media="text/html" encoding="koi8-r" />
>        ...
> 
> index.xsl:
> 
>        <xsl:import href="global.xsl" />
>        <xsl:output media="text/plain" encoding="utf-8" />
> 
> на выходе должно быть
> 
>        Content-Type: text/plain; charset=utf-8
> 
> 
> > А xslt сам его не понимает, как в случае с <xsl:output method="html" ... /> ?


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list