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