vstup/skriptování.xml
author František Kučera <franta-hg@frantovo.cz>
Sat, 23 Jun 2012 19:22:21 +0200
changeset 95 eea9c4713045
parent 94 4b3ba32f613c
child 97 6181a00e0ffd
permissions -rw-r--r--
#20 Skriptování: podpora výstupu ve formátu XML (musí být validní)
     1 <stránka
     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>
     6 
     7 	<text xmlns="http://www.w3.org/1999/xhtml">
     8 	
     9 		<p>
    10 			Na stránkách můžeme používat skripty.
    11 			Spouští se při generování a jejich standardní výstup se vloží do stránky.
    12 			Třeba doprostřed textu ostavce nebo do jiného elementu.
    13 		</p>
    14 		<p>
    15 			Příklad:
    16 			<em>
    17 				Tyto stránky byly vygenerované v systému
    18 				<span title="tento text pochází ze skriptu"><m:skript jazyk="bash">uname -o</m:skript></span>.
    19 			</em>
    20 		</p>
    21 
    22 		<p>
    23 			Díky skriptování můžeme stránky obohatit o prakticky libovolný obsah.
    24 			Tato funkce ale může být nebezpečná – pokud byste spustili generátor na stránkách,
    25 			které psal někdo nedůvěryhodný a vložil do nich škodlivý kód.
    26 			Proto je skriptování ve výchozím stavu vypnuté – je potřeba ho povolit v souboru <code>web.conf</code>.
    27 		</p>
    28 
    29 		<h2>Podporované jazyky</h2>
    30 		<p>
    31 			V současnosti jsou podporované tyto jazyky:
    32 		</p>
    33 		
    34 		<table>
    35 			<thead>
    36 				<tr>
    37 					<td>Jazyk</td>
    38 					<td>Interpret</td>
    39 				</tr>
    40 			</thead>
    41 			<tbody>
    42 				<m:skript jazyk="perl"  výstup="xml"><![CDATA[
    43 use strict;
    44 
    45 open(JAVA, "<", $ENV{"XWG_SKRIPTOVANI_JAVA"}) or die $!;
    46 
    47 while (<JAVA>) {
    48 #i.put("bash", "/bin/bash");
    49 	if (/podporovanýJazyk\.put\("(\w+)",\s*"(.*)"\);/) {
    50 		print "<tr><td><code>$1</code></td><td><code>$2</code></td></tr>\n";
    51 	}
    52 }
    53 				]]></m:skript>
    54 			</tbody>
    55 		</table>
    56 
    57 		<h2>Perl</h2>
    58 		<p>Jazyky použité nebo citované na této stránce:</p>
    59 		<pre><m:skript jazyk="perl"><![CDATA[
    60 use strict;
    61 
    62 open(XML, "<", $ENV{"XWG_STRANKA_SOUBOR"});
    63 my %skripty;
    64 
    65 while (<XML>) {
    66 	if (/m:skript\s+jazyk="(\w+)"/) {
    67 		$skripty{$1}++;
    68 	}
    69 }
    70 
    71 for(keys(%skripty)) {
    72 	print "$skripty{$_}×\t $_\n";
    73 }
    74 			]]></m:skript></pre>
    75 
    76 			<h2>BASH</h2>
    77 		<pre><m:skript jazyk="bash"><![CDATA[
    78 echo -n "Právě je: ";
    79 date;
    80 echo -n "Operační systém: ";
    81 uname -sir;
    82 echo -n "SHA-1 otisk zdrojáku této stránky: ";
    83 sha1sum < $XWG_STRANKA_SOUBOR;
    84 			]]></m:skript></pre>
    85 
    86 			<!--
    87 			<h2>PHP</h2>
    88 			<pre style="max-height: 200px;"><m:skript jazyk="php"><![CDATA[
    89 <?php
    90 phpinfo();
    91 ?>
    92 			]]></m:skript></pre>
    93 			-->
    94 
    95 			<h2>Proměnné prostředí</h2>
    96 			<p>
    97 				Ve skriptech máme dostupné následující proměnné prostředí:
    98 			</p>
    99 			
   100 			<table>
   101 				<thead>
   102 					<tr>
   103 						<td>Proměnná</td>
   104 						<td>Význam</td>
   105 					</tr>
   106 				</thead>
   107 				<tbody>
   108 					<m:skript jazyk="perl" výstup="xml"><![CDATA[
   109 use strict;
   110 
   111 open(JAVA, "<", $ENV{"XWG_SKRIPTOVANI_JAVA"}) or die $!;
   112 
   113 while (<JAVA>) {
   114 #i.put("bash", "/bin/bash");
   115 	if (/"(.*)=".*\/\/\s+env:(.*)/) {
   116 		print "<tr><td><code>$1</code></td><td>$2</td></tr>\n";
   117 	}
   118 }
   119 					]]></m:skript>
   120 				</tbody>
   121 			</table>
   122 			
   123 			<p>
   124 				Kód:
   125 			</p>
   126 			
   127 			<m:pre jazyk="xml"><![CDATA[<m:skript jazyk="bash">
   128 echo "URI:    $XWG_STRANKA_URI";
   129 echo "Soubor: $XWG_STRANKA_SOUBOR";
   130 echo "Nadpis: $XWG_STRANKA_NADPIS";
   131 echo "Perex:  $XWG_STRANKA_PEREX";
   132 </m:skript>]]></m:pre>
   133 			
   134 			<p>nám vypíše:</p>
   135 			
   136 			<pre><m:skript jazyk="bash"><![CDATA[
   137 echo "URI:    $XWG_STRANKA_URI" | sed s/\\/home\\/$USER/\\/home\\/xwg/g;
   138 echo "Soubor: $XWG_STRANKA_SOUBOR" | sed s/\\/home\\/$USER/\\/home\\/xwg/g;
   139 echo "Nadpis: $XWG_STRANKA_NADPIS";
   140 echo "Perex:  $XWG_STRANKA_PEREX";
   141 		]]></m:skript></pre>
   142 
   143 	</text>
   144 
   145 </stránka>
   146