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 | | |