annotate docs/xslt/changes.xslt @ 9300:5be23505292b default tip

SSI: fixed incorrect or duplicate stub output. Following 3518:eb3aaf8bd2a9 (0.8.37), r->request_output is only set if there are data in the first buffer sent in the subrequest. As a result, following the change mentioned this flag cannot be used to prevent duplicate ngx_http_ssi_stub_output() calls, since it is not set if there was already some output, but the first buffer was empty. Still, when there are multiple subrequests, even an empty subrequest response might be delayed by the postpone filter, leading to a second call of ngx_http_ssi_stub_output() during finalization from ngx_http_writer() the subreqest buffers are released by the postpone filter. Since r->request_output is not set after the first call, this resulted in duplicate stub output. Additionally, checking only the first buffer might be wrong in some unusual cases. For example, the first buffer might be empty if $r->flush() is called before printing any data in the embedded Perl module. Depending on the postpone_output value and corresponding sizes, this issue can result in either duplicate or unexpected stub output, or "zero size buf in writer" alerts. Following 8124:f5515e727656 (1.23.4), it became slightly easier to reproduce the issue, as empty static files and empty cache items now result in a response with an empty buffer. Before the change, an empty proxied response can be used to reproduce the issue. Fix is check all buffers and set r->request_output if any non-empty buffers are sent. This ensures that all unusual cases of non-empty responses are covered, and also that r->request_output will be set after the first stub output, preventing duplicate output. Reported by Jan Gassen.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 04 Jul 2024 17:41:28 +0300
parents de20142f5046
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1 <?xml version="1.0" encoding="utf-8"?>
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
4 <xsl:output method="text"/>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
5
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
6 <xsl:param select="'en'" name="lang"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
7 <xsl:param select="'../xml/change_log_conf.xml'" name="configuration"/>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
8
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
9 <xsl:variable select="document($configuration)/configuration" name="conf"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
10 <xsl:variable select="$conf/start" name="start"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
11 <xsl:variable select="$conf/indent" name="indent"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
12 <xsl:variable select="$conf/length" name="max"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
13 <xsl:variable name="br">&lt;br&gt;</xsl:variable>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
14
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
15
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
16 <xsl:template match="/"> <xsl:apply-templates select="change_log"/> </xsl:template>
9216
de20142f5046 Free nginx: regenerated changes.xslt after previous commit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6915
diff changeset
17 <xsl:template match="change_log"> <xsl:apply-templates select="section"/> </xsl:template>
de20142f5046 Free nginx: regenerated changes.xslt after previous commit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6915
diff changeset
18 <xsl:template match="section"> <xsl:apply-templates select="changes"/> </xsl:template>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
19
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
20
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
21 <xsl:template match="changes">
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
22 <xsl:text>&#10;</xsl:text>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
23
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
24 <xsl:value-of select="substring(concat($conf/changes[@lang=$lang]/title,
9216
de20142f5046 Free nginx: regenerated changes.xslt after previous commit.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6915
diff changeset
25 ../@title,
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
26 ' ', @ver,
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
27 ' '),
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
28 1, $conf/changes[@lang=$lang]/length)"/>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29
6915
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
30 <xsl:if test="$lang='ru'">
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
31 <xsl:value-of select="substring(@date, 9, 2)"/>
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
32 <xsl:text>.</xsl:text>
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
33 <xsl:value-of select="substring(@date, 6, 2)"/>
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
34 <xsl:text>.</xsl:text>
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
35 <xsl:value-of select="substring(@date, 1, 4)"/>
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
36 </xsl:if>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
37
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
38 <xsl:if test="$lang='en'">
6915
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
39 <xsl:value-of select="substring(@date, 9, 2)"/>
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
40 <xsl:value-of select="$conf/changes[@lang=$lang]/month[number(substring(current()/@date,
6915
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
41 6, 2))]"/>
b7e02f47a339 Docs: changes.xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 5586
diff changeset
42 <xsl:value-of select="substring(@date, 1, 4)"/>
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
43 </xsl:if>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
44
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
45 <xsl:text>&#10;</xsl:text>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
46
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
47 <xsl:apply-templates select="change"/>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
48
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
49 <xsl:text>&#10;</xsl:text>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
50 </xsl:template>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
51
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
52
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
53 <xsl:template match="change">
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
54 <xsl:variable select="$conf/changes[@lang=$lang]/*[local-name(.)=current()/@type]" name="prefix"/>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
55
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
56 <xsl:variable name="postfix"> <xsl:if test="$prefix"> <xsl:text>: </xsl:text> </xsl:if> </xsl:variable>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
57
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
58 <xsl:apply-templates select="para[@lang=$lang]"><xsl:with-param select="concat($start, $prefix, $postfix)" name="prefix"/></xsl:apply-templates>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
59 </xsl:template>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
60
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
61
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
62 <xsl:template name="para" match="para"><xsl:param name="prefix"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
63 <xsl:variable name="text"> <xsl:apply-templates/> </xsl:variable>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
64
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
65 <xsl:text>&#10;</xsl:text>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
66
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
67 <xsl:call-template name="wrap"><xsl:with-param select="normalize-space($text)" name="text"/><xsl:with-param name="prefix"> <xsl:choose><xsl:when test="position() = 1"> <xsl:value-of select="$prefix"/> </xsl:when><xsl:otherwise> <xsl:value-of select="$indent"/> </xsl:otherwise></xsl:choose> </xsl:with-param></xsl:call-template></xsl:template>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
68
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
69
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
70 <xsl:template name="wrap"><xsl:param name="text"/><xsl:param name="prefix"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
71 <xsl:if test="$text">
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
72 <xsl:variable name="offset">
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
73 <xsl:choose>
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
74 <xsl:when test="starts-with($text, concat($br, ' '))">
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
75 <xsl:value-of select="string-length($br) + 2"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
76 </xsl:when>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
77 <xsl:when test="starts-with($text, $br)">
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
78 <xsl:value-of select="string-length($br) + 1"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
79 </xsl:when>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
80 <xsl:otherwise>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
81 1
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
82 </xsl:otherwise>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
83 </xsl:choose>
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
84 </xsl:variable>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
85
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
86 <xsl:variable name="length">
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
87 <xsl:call-template name="length"><xsl:with-param select="substring($text, $offset)" name="text"/><xsl:with-param select="string-length($prefix)" name="prefix"/><xsl:with-param select="$max" name="length"/></xsl:call-template></xsl:variable>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
88
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
89 <xsl:value-of select="$prefix"/>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
90
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
91 <xsl:value-of select="normalize-space(translate(substring($text, $offset, $length),
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
92 '&#xA0;', ' '))"/>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
93
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
94 <xsl:text>&#10;</xsl:text>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
95
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
96 <xsl:call-template name="wrap"><xsl:with-param select="substring($text, $length + $offset)" name="text"/><xsl:with-param select="$indent" name="prefix"/></xsl:call-template></xsl:if>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
97 </xsl:template>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
98
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
99
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
100 <xsl:template name="length"><xsl:param name="text"/><xsl:param name="prefix"/><xsl:param name="length"/>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
101 <xsl:variable select="substring-before(substring($text, 1,
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
102 $length - $prefix + string-length($br)),
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
103 $br)" name="break"/>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
104
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
105 <xsl:choose>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
106 <xsl:when test="$break"> <xsl:value-of select="string-length($break)"/> </xsl:when>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
107
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
108 <xsl:when test="$length = 0"> <xsl:value-of select="$max - $prefix"/> </xsl:when>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
109
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
110 <xsl:when test="string-length($text) + $prefix &lt;= $length">
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
111 <xsl:value-of select="$length - $prefix"/>
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
112 </xsl:when>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
113
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
114 <xsl:when test="substring($text, $length - $prefix + 1, 1) = ' '">
4024
023b288a22b2 XSLT regeneration for r4023.
Igor Sysoev <igor@sysoev.ru>
parents: 4014
diff changeset
115 <xsl:value-of select="$length - $prefix + 1"/>
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
116 </xsl:when>
4024
023b288a22b2 XSLT regeneration for r4023.
Igor Sysoev <igor@sysoev.ru>
parents: 4014
diff changeset
117
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
118 <xsl:otherwise>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
119 <xsl:call-template name="length"><xsl:with-param select="$text" name="text"/><xsl:with-param select="$prefix" name="prefix"/><xsl:with-param select="$length - 1" name="length"/></xsl:call-template></xsl:otherwise>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
120 </xsl:choose>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
121 </xsl:template>
450
551102312e19 nginx-0.1.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
122
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
123
5586
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
124 <xsl:template match="at">@</xsl:template>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
125 <xsl:template match="br"> <xsl:value-of select="$br"/> </xsl:template>
db6d07dbef3c Docs: xslt regenerated.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4028
diff changeset
126 <xsl:template match="nobr"> <xsl:value-of select="translate(., ' ', '&#xA0;')"/> </xsl:template>
4014
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
127
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
128
234907e676a5 XSLT regeneration for r3998.
Ruslan Ermilov <ru@nginx.com>
parents: 450
diff changeset
129 </xsl:stylesheet>