#20 Skriptování: Podpora spouštění skriptů ze šablon (ne jen z dokumentů), oprava chyby (URI stránky bylo null),
ale při přiřazování výstupu skriptu do proměnné nejde použít disable-output-escaping="yes" resp. vloží se escapovaný výstup
(jiná makra lze přes proměnné procpat a používat je tak v jiných makrech).
viz http://www.stylusstudio.com/xsllist/200105/post40940.html
2 xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
3 xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro">
4 <nadpis>Skriptování</nadpis>
5 <perex>Na stránku můžeme vložit výstup skriptů.</perex>
8 <text xmlns="http://www.w3.org/1999/xhtml">
11 Na stránkách můžeme používat skripty.
12 Spouští se při generování a jejich standardní výstup se vloží do stránky.
13 Třeba doprostřed textu ostavce nebo do jiného elementu.
18 Tyto stránky byly vygenerované v systému
19 <span title="tento text pochází ze skriptu"><m:skript jazyk="bash">uname -o</m:skript></span>.
24 Díky skriptování můžeme stránky obohatit o prakticky libovolný obsah –
25 jak prostý text, tak i XHTML fragmenty.<m:podČarou>zapíná se pomocí atributu
26 <code>výstup="xml"</code> a generátor pak kontroluje správné formátování –
27 nestane se vám, že byste omylem vygenerovali stránky s překříženými nebo neuzavřenými značkami.</m:podČarou>
30 Skriptování ale může být nebezpečné, pokud byste spustili generátor na stránkách,
31 které psal někdo nedůvěryhodný a vložil do nich škodlivý kód.
32 Kromě toho, ukázková sada stránek by měla být přeložitelná kdekoli a mít minimum závislostí
33 (ne každý musí mít nainstalovaný Perl nebo Python či další podporované interprety).
34 Proto je skriptování ve výchozím stavu vypnuté – je potřeba ho povolit v souboru <code>web.conf</code>.
37 <h2>Podporované jazyky</h2>
39 V současnosti jsou podporované tyto jazyky:
50 <m:skript jazyk="perl" výstup="xml"><![CDATA[
54 open(JAVA, "<", $ENV{"XWG_SKRIPTOVANI_JAVA"}) or die $!;
57 if (/podporovanýJazyk\.put\("(\w+)",\s*"(.*)"\);/) {
58 print "<tr><td><code>$1</code></td><td><code>$2</code></td></tr>\n";
66 <p>Jazyky použité nebo citované na této stránce:</p>
68 Lepšího výsledku bychom samozřejmě dosáhli pomocí XPath dotazu,
69 ale toto je příklad na Perl :-)
71 <pre><m:skript jazyk="perl"><![CDATA[
75 open(XML, "<", $ENV{"XWG_STRANKA_SOUBOR"});
79 if (/m:skript\s+jazyk="(\w+)"/) {
85 print "$skripty{$_}×\t $_\n";
90 <pre><m:skript jazyk="bash"><![CDATA[
93 echo -n "Operační systém: ";
95 echo -n "SHA-1 otisk zdrojáku této stránky: ";
96 sha1sum "$XWG_STRANKA_SOUBOR" | cut -f 1 -d " ";
101 <pre style="max-height: 200px;"><m:skript jazyk="php"><![CDATA[
108 <h2>Proměnné prostředí</h2>
110 Ve skriptech máme dostupné následující proměnné prostředí:
121 <!-- Pokud načítáme skript ze souboru, je atribut jazyk nepovinný. -->
122 <m:skript jazyk="perl" výstup="xml" src="skriptování-proměnné.pl"/>
130 <m:pre jazyk="xml"><![CDATA[<m:skript jazyk="bash">
131 echo "URI: $XWG_STRANKA_URI";
132 echo "Soubor: $XWG_STRANKA_SOUBOR";
133 echo "Nadpis: $XWG_STRANKA_NADPIS";
134 echo "Perex: $XWG_STRANKA_PEREX";
135 </m:skript>]]></m:pre>
139 <pre><m:skript jazyk="bash"><![CDATA[
140 echo "URI: $XWG_STRANKA_URI" | sed s/\\/home\\/$USER/\\/home\\/xwg/g;
141 echo "Soubor: $XWG_STRANKA_SOUBOR" | sed s/\\/home\\/$USER/\\/home\\/xwg/g;
142 echo "Nadpis: $XWG_STRANKA_NADPIS";
143 echo "Perex: $XWG_STRANKA_PEREX";