šablona/makra/tabulka.xsl
changeset 51 df1f942f7b69
child 61 9503eb8377f1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/šablona/makra/tabulka.xsl	Fri Jan 06 20:48:42 2012 +0100
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+	    
+	<!--
+		Jednoduché tabulky
+		******************
+		Data zadáváme do těla elementu.
+		Sloupce oddělujeme tabulátorem (může jich být víc, minimálně však jeden, mezery nestačí).
+		První řádek se považuje za záhlaví (nadpisy sloupců).
+		*
+	-->
+    <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(.)">
+							<td><xsl:value-of select="normalize-space(.)"/></td>
+						</xsl:if>
+					</xsl:for-each>
+    			</tr>
+    		</thead>
+    		<tbody>
+				<xsl:for-each select="tokenize($tělo, '\n')">
+					<xsl:if test="normalize-space(.)">
+						<tr>
+							<xsl:for-each select="tokenize(., '\t+')">
+								<xsl:if test="normalize-space(.)">
+									<td><xsl:value-of select="normalize-space(.)"/></td>
+								</xsl:if>
+							</xsl:for-each>
+						</tr>
+					</xsl:if>
+				</xsl:for-each>
+    		</tbody>
+    	</table>    
+    </xsl:template>
+
+</xsl:stylesheet>
+