nginx-0.7.8

Igor Sysoev is at rambler-co.ru
Tue Aug 5 17:19:20 MSD 2008


On Tue, Aug 05, 2008 at 08:13:45PM +0700, Denis F. Latypoff wrote:

> Hello Igor,
> 
> Tuesday, August 5, 2008, 6:52:48 PM, you wrote:
> 
> > On Tue, Aug 05, 2008 at 06:00:26PM +0700, Denis F. Latypoff wrote:
> 
> >> >> > По-моему, нужно брать
> >> >> 1) style->>mediaType, если он не NULL
> >> >> > 2) или последений не NULL mediaType из imports
> >> >> 
> >> >> согласен, тогда патч
> >> 
> >> > Патч очень сложный, я уже добавил эту функциональность + encoding.
> >> 
> >> Да, про encoding забыл. Я сделал так:
> >> 
> >>     if (sheet[i - 1].stylesheet->encoding) {
> >> 
> >>         r->headers_out.charset.len =
> >>             ngx_strlen(sheet[i - 1].stylesheet->encoding);
> >>         r->headers_out.charset.data =
> >>             (u_char *) sheet[i - 1].stylesheet->encoding;
> >>     }
> >> 
> >> 
> >> > Мне нужно только понять порядок вложенных импорта. Что имеет приоритет,
> >> > например, в такой ситуации:
> >> 
> >> > <xsl:output ...   (1)
> >> > <xsl:import ...   (2)
> >> 
> >> > 1 или 2 ?
> >> 
> >> Так по спеке не разрешается, сначала должны быть импорты а потом
> >> 
> >> <xsl:output ... />
> >> 
> >> Так что будет ошибка компиляции, примерно такая:
> 
> > То есть, нужно искать по импортам до первого ненулевого mediaType ?
> > Ну, и естественно, сначала проверять mediaType в самом xsl.
> 
> Да. И encoding тоже.

OK.

> >> "xsltParseStylesheetTop: ignoring misplaced import element"
> >> 
> >> Да, еще, если в xsl файле ошибка синтаксиса, то nginx пишет об ошибке
> >> компиляции, но стартует. При запросе - segfault.
> >> 
> >> Проверить не сложно...
> 
> > У меня выдаётся "xsltParseStylesheetFile(...) failed" и выходит.
> > Можно пример ?
> 
> Да, сегфолт был из-за кривого патча,
> было sheet[i] вместо sheet[i - 1] в одной строчке.
> 
> Так что все в порядке, за исключением одной штуки:
> 
> <xsl:output indent="yes" ... /> игнорится, в результирующем документе
> все теги должны были выравниваться с отступом (удобно при отладке
> бегать глазами по html-ке, в продакшене ставим indent="no" для
> оптимизации размера)
> 
> Но и на indent="no" результат тоже не похож, html должен быть в одну
> строчку.
> 
> Подозреваю, что SAX не умеет индетить...

Модуль не использует SAX как таковой. Просто сам libxml2 строит дерево
через дефолтный SAX. Поэтому модуль инициализирует дефолтную обработку,
а потом переопределяет SAX-обработчики. Я не вижу, как по-другому
перехватить обработку external subset.


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





More information about the nginx-ru mailing list