Index: vstup/kontakt.xml
===================================================================
--- vstup/kontakt.xml	(revision 36:5be21d1ef5f8)
+++ vstup/kontakt.xml	(revision 70:032c62852ef1)
@@ -51,4 +51,12 @@
 			Ale protože je to tajné, tak vám neřekneme, co A, B a C znamenají.
 		</p>
+		
+		<h2>Telefonní seznam</h2>
+		
+		<p>
+			Můžete nám kdykoli zavolat:
+		</p>
+		
+		<m:tabulka src="telefonní-seznam.csv"/>
 
 	</text>
Index: vstup/telefonní-seznam.csv
===================================================================
--- vstup/telefonní-seznam.csv	(revision 70:032c62852ef1)
+++ vstup/telefonní-seznam.csv	(revision 70:032c62852ef1)
@@ -0,0 +1,6 @@
+Osoba;Místnost;Telefon
+pan továrník (majitel);1;+420 604 123456
+pan ředitel;2;+420 604 123654
+slečna sekretářka;2;+420 604 123465
+Linuxový guru;3;+420 604 123546
+Softwarový architekt;4;+420 604 123645
Index: šablona/makra/tabulka.xsl
===================================================================
--- šablona/makra/tabulka.xsl	(revision 61:9503eb8377f1)
+++ šablona/makra/tabulka.xsl	(revision 70:032c62852ef1)
@@ -18,9 +18,9 @@
 -->
 <xsl:stylesheet version="2.0"
-	xmlns="http://www.w3.org/1999/xhtml"
-	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
-	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-	exclude-result-prefixes="m">
-	    
+xmlns="http://www.w3.org/1999/xhtml"
+xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+exclude-result-prefixes="m">
+
 	<!--
 		Jednoduché tabulky
@@ -30,24 +30,42 @@
 		První řádek se považuje za záhlaví (nadpisy sloupců).
 		*
+		@src volitelně můžeme data tabulky načítat ze souboru 
+		@oddělovač regulární výraz, který odděluje sloupce – např. „\t+“ pro tabulátory (výchozí pro tabulky vložené přímo do stránky) nebo „;“ pro středník (výchozí pro tabulky načítané ze souboru) 
 	-->
-    <xsl:template match="m:tabulka">
-    	<table>
-    		<xsl:variable name="data" select="replace(replace(text(), '^\s+', ''),'\s+$','')"/>
-    		<xsl:variable name="hlavička" select="substring-before($data, '&#10;')"/>
-    		<xsl:variable name="tělo" select="substring-after($data, '&#10;')"/>
-    		<thead>
-    			<tr>
-    				<xsl:for-each select="tokenize($hlavička, '\t+')">
-    					<xsl:if test="normalize-space(.)">
+	<xsl:template match="m:tabulka">
+		<xsl:call-template name="vykresliTabulku">
+			<xsl:with-param name="zadání" select="text()"/>
+			<xsl:with-param name="oddělovač" select="(@oddělovač, '\t+')[1]"/>
+		</xsl:call-template>
+	</xsl:template>
+	
+	<xsl:template match="m:tabulka[@src]">
+		<xsl:call-template name="vykresliTabulku">
+			<xsl:with-param name="zadání" select="unparsed-text(concat('../', $vstup, @src))"/>
+			<xsl:with-param name="oddělovač" select="(@oddělovač, ';')[1]"/>
+		</xsl:call-template>
+	</xsl:template>
+	
+	<xsl:template name="vykresliTabulku">
+		<xsl:param name="zadání"/>
+		<xsl:param name="oddělovač"/>
+		<table>
+			<xsl:variable name="data" select="replace(replace($zadání, '^\s+', ''),'\s+$','')"/>
+			<xsl:variable name="hlavička" select="substring-before($data, '&#10;')"/>
+			<xsl:variable name="tělo" select="substring-after($data, '&#10;')"/>
+			<thead>
+				<tr>
+					<xsl:for-each select="tokenize($hlavička, $oddělovač)">
+						<xsl:if test="normalize-space(.)">
 							<td><xsl:value-of select="normalize-space(.)"/></td>
 						</xsl:if>
 					</xsl:for-each>
-    			</tr>
-    		</thead>
-    		<tbody>
+				</tr>
+			</thead>
+			<tbody>
 				<xsl:for-each select="tokenize($tělo, '\n')">
 					<xsl:if test="normalize-space(.)">
 						<tr>
-							<xsl:for-each select="tokenize(., '\t+')">
+							<xsl:for-each select="tokenize(., $oddělovač)">
 								<xsl:if test="normalize-space(.)">
 									<td><xsl:value-of select="normalize-space(.)"/></td>
@@ -57,7 +75,7 @@
 					</xsl:if>
 				</xsl:for-each>
-    		</tbody>
-    	</table>    
-    </xsl:template>
+			</tbody>
+		</table>
+	</xsl:template>
 
 </xsl:stylesheet>
