15 method="xml" |
15 method="xml" |
16 indent="yes" |
16 indent="yes" |
17 encoding="UTF-8" |
17 encoding="UTF-8" |
18 doctype-public="-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" |
18 doctype-public="-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" |
19 doctype-system="http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"/> |
19 doctype-system="http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"/> |
20 |
20 <xsl:include href="stránka-společné.xsl"/> |
21 <xsl:param name="vstup" select="'../vstup/'"/> |
|
22 <xsl:param name="výstup" select="'../výstup/'"/> |
|
23 <xsl:param name="vstupníPřípona" select="'.xml'"/> |
|
24 <xsl:param name="výstupníPřípona" select="'.xhtml'"/> |
|
25 <xsl:param name="vsuvkováPřípona" select="'.inc'"/> |
|
26 <xsl:param name="podporaZaostalýchProhlížečů" select="false()" as="xs:boolean"/> |
|
27 |
21 |
28 <xsl:include href="makra.xsl"/> |
22 <!-- |
29 |
23 Šablona stránky |
30 <!-- Celý dokument: --> |
24 *************** |
|
25 --> |
31 <xsl:template match="/"> |
26 <xsl:template match="/"> |
32 <xsl:variable name="konfigurace" select="document(concat($vstup, 'web.conf'))"/> |
|
33 <html> |
27 <html> |
34 <head> |
28 <head> |
35 <xsl:if test="$podporaZaostalýchProhlížečů"> |
29 <xsl:if test="$podporaZaostalýchProhlížečů"> |
36 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> |
30 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> |
37 </xsl:if> |
31 </xsl:if> |
38 <title><xsl:value-of select="s:stránka/s:nadpis"/></title> |
32 <title><xsl:value-of select="s:stránka/s:nadpis"/></title> |
39 <link title="Novinky (Atom)" href="atom.xml" type="application/atom+xml" rel="alternate"/> |
33 <link title="Novinky (Atom)" href="atom.xml" type="application/atom+xml" rel="alternate"/> |
40 <link title="Novinky (RSS)" href="rss.xml" type="application/rss+xml" rel="alternate"/> |
34 <link title="Novinky (RSS)" href="rss.xml" type="application/rss+xml" rel="alternate"/> |
41 <xsl:apply-templates select="$konfigurace/k:web/k:js"/> |
35 <xsl:apply-templates select="$konfigurace/k:web/k:js"/> |
42 <xsl:apply-templates select="$konfigurace/k:web/k:css"/> |
36 <xsl:apply-templates select="$konfigurace/k:web/k:css"/> |
43 </head> |
37 </head> |
44 <body> |
38 <body> |
45 <div id="tělo"> |
39 <div id="tělo"> |
46 <div id="záhlaví"> |
40 <div id="záhlaví"> |
47 <xsl:apply-templates select="document(fn:encode-for-uri(concat($vstup, 'záhlaví', $vsuvkováPřípona)))/s:stránka/h:text/node()"/> |
41 <xsl:apply-templates select="document(fn:encode-for-uri(concat($vstup, 'záhlaví', $vsuvkováPřípona)))/s:stránka/h:text/node()"/> |
68 </div> |
62 </div> |
69 </div> |
63 </div> |
70 </body> |
64 </body> |
71 </html> |
65 </html> |
72 </xsl:template> |
66 </xsl:template> |
73 |
|
74 <!-- Kopírujeme elementy, ale vynecháme nepoužité xmlns deklarace: --> |
|
75 <xsl:template match="*"> |
|
76 <xsl:element name="{name()}"> |
|
77 <xsl:copy-of select="@*"/> |
|
78 <xsl:apply-templates/> |
|
79 </xsl:element> |
|
80 </xsl:template> |
|
81 |
67 |
82 <!-- Varování pro případ, že jsme v režimu podpory pro zaostalé prohlížeče --> |
|
83 <xsl:template name="varováníRetardace"> |
|
84 <xsl:if test="$podporaZaostalýchProhlížečů"> |
|
85 <xsl:comment> |
|
86 Generátor byl spuštěn v režimu podpory zaostalých prohlížečů. |
|
87 Uživatelům doporučujeme upgrade na skutečný WWW prohlížeč, |
|
88 jako je např. Firefox nebo Chromium (případně Opera či Safari). |
|
89 </xsl:comment> |
|
90 </xsl:if> |
|
91 </xsl:template> |
|
92 |
|
93 <!-- Odkazy na JavaScript a kaskádové styly --> |
|
94 <xsl:template match="k:web/k:js"> |
|
95 <script src="{text()}" type="text/javascript"> |
|
96 <xsl:call-template name="varováníRetardace"/> |
|
97 </script> |
|
98 </xsl:template> |
|
99 <xsl:template match="k:web/k:css"> |
|
100 <link href="{text()}" type="text/css" rel="StyleSheet" /> |
|
101 </xsl:template> |
|
102 |
|
103 <!-- |
|
104 TODO: makra vyčlenit do samostatných souborů |
|
105 --> |
|
106 |
|
107 <!-- |
|
108 Makro pro převod interních odkazů: |
|
109 - doplnění správné přípony |
|
110 - URL kódování znaků |
|
111 --> |
|
112 <xsl:template match="m:a"> |
|
113 <a> |
|
114 <xsl:copy-of select="@*"/> |
|
115 <xsl:attribute name="href"> |
|
116 <xsl:value-of select="fn:encode-for-uri(concat(@href, $výstupníPřípona))"/> |
|
117 </xsl:attribute> |
|
118 <xsl:apply-templates/> |
|
119 </a> |
|
120 </xsl:template> |
|
121 |
|
122 <!-- |
|
123 Makro pro zvýraznění syntaxe: |
|
124 --> |
|
125 <xsl:template match="m:pre"> |
|
126 <xsl:call-template name="zvýrazniZdroják"> |
|
127 <xsl:with-param name="zdroják" select="text()"/> |
|
128 </xsl:call-template> |
|
129 </xsl:template> |
|
130 |
|
131 <xsl:template match="m:pre[@src]"> |
|
132 <xsl:call-template name="zvýrazniZdroják"> |
|
133 <xsl:with-param name="zdroják" select="unparsed-text(concat($vstup, @src))"/> |
|
134 </xsl:call-template> |
|
135 <xsl:if test="@odkaz = 'ano'"> |
|
136 <p class="zdroják-ke-stažení"> |
|
137 <span>Stáhnout: <a href="{encode-for-uri(@src)}"><xsl:value-of select="@src"/></a></span> |
|
138 </p> |
|
139 </xsl:if> |
|
140 </xsl:template> |
|
141 |
|
142 <xsl:template name="zvýrazniZdroják"> |
|
143 <xsl:param name="zdroják"/> |
|
144 <xsl:variable name="zvýrazněnýZdroják" select="j:zvýrazniSyntaxi($zdroják, @jazyk)"/> |
|
145 <xsl:choose> |
|
146 <xsl:when test="$zvýrazněnýZdroják"> |
|
147 <xsl:comment>Následující kód je v jazyce <xsl:value-of select="@jazyk"/></xsl:comment> |
|
148 <xsl:value-of disable-output-escaping="yes" select="$zvýrazněnýZdroják"/> |
|
149 </xsl:when> |
|
150 <xsl:otherwise> |
|
151 <xsl:message>Zvýraznění syntaxe se nezdařilo → bude vložen původní nezvýrazněný kód.</xsl:message> |
|
152 <pre><xsl:value-of select="$zdroják"/></pre> |
|
153 </xsl:otherwise> |
|
154 </xsl:choose> |
|
155 </xsl:template> |
|
156 |
|
157 <!-- |
|
158 Makro pro diagramy/grafy |
|
159 --> |
|
160 <xsl:template match="m:diagram"> |
|
161 <xsl:variable name="souborDiagramu" select="j:vytvořDiagram(text(), @orientace = 'vodorovně')"/> |
|
162 <xsl:choose> |
|
163 <xsl:when test="$souborDiagramu"> |
|
164 <div class="diagram"> |
|
165 <a href="{$souborDiagramu}.svg"> |
|
166 <img |
|
167 src="{$souborDiagramu}.svg" |
|
168 alt="Diagram {$souborDiagramu} | pokud nevidíte obrázek, váš prohlížeč stojí za starou bačkoru" |
|
169 title="{@nadpis} (klikněte pro zobrazení samotného diagramu)"/> |
|
170 </a> |
|
171 <!-- TODO: SVG+PNG |
|
172 <xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/> |
|
173 <object |
|
174 data="{$souborDiagramu}.svg" |
|
175 type="image/svg+xml" |
|
176 style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}"> |
|
177 <img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/> |
|
178 </object> |
|
179 --> |
|
180 <xsl:if test="@nadpis"> |
|
181 <p class="nadpis"><xsl:value-of select="@nadpis"/></p> |
|
182 </xsl:if> |
|
183 </div> |
|
184 </xsl:when> |
|
185 <xsl:otherwise> |
|
186 <xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message> |
|
187 </xsl:otherwise> |
|
188 </xsl:choose> |
|
189 </xsl:template> |
|
190 |
|
191 <!-- |
|
192 Makro pro Wiki syntaxi |
|
193 --> |
|
194 <xsl:template match="m:wiki"> |
|
195 <xsl:variable name="wikiXHTML" select="j:formátujWiki(text(), @syntaxe)"/> |
|
196 <xsl:choose> |
|
197 <xsl:when test="$wikiXHTML"> |
|
198 <xsl:value-of select="$wikiXHTML" disable-output-escaping="yes"/> |
|
199 </xsl:when> |
|
200 <xsl:otherwise> |
|
201 <xsl:message terminate="yes">Při zpracování wiki syntaxe došlo k chybě.</xsl:message> |
|
202 </xsl:otherwise> |
|
203 </xsl:choose> |
|
204 </xsl:template> |
|
205 |
|
206 <!-- |
|
207 Makro pro vycpávkový text |
|
208 --> |
|
209 <xsl:template match="m:vycpávka"> |
|
210 <!-- |
|
211 TODO: stáhnout jen jednou, uložit do souboru a při dalších generováních brát z něj. |
|
212 --> |
|
213 <xsl:message>Stahuji vycpávkový text z http://lipsum.lipsum.com/</xsl:message> |
|
214 <xsl:variable name="prostýText" select="document(concat('http://lipsum.lipsum.com/feed/xml?amount=', @odstavců, '&what=paragraphs'))/feed/lipsum"/> |
|
215 <xsl:for-each select="fn:tokenize($prostýText, '\n')"> |
|
216 <p><xsl:value-of select="."/></p> |
|
217 </xsl:for-each> |
|
218 </xsl:template> |
|
219 |
|
220 <!-- |
|
221 Makro pro jednoduché tabulky |
|
222 --> |
|
223 <xsl:template match="m:tabulka"> |
|
224 <table> |
|
225 <xsl:variable name="data" select="replace(replace(text(), '^\s+', ''),'\s+$','')"/> |
|
226 <xsl:variable name="hlavička" select="substring-before($data, ' ')"/> |
|
227 <xsl:variable name="tělo" select="substring-after($data, ' ')"/> |
|
228 <thead> |
|
229 <tr> |
|
230 <xsl:for-each select="tokenize($hlavička, '\t+')"> |
|
231 <xsl:if test="normalize-space(.)"> |
|
232 <td><xsl:value-of select="normalize-space(.)"/></td> |
|
233 </xsl:if> |
|
234 </xsl:for-each> |
|
235 </tr> |
|
236 </thead> |
|
237 <tbody> |
|
238 <xsl:for-each select="tokenize($tělo, '\n')"> |
|
239 <xsl:if test="normalize-space(.)"> |
|
240 <tr> |
|
241 <xsl:for-each select="tokenize(., '\t+')"> |
|
242 <xsl:if test="normalize-space(.)"> |
|
243 <td><xsl:value-of select="normalize-space(.)"/></td> |
|
244 </xsl:if> |
|
245 </xsl:for-each> |
|
246 </tr> |
|
247 </xsl:if> |
|
248 </xsl:for-each> |
|
249 </tbody> |
|
250 </table> |
|
251 </xsl:template> |
|
252 |
|
253 </xsl:stylesheet> |
68 </xsl:stylesheet> |