Index: vstup/makra/hg-verze.xsl
===================================================================
--- vstup/makra/hg-verze.xsl	(revision 107:379a2a893fd1)
+++ vstup/makra/hg-verze.xsl	(revision 108:8d9cab64c335)
@@ -11,22 +11,10 @@
 	xmlns:xs="http://www.w3.org/2001/XMLSchema"
 	exclude-result-prefixes="fn h s k m xs">
-
+	
 	<!-- Vypíše verze z verzovacího systému: -->
 	<xsl:template match="m:hg-verze">
+
 		<xsl:variable name="zadáníSkriptu">
-			<!--
-				TODO:
-				Zahazovat XML deklaraci bychom mohli v Javě u všech skriptů… 
-				Nicméně současná dohoda je taková, že skripty vracejí fragment, ne celý dokument,
-				což má výhodu v tom, že můžou vrátit kus textu a nějakou tu značku
-				a nemusí to být zabalené v kořenovém elementu.
-				
-			-->
-			<m:skript jazyk="bash" výstup="xml">hg log --style xml | awk '{if(NR&gt;1)print}';</m:skript>
-			<!--
-				Také bychom filtrování mohli provés ve skriptu…
-				hg log … | xpath -e "//logentry[tag[starts-with(., 'v')]]" 2>/dev/null
-				 …ale to by bylo trochu zbytečně pracné.
-			-->
+			<m:skript jazyk="bash" výstup="xml">hg log --style xml</m:skript>
 		</xsl:variable>
 
@@ -43,8 +31,4 @@
 			</thead>
 			<tbody style="text-align: right;">
-				<!--
-					Výstup skriptu se bude nacházet v XHTML jmenném prostoru, což je obvykle v pořádku,
-					ale pro mezivýsledky to není úplně vhodné.
-				-->
 				<xsl:for-each select="$výstupSkriptu/h:log/h:logentry[h:tag[starts-with(text(), 'v')]]">
 					<tr>
Index: vstup/skriptování.xml
===================================================================
--- vstup/skriptování.xml	(revision 107:379a2a893fd1)
+++ vstup/skriptování.xml	(revision 108:8d9cab64c335)
@@ -7,5 +7,5 @@
 
 	<text xmlns="http://www.w3.org/1999/xhtml">
-	
+
 		<p>
 			Na stránkách můžeme používat skripty.
@@ -41,5 +41,5 @@
 			V současnosti jsou podporované tyto jazyky:
 		</p>
-		
+
 		<table>
 			<thead>
@@ -50,5 +50,5 @@
 			</thead>
 			<tbody>
-				<m:skript jazyk="perl" výstup="xml"><![CDATA[
+				<m:skript jazyk="perl" výstup="xhtml"><![CDATA[
 use strict;
 use warnings;
@@ -112,5 +112,5 @@
 				Ve skriptech máme dostupné následující proměnné prostředí:
 			</p>
-			
+
 			<table>
 				<thead>
@@ -122,12 +122,12 @@
 				<tbody>
 					<!-- Pokud načítáme skript ze souboru, je atribut jazyk nepovinný. -->
-					<m:skript jazyk="perl" výstup="xml" src="skriptování-proměnné.pl"/>
+					<m:skript jazyk="perl" výstup="xhtml" src="skriptování-proměnné.pl"/>
 				</tbody>
 			</table>
-			
+
 			<p>
 				Kód:
 			</p>
-			
+
 			<m:pre jazyk="xml"><![CDATA[<m:skript jazyk="bash">
 echo "URI:    $XWG_STRANKA_URI";
@@ -136,7 +136,7 @@
 echo "Perex:  $XWG_STRANKA_PEREX";
 </m:skript>]]></m:pre>
-			
+
 			<p>nám vypíše:</p>
-			
+
 			<pre><m:skript jazyk="bash"><![CDATA[
 echo "URI:    $XWG_STRANKA_URI" | sed s/\\/home\\/$USER/\\/home\\/xwg/g;
@@ -149,5 +149,5 @@
 		<p>
 			XML generované skriptem může také obsahovat makra, která se následně interptetují.
-			<m:skript jazyk="bash" výstup="xml"><![CDATA[
+			<m:skript jazyk="bash" výstup="xhtml"><![CDATA[
 echo '<m:skript jazyk="bash">'; # Ty zrůdo! :-)
 echo 'echo "Takže můžeš skriptovat, když skriptuješ,";';
@@ -157,5 +157,5 @@
 		</p>
 		
-		<m:skript jazyk="perl" výstup="xml"><![CDATA[
+		<m:skript jazyk="perl" výstup="xhtml"><![CDATA[
 use strict;
 use warnings;
@@ -180,7 +180,7 @@
 closedir(DIR);
 		]]></m:skript>
-		
+
 		<p>…třeba vygenerovat tento diagram následujícím perlovským skriptem:</p>
-		
+
 		<m:pre jazyk="perl"><![CDATA[
 use strict;
@@ -207,5 +207,5 @@
 
 		<p>
-			Který vložíme zabalený v <code><![CDATA[<m:skript jazyk="perl" výstup="xml"> … </m:skript>]]></code> do stránky.
+			Který vložíme zabalený v <code><![CDATA[<m:skript jazyk="perl" výstup="xhtml"> … </m:skript>]]></code> do stránky.
 		</p>
 		<p>
Index: šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java
===================================================================
--- šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java	(revision 107:379a2a893fd1)
+++ šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java	(revision 108:8d9cab64c335)
@@ -41,4 +41,10 @@
 public class Skriptování {
 
+	private enum FORMÁT {
+
+		xml,
+		xhtml,
+		text
+	}
 	/**
 	 * klíč = jazyk – např. bash
@@ -71,5 +77,5 @@
 	public static Source interpretuj(String skriptText, String skriptSoubor, String jazyk, String výstupníFormát, String uriStránky, String nadpisStránky, String perexStránky) throws Exception {
 		String výstupSkriptu = získejVýstupSkriptu(skriptText, skriptSoubor, jazyk, uriStránky, nadpisStránky, perexStránky);
-		return vyrobXml(výstupSkriptu, "xml".equals(výstupníFormát));
+		return vyrobXml(výstupSkriptu, zjistiFormát(výstupníFormát));
 	}
 
@@ -170,4 +176,14 @@
 	}
 
+	private static FORMÁT zjistiFormát(String výstupníFormát) {
+		try {
+			return FORMÁT.valueOf(výstupníFormát);
+		} catch (NullPointerException e) {
+			return FORMÁT.text;
+		} catch (IllegalArgumentException e) {
+			return FORMÁT.text;
+		}
+	}
+
 	/**
 	 * @param zadání výstup vygenerovaný skriptem
@@ -176,18 +192,11 @@
 	 * @throws Exception
 	 */
-	private static Source vyrobXml(String zadání, boolean xmlFormát) throws Exception {
+	private static Source vyrobXml(String zadání, FORMÁT formát) throws Exception {
 		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 		DocumentBuilder db = dbf.newDocumentBuilder();
 		Document d;
 
-		if (xmlFormát) {
-			try {
-				zadání = "<html xmlns='" + XHTML + "' xmlns:m='" + MAKRO + "'><body>" + zadání + "</body></html>";
-				d = db.parse(new ByteArrayInputStream(zadání.getBytes()));
-			} catch (Exception e) {
-				System.err.println("Chyba: Skript vrátil neplatné XML.");
-				throw e;
-			}
-		} else {
+
+		if (formát == FORMÁT.text) {
 			d = db.newDocument();
 			Node html = d.createElementNS(XHTML, "html");
@@ -197,4 +206,14 @@
 			html.appendChild(body);
 			d.appendChild(html);
+		} else {
+			if (formát == FORMÁT.xhtml) {
+				zadání = "<html xmlns='" + XHTML + "' xmlns:m='" + MAKRO + "'><body>" + zadání + "</body></html>";
+			}
+			try {
+				d = db.parse(new ByteArrayInputStream(zadání.getBytes()));
+			} catch (Exception e) {
+				System.err.println("Chyba: Skript vrátil neplatné XML.");
+				throw e;
+			}
 		}
 
Index: šablona/makra/skriptování.xsl
===================================================================
--- šablona/makra/skriptování.xsl	(revision 107:379a2a893fd1)
+++ šablona/makra/skriptování.xsl	(revision 108:8d9cab64c335)
@@ -33,5 +33,8 @@
 		*
 		@jazyk programovací jazyk, např. bash, perl, php (nepovinné, pokud je vyplněn atribut src)
-		@výstup formát výstupu skriptu: text (výchozí) | xml (musí být validním fragmentem XML)
+		@výstup formát výstupu skriptu:
+			text – libovolný text, escapujeme (výchozí)
+			xhtml – platný XML fragment, přidáme mu výchozí jmenný prostor XHTML a jmenný prostor pro makra
+			xml – platný XML dokument – vhodné pro další zpracování v jiných makrech
 		@src soubor se skriptem/programem (volitelný parametr – buď zadáme skript do těla elementu, nebo nastavíme tento atribut)
 	-->
@@ -51,5 +54,14 @@
 																	//s:stránka/s:perex/text()
 																)"/>
-				<xsl:apply-templates select="$výstupSkriptu/h:html/h:body/node()"/>
+				<xsl:choose>
+					<xsl:when test="@výstup = 'xml'">
+						<!-- XML výstup zpracujeme, jak je: -->
+						<xsl:apply-templates select="$výstupSkriptu/*"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<!-- Prostý text a XHTML fragmenty dostáváme zabalené v html/body -->
+						<xsl:apply-templates select="$výstupSkriptu/h:html/h:body/node()"/>
+					</xsl:otherwise>
+				</xsl:choose>
 			</xsl:when>
 
@@ -60,5 +72,5 @@
 				<xsl:message>Stránka obsahuje skripty, ale skripty jsou ignorovány – změnu lze provést ve web.conf.</xsl:message>
 			</xsl:when>
-			<xsl:when test="$režim = 'vložit' and @výstup = 'xml'">
+			<xsl:when test="$režim = 'vložit' and (@výstup = 'xml' or @výstup = 'xhtml')">
 				<xsl:message>Není možné jen tak vložit text, který měl mít výstup ve formátu XML – změnu lze provést ve web.conf</xsl:message>
 			</xsl:when>
@@ -70,5 +82,5 @@
 			<xsl:otherwise><!-- varovat = výchozí možnost -->
 				<xsl:choose>
-					<xsl:when test="@výstup = 'xml'">
+					<xsl:when test="@výstup = 'xml' or @výstup = 'xhtml'">
 						<xsl:message>Není možné možné vložit varování na místo, kde měl být skript generující XML – změnu lze provést ve web.conf</xsl:message>
 					</xsl:when>
