143 echo "Soubor: $XWG_STRANKA_SOUBOR" | sed s/\\/home\\/$USER/\\/home\\/xwg/g; |
143 echo "Soubor: $XWG_STRANKA_SOUBOR" | sed s/\\/home\\/$USER/\\/home\\/xwg/g; |
144 echo "Nadpis: $XWG_STRANKA_NADPIS"; |
144 echo "Nadpis: $XWG_STRANKA_NADPIS"; |
145 echo "Perex: $XWG_STRANKA_PEREX"; |
145 echo "Perex: $XWG_STRANKA_PEREX"; |
146 ]]></m:skript></pre> |
146 ]]></m:skript></pre> |
147 |
147 |
148 <h2>Makra ve skriptech</h2> |
148 <h2 id="makraVeSkriptech">Makra ve skriptech</h2> |
149 <p> |
149 <p> |
150 XML generované skriptem může také obsahovat makra, která se následně interptetují. |
150 XML generované skriptem může také obsahovat makra, která se následně interptetují. |
151 <m:skript jazyk="bash" výstup="xhtml"><![CDATA[ |
151 <m:skript jazyk="bash" výstup="xhtml"><![CDATA[ |
152 echo '<m:skript jazyk="bash">'; # Ty zrůdo! :-) |
152 echo '<m:skript jazyk="bash">'; # Ty zrůdo! :-) |
153 echo 'echo "Takže můžeš skriptovat, když skriptuješ,";'; |
153 echo 'echo "Takže můžeš skriptovat, když skriptuješ,";'; |
220 Ovšem trochu jiným způsobem, než ve stránkách – |
220 Ovšem trochu jiným způsobem, než ve stránkách – |
221 nacházíme se totiž v <em>programu</em> (XSL šablona definující makro) |
221 nacházíme se totiž v <em>programu</em> (XSL šablona definující makro) |
222 nikoli v <em>datovém souboru</em> (XML stránka). |
222 nikoli v <em>datovém souboru</em> (XML stránka). |
223 </m:podČarou> |
223 </m:podČarou> |
224 jiná makra – mj. skripty. |
224 jiná makra – mj. skripty. |
225 Toho jsme využili v makru, které generuje tabulku verzí z mercurialu: |
225 Toho jsme využili v makru, které generuje tabulku verzí z mercurialu |
|
226 – ten umí vypsat historii úložiště v XML, které následně snadno zpracujeme v XSLT. |
226 </p> |
227 </p> |
227 |
228 |
228 <m:hg-verze/> |
229 <m:hg-verze/> |
229 |
230 |
230 <p> |
231 <p> |
231 Toto makro naleznete v souboru <code>vstup/makra/hg-verze.xsl</code>. |
232 Toto makro naleznete v souboru <code>vstup/makra/hg-verze.xsl</code>. |
232 </p> |
233 </p> |
233 |
234 |
|
235 <h2>Vnořování maker</h2> |
|
236 <p> |
|
237 Trochu jiný případ je vnořování maker na stránce. |
|
238 Např. si chceme vypsat vybrané internetové služby: |
|
239 </p> |
|
240 <m:tabulka> |
|
241 <m:skript jazyk="perl"><![CDATA[ |
|
242 use strict; |
|
243 use warnings; |
|
244 |
|
245 print "Port\tSlužba\tProtokol\n"; |
|
246 open(S, "<", "/etc/services") or die $!; |
|
247 while (<S>) { |
|
248 if (/(\w+)\s+(21|22|25|80)\/(tcp)/) { |
|
249 print "$2\t$1\t$3\n"; |
|
250 } |
|
251 } |
|
252 ]]></m:skript> |
|
253 </m:tabulka> |
|
254 |
|
255 <p> |
|
256 Pro vygenerování použijeme dvě makra – tabulku a skript – která vložíme do textu stránky: |
|
257 </p> |
|
258 |
|
259 <m:pre jazyk="xml"><![CDATA[ |
|
260 <m:tabulka> |
|
261 <m:skript jazyk="perl"><![CDATA[ |
|
262 print "Port\tSlužba\tProtokol\n"; |
|
263 open(S, "<", "/etc/services") or die $!; |
|
264 while (<S>) { |
|
265 if (/(\w+)\s+(21|22|25|80)\/(tcp)/) { |
|
266 print "$2\t$1\t$3\n"; |
|
267 } |
|
268 } |
|
269 ]]]]>><![CDATA[</m:skript> |
|
270 </m:tabulka>]]></m:pre> |
|
271 |
|
272 <p> |
|
273 Ve skriptu v tomto případě negenerujeme XHTML značky, ale CSV (s tabulátory) |
|
274 a o převod na XHTML tabulku se postará XSL šablona. |
|
275 </p> |
|
276 |
|
277 <!-- |
|
278 Nebo to taky můžeme napsat na jeden řádek: |
|
279 cat /etc/services | perl -ne 'if (/(\w+)\s+(21|22|25|80)\/(tcp)/) { print "$2\t$1\t$3\n";}' |
|
280 a vložit do tabulky jako BASH skript :-) |
|
281 --> |
|
282 |
|
283 <p> |
|
284 Podobně bychom mohli postupovat i u <a href="#makraVeSkriptech">diagramu</a> – |
|
285 negenerovat skriptem značky makra, ale pouze jeho obsah – zadání diagramu, nebo jen jeho část. |
|
286 Někdy se ale může hodit ve skriptu nastavovat atributy elementů nebo elementy vytvářet dynamicky. |
|
287 </p> |
|
288 |
234 </text> |
289 </text> |
235 |
290 |
236 </stránka> |
291 </stránka> |
237 |
292 |