šablona/makra/tabulka.xsl
author František Kučera <franta-hg@frantovo.cz>
Sat, 07 Jan 2012 19:39:28 +0100
changeset 70 032c62852ef1
parent 61 9503eb8377f1
child 71 895757141bff
permissions -rw-r--r--
Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
     1
<?xml version="1.0" encoding="UTF-8"?>
61
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
     2
<!--
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
     3
XML Web generátor – program na generování webových stránek
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
     4
Copyright © 2012 František Kučera (frantovo.cz)
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
     5
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
     6
This program is free software: you can redistribute it and/or modify
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
     7
it under the terms of the GNU General Public License as published by
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
     8
the Free Software Foundation, either version 3 of the License, or
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
     9
(at your option) any later version.
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
    10
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
    11
This program is distributed in the hope that it will be useful,
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
    12
but WITHOUT ANY WARRANTY; without even the implied warranty of
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
    13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
    14
GNU General Public License for more details.
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
    15
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
    16
You should have received a copy of the GNU General Public License
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
    17
along with this program.  If not, see <http://www.gnu.org/licenses/>.
9503eb8377f1 Licence: informace o licenci v každém souboru.
František Kučera <franta-hg@frantovo.cz>
parents: 51
diff changeset
    18
-->
51
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    19
<xsl:stylesheet version="2.0"
70
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    20
xmlns="http://www.w3.org/1999/xhtml"
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    21
xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    22
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    23
exclude-result-prefixes="m">
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    24
51
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    25
	<!--
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    26
		Jednoduché tabulky
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    27
		******************
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    28
		Data zadáváme do těla elementu.
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    29
		Sloupce oddělujeme tabulátorem (může jich být víc, minimálně však jeden, mezery nestačí).
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    30
		První řádek se považuje za záhlaví (nadpisy sloupců).
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    31
		*
70
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    32
		@src volitelně můžeme data tabulky načítat ze souboru 
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    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) 
51
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    34
	-->
70
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    35
	<xsl:template match="m:tabulka">
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    36
		<xsl:call-template name="vykresliTabulku">
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    37
			<xsl:with-param name="zadání" select="text()"/>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    38
			<xsl:with-param name="oddělovač" select="(@oddělovač, '\t+')[1]"/>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    39
		</xsl:call-template>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    40
	</xsl:template>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    41
	
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    42
	<xsl:template match="m:tabulka[@src]">
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    43
		<xsl:call-template name="vykresliTabulku">
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    44
			<xsl:with-param name="zadání" select="unparsed-text(concat('../', $vstup, @src))"/>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    45
			<xsl:with-param name="oddělovač" select="(@oddělovač, ';')[1]"/>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    46
		</xsl:call-template>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    47
	</xsl:template>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    48
	
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    49
	<xsl:template name="vykresliTabulku">
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    50
		<xsl:param name="zadání"/>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    51
		<xsl:param name="oddělovač"/>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    52
		<table>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    53
			<xsl:variable name="data" select="replace(replace($zadání, '^\s+', ''),'\s+$','')"/>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    54
			<xsl:variable name="hlavička" select="substring-before($data, '&#10;')"/>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    55
			<xsl:variable name="tělo" select="substring-after($data, '&#10;')"/>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    56
			<thead>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    57
				<tr>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    58
					<xsl:for-each select="tokenize($hlavička, $oddělovač)">
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    59
						<xsl:if test="normalize-space(.)">
51
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    60
							<td><xsl:value-of select="normalize-space(.)"/></td>
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    61
						</xsl:if>
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    62
					</xsl:for-each>
70
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    63
				</tr>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    64
			</thead>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    65
			<tbody>
51
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    66
				<xsl:for-each select="tokenize($tělo, '\n')">
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    67
					<xsl:if test="normalize-space(.)">
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    68
						<tr>
70
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    69
							<xsl:for-each select="tokenize(., $oddělovač)">
51
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    70
								<xsl:if test="normalize-space(.)">
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    71
									<td><xsl:value-of select="normalize-space(.)"/></td>
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    72
								</xsl:if>
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    73
							</xsl:for-each>
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    74
						</tr>
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    75
					</xsl:if>
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    76
				</xsl:for-each>
70
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    77
			</tbody>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    78
		</table>
032c62852ef1 Tabulky #15: data tabulky můžeme načítat i ze souboru + můžeme určit oddělovač.
František Kučera <franta-hg@frantovo.cz>
parents: 61
diff changeset
    79
	</xsl:template>
51
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    80
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    81
</xsl:stylesheet>
df1f942f7b69 Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
František Kučera <franta-hg@frantovo.cz>
parents:
diff changeset
    82