# HG changeset patch # User František Kučera # Date 1341523909 -7200 # Node ID d59023a42d4b13b19ae989f87fa5b3972b1dfa40 # Parent d43098fac7835194fe90f15eba4bf3bf2bfcf3b6 #20 Skriptování: vnořování maker – zadání tabulky nebo diagramu může být generované skriptem. diff -r d43098fac783 -r d59023a42d4b vstup/skriptování.xml --- a/vstup/skriptování.xml Thu Jul 05 21:13:56 2012 +0200 +++ b/vstup/skriptování.xml Thu Jul 05 23:31:49 2012 +0200 @@ -74,7 +74,7 @@ use strict; use warnings; -open(XML, "<", $ENV{"XWG_STRANKA_SOUBOR"}); +open(XML, "<", $ENV{"XWG_STRANKA_SOUBOR"}) or die $!; my %skripty; while () { @@ -88,7 +88,7 @@ } ]]> -

BASH – ukázka

+

BASH – ukázka

-

Makra ve skriptech

+

Makra ve skriptech

XML generované skriptem může také obsahovat makra, která se následně interptetují. datovém souboru (XML stránka). jiná makra – mj. skripty. - Toho jsme využili v makru, které generuje tabulku verzí z mercurialu: + Toho jsme využili v makru, které generuje tabulku verzí z mercurialu + – ten umí vypsat historii úložiště v XML, které následně snadno zpracujeme v XSLT.

@@ -231,6 +232,60 @@ Toto makro naleznete v souboru vstup/makra/hg-verze.xsl.

+

Vnořování maker

+

+ Trochu jiný případ je vnořování maker na stránce. + Např. si chceme vypsat vybrané internetové služby: +

+ + ) { + if (/(\w+)\s+(21|22|25|80)\/(tcp)/) { + print "$2\t$1\t$3\n"; + } +} + ]]> + + +

+ Pro vygenerování použijeme dvě makra – tabulku a skript – která vložíme do textu stránky: +

+ + + ) { + if (/(\w+)\s+(21|22|25|80)\/(tcp)/) { + print "$2\t$1\t$3\n"; + } + } + ]]]]>> +]]> + +

+ Ve skriptu v tomto případě negenerujeme XHTML značky, ale CSV (s tabulátory) + a o převod na XHTML tabulku se postará XSL šablona. +

+ + + +

+ Podobně bychom mohli postupovat i u diagramu – + negenerovat skriptem značky makra, ale pouze jeho obsah – zadání diagramu, nebo jen jeho část. + Někdy se ale může hodit ve skriptu nastavovat atributy elementů nebo elementy vytvářet dynamicky. +

+ diff -r d43098fac783 -r d59023a42d4b šablona/makra/diagramy.xsl --- a/šablona/makra/diagramy.xsl Thu Jul 05 21:13:56 2012 +0200 +++ b/šablona/makra/diagramy.xsl Thu Jul 05 23:31:49 2012 +0200 @@ -35,8 +35,11 @@ @src zadání diagramu načteme ze souboru (potom je výchozí kompletní = 'ne') --> + + + - + diff -r d43098fac783 -r d59023a42d4b šablona/makra/tabulka.xsl --- a/šablona/makra/tabulka.xsl Thu Jul 05 21:13:56 2012 +0200 +++ b/šablona/makra/tabulka.xsl Thu Jul 05 23:31:49 2012 +0200 @@ -39,6 +39,18 @@ + + + + + + + + + + + + @@ -46,6 +58,7 @@ +