Changeset 70:032c62852ef1
- Timestamp:
- 01/07/12 19:39:28 (13 years ago)
- Branch:
- default
- Files:
-
- 1 added
- 2 modified
Legend:
- Unmodified
- Added
- Removed
-
vstup/kontakt.xml
r36 r70 51 51 Ale protože je to tajné, tak vám neřekneme, co A, B a C znamenají. 52 52 </p> 53 54 <h2>Telefonní seznam</h2> 55 56 <p> 57 Můžete nám kdykoli zavolat: 58 </p> 59 60 <m:tabulka src="telefonní-seznam.csv"/> 53 61 54 62 </text> -
šablona/makra/tabulka.xsl
r61 r70 18 18 --> 19 19 <xsl:stylesheet version="2.0" 20 21 22 23 24 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"> 24 25 25 <!-- 26 26 Jednoduché tabulky … … 30 30 První řádek se považuje za záhlaví (nadpisy sloupců). 31 31 * 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) 32 34 --> 33 <xsl:template match="m:tabulka"> 34 <table> 35 <xsl:variable name="data" select="replace(replace(text(), '^\s+', ''),'\s+$','')"/> 36 <xsl:variable name="hlavička" select="substring-before($data, ' ')"/> 37 <xsl:variable name="tělo" select="substring-after($data, ' ')"/> 38 <thead> 39 <tr> 40 <xsl:for-each select="tokenize($hlavička, '\t+')"> 41 <xsl:if test="normalize-space(.)"> 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]"/> 39 </xsl:call-template> 40 </xsl:template> 41 42 <xsl:template match="m:tabulka[@src]"> 43 <xsl:call-template name="vykresliTabulku"> 44 <xsl:with-param name="zadání" select="unparsed-text(concat('../', $vstup, @src))"/> 45 <xsl:with-param name="oddělovač" select="(@oddělovač, ';')[1]"/> 46 </xsl:call-template> 47 </xsl:template> 48 49 <xsl:template name="vykresliTabulku"> 50 <xsl:param name="zadání"/> 51 <xsl:param name="oddělovač"/> 52 <table> 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, ' ')"/> 56 <thead> 57 <tr> 58 <xsl:for-each select="tokenize($hlavička, $oddělovač)"> 59 <xsl:if test="normalize-space(.)"> 42 60 <td><xsl:value-of select="normalize-space(.)"/></td> 43 61 </xsl:if> 44 62 </xsl:for-each> 45 46 47 63 </tr> 64 </thead> 65 <tbody> 48 66 <xsl:for-each select="tokenize($tělo, '\n')"> 49 67 <xsl:if test="normalize-space(.)"> 50 68 <tr> 51 <xsl:for-each select="tokenize(., '\t+')">69 <xsl:for-each select="tokenize(., $oddělovač)"> 52 70 <xsl:if test="normalize-space(.)"> 53 71 <td><xsl:value-of select="normalize-space(.)"/></td> … … 57 75 </xsl:if> 58 76 </xsl:for-each> 59 60 </table> 61 77 </tbody> 78 </table> 79 </xsl:template> 62 80 63 81 </xsl:stylesheet>