# 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 @@
+