1 <?xml version="1.0" encoding="UTF-8"?>
3 XML Web generátor – program na generování webových stránek
4 Copyright © 2012 František Kučera (frantovo.cz)
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
19 <xsl:stylesheet version="2.0"
20 xmlns="http://www.w3.org/1999/xhtml"
21 xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
22 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
23 exclude-result-prefixes="m">
28 Data zadáváme do těla elementu.
29 Sloupce oddělujeme tabulátorem (může jich být víc, minimálně však jeden, mezery nestačí).
30 První řádek se považuje za záhlaví (nadpisy sloupců).
32 @src volitelně můžeme data tabulky načítat ze souboru
33 @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)
35 <xsl:template match="m:tabulka">
36 <xsl:call-template name="vykresliTabulku">
37 <xsl:with-param name="zadání" select="text()"/>
38 <xsl:with-param name="oddělovač" select="(@oddělovač, '\t+')[1]"/>
42 <xsl:template match="m:tabulka[@src]">
43 <xsl:call-template name="vykresliTabulku">
44 <xsl:with-param name="zadání" select="m:načti-textový-soubor(@src)"/>
45 <xsl:with-param name="oddělovač" select="(@oddělovač, ';')[1]"/>
49 <xsl:template name="vykresliTabulku">
50 <xsl:param name="zadání"/>
51 <xsl:param name="oddělovač"/>
53 <xsl:variable name="data" select="replace(replace($zadání, '^\s+', ''),'\s+$','')"/>
54 <xsl:variable name="hlavička" select="substring-before($data, ' ')"/>
55 <xsl:variable name="tělo" select="substring-after($data, ' ')"/>
58 <xsl:for-each select="tokenize($hlavička, $oddělovač)">
59 <xsl:if test="normalize-space(.)">
60 <td><xsl:value-of select="normalize-space(.)"/></td>
66 <xsl:for-each select="tokenize($tělo, '\n')">
67 <xsl:if test="normalize-space(.)">
69 <xsl:for-each select="tokenize(., $oddělovač)">
70 <xsl:if test="normalize-space(.)">
71 <td><xsl:value-of select="normalize-space(.)"/></td>