Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
authorFrantišek Kučera <franta-hg@frantovo.cz>
Fri Jan 06 20:48:42 2012 +0100 (2012-01-06)
changeset 51df1f942f7b69
parent 50 ae8222d2c903
child 52 a221785fe3ac
Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
→ nová makra není potřeba nikde registrovat, prostě vytvoříme nový soubor v adresáři
šablona/makra nebo
vstup/makra
a spustíme „ant makra“ – vygenruje se „šablona/.makra-seznam.xsl“ který se vloží do šablony stránky.
.hgignore
build.xml
vstup/makra.xsl
vstup/makra/měřák.xsl
šablona/makra.xsl
šablona/makra/diagramy.xsl
šablona/makra/odkazy.xsl
šablona/makra/tabulka.xsl
šablona/makra/vycpávka.xsl
šablona/makra/wiki.xsl
šablona/makra/zvýraznění-syntaxe.xsl
šablona/stránka-společné.xsl
šablona/stránka.xsl
     1.1 --- a/.hgignore	Thu Jan 05 16:24:56 2012 +0100
     1.2 +++ b/.hgignore	Fri Jan 06 20:48:42 2012 +0100
     1.3 @@ -1,6 +1,7 @@
     1.4  temp/*
     1.5  výstup/*
     1.6  šablona/funkce/build/*
     1.7 +šablona/.makra-seznam.xsl
     1.8  vstup/.seznam.xml
     1.9  analýza/princip.png
    1.10  nbproject/private
     2.1 --- a/build.xml	Thu Jan 05 16:24:56 2012 +0100
     2.2 +++ b/build.xml	Fri Jan 06 20:48:42 2012 +0100
     2.3 @@ -4,6 +4,7 @@
     2.4  	<property name="vstup" value="vstup"/>
     2.5  	<property name="výstup" value="výstup"/>
     2.6  	<property name="šablona" value="šablona"/>
     2.7 +	<property name="seznamMaker" value="${šablona}/.makra-seznam.xsl"/>
     2.8  	<property name="temp" value="temp"/>
     2.9  	<property name="funkce" value="${šablona}/funkce/build/classes"/>
    2.10  	
    2.11 @@ -13,7 +14,7 @@
    2.12  	<target	name="generuj" description="Vygeneruje kompletní web." depends="agregace,stránky">
    2.13  	</target>
    2.14  	
    2.15 -	<target name="stránky" description="Vygeneruje samotné XHTML webové stránky." depends="statický-obsah,syntaxe,kompiluj-funkce">		
    2.16 +	<target name="stránky" description="Vygeneruje samotné XHTML webové stránky." depends="statický-obsah,syntaxe,kompiluj-funkce,makra">		
    2.17  		<xslt basedir="${vstup}" destdir="${výstup}" includes="*${vstupníPřípona}" extension="${výstupníPřípona}" style="${šablona}/stránka.xsl" processor="org.apache.tools.ant.taskdefs.optional.TraXLiaison">
    2.18  			<param name="konfigurák" expression="../${vstup}/"/>		
    2.19  			<param name="podporaZaostalýchProhlížečů" expression="false"/>
    2.20 @@ -37,6 +38,16 @@
    2.21  		</xslt>
    2.22  	</target>
    2.23  	
    2.24 +	<target name="makra" description="Vygeneruje seznam maker podle souborů v příslušných složkách" depends="kompiluj-funkce">
    2.25 +		<xslt in="${vstup}/web.conf" out="${seznamMaker}" style="${šablona}/makra.xsl" processor="org.apache.tools.ant.taskdefs.optional.TraXLiaison">
    2.26 +			<classpath location="/usr/share/java/saxonb-9.0.jar"/>
    2.27 +			<classpath location="${funkce}"/>
    2.28 +			<factory name="net.sf.saxon.TransformerFactoryImpl">
    2.29 +				<attribute name="http://saxon.sf.net/feature/allow-external-functions" value="true"/>				
    2.30 +			</factory>
    2.31 +		</xslt>
    2.32 +	</target>
    2.33 +	
    2.34  	<target name="agregace" description="Vytvoří agregované výstupy: RSS, Atom, Sitemap.xml." depends="kompiluj-funkce">
    2.35  		<!-- TODO: sloučit, zjednodušit, parametrizovat -->
    2.36  	
    2.37 @@ -99,6 +110,7 @@
    2.38  		<delete includeemptydirs="true">
    2.39  			<fileset dir="${výstup}" includes="**/*"/>
    2.40  			<fileset dir="${funkce}" includes="**/*"/>
    2.41 +			<fileset file="${seznamMaker}"/>
    2.42  		</delete>
    2.43  	</target>
    2.44  	
     3.1 --- a/vstup/makra.xsl	Thu Jan 05 16:24:56 2012 +0100
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,33 +0,0 @@
     3.4 -<?xml version="1.0" encoding="UTF-8"?>
     3.5 -<xsl:stylesheet version="2.0"
     3.6 -	xmlns="http://www.w3.org/1999/xhtml"
     3.7 -	xmlns:h="http://www.w3.org/1999/xhtml"
     3.8 -	xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
     3.9 -	xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
    3.10 -	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
    3.11 -	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    3.12 -	xmlns:fn="http://www.w3.org/2005/xpath-functions"
    3.13 -	xmlns:svg="http://www.w3.org/2000/svg"
    3.14 -	xmlns:xs="http://www.w3.org/2001/XMLSchema"
    3.15 -	exclude-result-prefixes="fn h s k m xs">
    3.16 -    
    3.17 -    <!-- Ukázka vlastního „makra“: -->
    3.18 -    <xsl:template match="m:měřák">
    3.19 -    	<xsl:variable name="hodnota" select="number(@hodnota)"/>
    3.20 -    	<xsl:variable name="šířkaGrafu" select="128"/>
    3.21 -		<xsl:choose>			
    3.22 -			<xsl:when test="$hodnota &gt;= 0 and $hodnota &lt;= 100">				
    3.23 -				<div style="border: 1px solid black; width: {$šířkaGrafu}px; height: 16px; padding: 0px; text-align: center; background-color: #cfc;">			
    3.24 -					<div style="margin: 0px; background-color: #A4E666; width: {@hodnota*$šířkaGrafu div 100}px; height: 16px;"><xsl:call-template name="varováníRetardace"/></div>
    3.25 -					<p style="margin: 0px; font-size: 12px; position: relative; top: -15px;">
    3.26 -						<xsl:value-of select="@hodnota"/>/100
    3.27 -					</p>	
    3.28 -				</div>
    3.29 -			</xsl:when>
    3.30 -			<xsl:otherwise>
    3.31 -				<xsl:message terminate="yes">Hodnota měřáku musí být nejméně 0 a nejvíce 100 (udává procenta).</xsl:message>
    3.32 -			</xsl:otherwise>
    3.33 -		</xsl:choose>
    3.34 -	</xsl:template>
    3.35 -
    3.36 -</xsl:stylesheet>
    3.37 \ No newline at end of file
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/vstup/makra/měřák.xsl	Fri Jan 06 20:48:42 2012 +0100
     4.3 @@ -0,0 +1,33 @@
     4.4 +<?xml version="1.0" encoding="UTF-8"?>
     4.5 +<xsl:stylesheet version="2.0"
     4.6 +	xmlns="http://www.w3.org/1999/xhtml"
     4.7 +	xmlns:h="http://www.w3.org/1999/xhtml"
     4.8 +	xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
     4.9 +	xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
    4.10 +	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
    4.11 +	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    4.12 +	xmlns:fn="http://www.w3.org/2005/xpath-functions"
    4.13 +	xmlns:svg="http://www.w3.org/2000/svg"
    4.14 +	xmlns:xs="http://www.w3.org/2001/XMLSchema"
    4.15 +	exclude-result-prefixes="fn h s k m xs">
    4.16 +    
    4.17 +    <!-- Ukázka vlastního „makra“: -->
    4.18 +    <xsl:template match="m:měřák">
    4.19 +    	<xsl:variable name="hodnota" select="number(@hodnota)"/>
    4.20 +    	<xsl:variable name="šířkaGrafu" select="128"/>
    4.21 +		<xsl:choose>			
    4.22 +			<xsl:when test="$hodnota &gt;= 0 and $hodnota &lt;= 100">				
    4.23 +				<div style="border: 1px solid black; width: {$šířkaGrafu}px; height: 16px; padding: 0px; text-align: center; background-color: #cfc;">			
    4.24 +					<div style="margin: 0px; background-color: #A4E666; width: {@hodnota*$šířkaGrafu div 100}px; height: 16px;"><xsl:call-template name="varováníRetardace"/></div>
    4.25 +					<p style="margin: 0px; font-size: 12px; position: relative; top: -15px;">
    4.26 +						<xsl:value-of select="@hodnota"/>/100
    4.27 +					</p>	
    4.28 +				</div>
    4.29 +			</xsl:when>
    4.30 +			<xsl:otherwise>
    4.31 +				<xsl:message terminate="yes">Hodnota měřáku musí být nejméně 0 a nejvíce 100 (udává procenta).</xsl:message>
    4.32 +			</xsl:otherwise>
    4.33 +		</xsl:choose>
    4.34 +	</xsl:template>
    4.35 +
    4.36 +</xsl:stylesheet>
    4.37 \ No newline at end of file
     5.1 --- a/šablona/makra.xsl	Thu Jan 05 16:24:56 2012 +0100
     5.2 +++ b/šablona/makra.xsl	Fri Jan 06 20:48:42 2012 +0100
     5.3 @@ -1,1 +1,30 @@
     5.4 -../vstup/makra.xsl
     5.5 \ No newline at end of file
     5.6 +<?xml version="1.0" encoding="UTF-8"?>
     5.7 +<xsl:stylesheet version="2.0"
     5.8 +	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     5.9 +	xmlns:XSL="http://example.com/XSL">
    5.10 +	<xsl:output	method="xml" indent="yes" encoding="UTF-8" />
    5.11 +	<xsl:namespace-alias stylesheet-prefix="XSL" result-prefix="xsl"/>
    5.12 +	
    5.13 +	<xsl:template match="/">
    5.14 +		<XSL:stylesheet version="2.0">
    5.15 +		<xsl:text>
    5.16 +</xsl:text>
    5.17 +		<xsl:comment>
    5.18 +	Tento seznam maker je automaticky generovaný.
    5.19 +	Neupravujte ho ručně – použijte příkaz „ant makra“.
    5.20 +</xsl:comment>
    5.21 +		<xsl:text>
    5.22 +   </xsl:text>
    5.23 +			<!-- Makra dodávaná jako součást programu: -->
    5.24 +			<xsl:for-each select="collection('./makra/?select=*.xsl')">
    5.25 +				<XSL:include href="{document-uri(.)}"/>
    5.26 +			</xsl:for-each>
    5.27 +			
    5.28 +			<!-- Uživatelská makra -->
    5.29 +			<xsl:for-each select="collection('../vstup/makra/?select=*.xsl')">
    5.30 +				<XSL:include href="{document-uri(.)}"/>
    5.31 +			</xsl:for-each>
    5.32 +		</XSL:stylesheet>
    5.33 +	</xsl:template>
    5.34 +	
    5.35 +</xsl:stylesheet>
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/šablona/makra/diagramy.xsl	Fri Jan 06 20:48:42 2012 +0100
     6.3 @@ -0,0 +1,53 @@
     6.4 +<?xml version="1.0" encoding="UTF-8"?>
     6.5 +<xsl:stylesheet version="2.0"
     6.6 +	xmlns="http://www.w3.org/1999/xhtml"
     6.7 +	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
     6.8 +	xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce"
     6.9 +	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    6.10 +	exclude-result-prefixes="m j">
    6.11 +    
    6.12 +    <!--
    6.13 +    	Diagramy/grafy
    6.14 +    	**************
    6.15 +    	Můžeme vložit diagram – obrázek.
    6.16 +    	Pro jejich vykreslování se používá Graphviz – diagramy zadáváme v jeho syntaxi.
    6.17 +    	*
    6.18 +    	@orientace „vodorovně“ nebo „svisle“ (výchozí)
    6.19 +    	@nadpis můžeme uvést název diagramu
    6.20 +    -->
    6.21 +    <xsl:template match="m:diagram">
    6.22 +    	<!-- 
    6.23 +    		TODO: umožnit vkládání diagramů ze souboru (@src) 
    6.24 +    	-->
    6.25 +    	<xsl:variable name="souborDiagramu" select="j:vytvořDiagram(text(), @orientace = 'vodorovně')"/>
    6.26 +    	<xsl:choose>
    6.27 +			<xsl:when test="$souborDiagramu">
    6.28 +				<div class="diagram">
    6.29 +					<a href="{$souborDiagramu}.svg">
    6.30 +						<img
    6.31 +							src="{$souborDiagramu}.svg" 
    6.32 +							alt="Diagram {$souborDiagramu} | pokud nevidíte obrázek, váš prohlížeč stojí za starou bačkoru"
    6.33 +							title="{@nadpis} (klikněte pro zobrazení samotného diagramu)"/>
    6.34 +					</a>
    6.35 +					<!-- 
    6.36 +						TODO: SVG+PNG:
    6.37 +						<xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/>
    6.38 +						<object
    6.39 +							data="{$souborDiagramu}.svg"
    6.40 +							type="image/svg+xml"
    6.41 +							style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}">
    6.42 +								<img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/>
    6.43 +						</object>
    6.44 +					-->
    6.45 +					<xsl:if test="@nadpis">
    6.46 +						<p class="nadpis"><xsl:value-of select="@nadpis"/></p>
    6.47 +					</xsl:if>
    6.48 +				</div>
    6.49 +			</xsl:when>
    6.50 +			<xsl:otherwise>
    6.51 +				<xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message>
    6.52 +			</xsl:otherwise>
    6.53 +    	</xsl:choose>
    6.54 +    </xsl:template>
    6.55 +
    6.56 +</xsl:stylesheet>
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/šablona/makra/odkazy.xsl	Fri Jan 06 20:48:42 2012 +0100
     7.3 @@ -0,0 +1,23 @@
     7.4 +<?xml version="1.0" encoding="UTF-8"?>
     7.5 +<xsl:stylesheet version="2.0"
     7.6 +	xmlns="http://www.w3.org/1999/xhtml"
     7.7 +	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
     7.8 +	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     7.9 +	exclude-result-prefixes="m">
    7.10 +   
    7.11 +    <!--
    7.12 +    	Makro pro převod interních odkazů:
    7.13 +    		- doplnění správné přípony
    7.14 +    		- URL kódování znaků
    7.15 +    -->
    7.16 +    <xsl:template match="m:a">
    7.17 +    	<a>
    7.18 +    		<xsl:copy-of select="@*"/>
    7.19 +    		<xsl:attribute name="href">
    7.20 +    			<xsl:value-of select="encode-for-uri(concat(@href, $výstupníPřípona))"/>
    7.21 +    		</xsl:attribute>
    7.22 +    		<xsl:apply-templates/>
    7.23 +    	</a>
    7.24 +    </xsl:template>
    7.25 +    
    7.26 +</xsl:stylesheet>
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/šablona/makra/tabulka.xsl	Fri Jan 06 20:48:42 2012 +0100
     8.3 @@ -0,0 +1,47 @@
     8.4 +<?xml version="1.0" encoding="UTF-8"?>
     8.5 +<xsl:stylesheet version="2.0"
     8.6 +	xmlns="http://www.w3.org/1999/xhtml"
     8.7 +	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
     8.8 +	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     8.9 +	exclude-result-prefixes="m">
    8.10 +	    
    8.11 +	<!--
    8.12 +		Jednoduché tabulky
    8.13 +		******************
    8.14 +		Data zadáváme do těla elementu.
    8.15 +		Sloupce oddělujeme tabulátorem (může jich být víc, minimálně však jeden, mezery nestačí).
    8.16 +		První řádek se považuje za záhlaví (nadpisy sloupců).
    8.17 +		*
    8.18 +	-->
    8.19 +    <xsl:template match="m:tabulka">
    8.20 +    	<table>
    8.21 +    		<xsl:variable name="data" select="replace(replace(text(), '^\s+', ''),'\s+$','')"/>
    8.22 +    		<xsl:variable name="hlavička" select="substring-before($data, '&#10;')"/>
    8.23 +    		<xsl:variable name="tělo" select="substring-after($data, '&#10;')"/>
    8.24 +    		<thead>
    8.25 +    			<tr>
    8.26 +    				<xsl:for-each select="tokenize($hlavička, '\t+')">
    8.27 +    					<xsl:if test="normalize-space(.)">
    8.28 +							<td><xsl:value-of select="normalize-space(.)"/></td>
    8.29 +						</xsl:if>
    8.30 +					</xsl:for-each>
    8.31 +    			</tr>
    8.32 +    		</thead>
    8.33 +    		<tbody>
    8.34 +				<xsl:for-each select="tokenize($tělo, '\n')">
    8.35 +					<xsl:if test="normalize-space(.)">
    8.36 +						<tr>
    8.37 +							<xsl:for-each select="tokenize(., '\t+')">
    8.38 +								<xsl:if test="normalize-space(.)">
    8.39 +									<td><xsl:value-of select="normalize-space(.)"/></td>
    8.40 +								</xsl:if>
    8.41 +							</xsl:for-each>
    8.42 +						</tr>
    8.43 +					</xsl:if>
    8.44 +				</xsl:for-each>
    8.45 +    		</tbody>
    8.46 +    	</table>    
    8.47 +    </xsl:template>
    8.48 +
    8.49 +</xsl:stylesheet>
    8.50 +
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/šablona/makra/vycpávka.xsl	Fri Jan 06 20:48:42 2012 +0100
     9.3 @@ -0,0 +1,26 @@
     9.4 +<?xml version="1.0" encoding="UTF-8"?>
     9.5 +<xsl:stylesheet version="2.0"
     9.6 +	xmlns="http://www.w3.org/1999/xhtml"
     9.7 +	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
     9.8 +	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     9.9 +	exclude-result-prefixes="m">
    9.10 +	
    9.11 +	<!--
    9.12 +		Vycpávkový text
    9.13 +		***************
    9.14 +		Vkládá Lorem Ipsum.
    9.15 +		*
    9.16 +		@odstavců počet odstavců k vložení		
    9.17 +	-->
    9.18 +	<xsl:template match="m:vycpávka">
    9.19 +    	<!-- 
    9.20 +    		TODO: stáhnout jen jednou, uložit do souboru a při dalších generováních brát z něj.
    9.21 +    	-->
    9.22 +    	<xsl:message>Stahuji vycpávkový text z http://lipsum.lipsum.com/</xsl:message>
    9.23 +    	<xsl:variable name="prostýText" select="document(concat('http://lipsum.lipsum.com/feed/xml?amount=', @odstavců, '&amp;what=paragraphs'))/feed/lipsum"/>
    9.24 +    	<xsl:for-each select="tokenize($prostýText, '\n')">
    9.25 +    		<p><xsl:value-of select="."/></p>
    9.26 +    	</xsl:for-each>
    9.27 +    </xsl:template>
    9.28 +
    9.29 +</xsl:stylesheet>
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/šablona/makra/wiki.xsl	Fri Jan 06 20:48:42 2012 +0100
    10.3 @@ -0,0 +1,28 @@
    10.4 +<?xml version="1.0" encoding="UTF-8"?>
    10.5 +<xsl:stylesheet version="2.0"
    10.6 +	xmlns="http://www.w3.org/1999/xhtml"
    10.7 +	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
    10.8 +	xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce"
    10.9 +	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   10.10 +	exclude-result-prefixes="m j">
   10.11 +
   10.12 +    <!--
   10.13 +    	Wiki syntaxe
   10.14 +    	************
   10.15 +    	Text nemusíme vkládat v (X)HTML, ale můžeme ho uzavřít do této značky a používat „wiki“ syntaxi.
   10.16 +    	*
   10.17 +    	@syntaxe nepovinný atribut (zatím je podporován jen markdown procesor).
   10.18 +    -->
   10.19 +    <xsl:template match="m:wiki">
   10.20 +    	<xsl:variable name="wikiXHTML" select="j:formátujWiki(text(), @syntaxe)"/>
   10.21 +    	<xsl:choose>
   10.22 +			<xsl:when test="$wikiXHTML">
   10.23 +				<xsl:value-of select="$wikiXHTML" disable-output-escaping="yes"/>
   10.24 +			</xsl:when>
   10.25 +			<xsl:otherwise>
   10.26 +				<xsl:message terminate="yes">Při zpracování wiki syntaxe došlo k chybě.</xsl:message>
   10.27 +			</xsl:otherwise>
   10.28 +		</xsl:choose>
   10.29 +    </xsl:template>
   10.30 +
   10.31 +</xsl:stylesheet>
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/šablona/makra/zvýraznění-syntaxe.xsl	Fri Jan 06 20:48:42 2012 +0100
    11.3 @@ -0,0 +1,50 @@
    11.4 +<?xml version="1.0" encoding="UTF-8"?>
    11.5 +<xsl:stylesheet version="2.0"
    11.6 +	xmlns="http://www.w3.org/1999/xhtml"
    11.7 +	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
    11.8 +	xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce"
    11.9 +	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   11.10 +	exclude-result-prefixes="m j">
   11.11 +
   11.12 +    <!--
   11.13 +    	Zvýraznění syntaxe zdrojového kódu
   11.14 +    	**********************************
   11.15 +    	Ukázky zdrojového kódu budou mít zvýrazněnou syntaxi pro větší přehlednost.
   11.16 +    	*
   11.17 +    	@jazyk programovací jazyk, ve kterém je daný zdrojový kód 
   11.18 +    	@src zdrojový kód nemusí být uvnitř elementu, ale můžeme se odkázat na externí soubor
   11.19 +    	@odkaz nastavíme hodnotu „ano“, pokud chceme vložit odkaz na soubor je stažení
   11.20 +    -->    
   11.21 +    <xsl:template match="m:pre">
   11.22 +    	<xsl:call-template name="zvýrazniZdroják">
   11.23 +    		<xsl:with-param name="zdroják" select="text()"/>
   11.24 +    	</xsl:call-template>
   11.25 +    </xsl:template>
   11.26 +    
   11.27 +    <xsl:template match="m:pre[@src]">
   11.28 +    	<xsl:call-template name="zvýrazniZdroják">
   11.29 +    		<xsl:with-param name="zdroják" select="unparsed-text(concat('../', $vstup, @src))"/>
   11.30 +    	</xsl:call-template>
   11.31 +		<xsl:if test="@odkaz = 'ano'">
   11.32 +			<p class="zdroják-ke-stažení">
   11.33 +				<span>Stáhnout: <a href="{encode-for-uri(@src)}"><xsl:value-of select="@src"/></a></span>
   11.34 +			</p>
   11.35 +		</xsl:if>
   11.36 +    </xsl:template>
   11.37 +    
   11.38 +    <xsl:template name="zvýrazniZdroják">
   11.39 +    	<xsl:param name="zdroják"/>
   11.40 +    	<xsl:variable name="zvýrazněnýZdroják" select="j:zvýrazniSyntaxi($zdroják, @jazyk)"/>
   11.41 +    	<xsl:choose>
   11.42 +    		<xsl:when test="$zvýrazněnýZdroják">
   11.43 +    			<xsl:comment>Následující kód je v jazyce <xsl:value-of select="@jazyk"/></xsl:comment>
   11.44 +    			<xsl:value-of disable-output-escaping="yes" select="$zvýrazněnýZdroják"/>
   11.45 +    		</xsl:when>
   11.46 +    		<xsl:otherwise>
   11.47 +    			<xsl:message>Zvýraznění syntaxe se nezdařilo → bude vložen původní nezvýrazněný kód.</xsl:message>
   11.48 +    			<pre><xsl:value-of select="$zdroják"/></pre>
   11.49 +    		</xsl:otherwise>
   11.50 +    	</xsl:choose>    	
   11.51 +    </xsl:template>
   11.52 +
   11.53 +</xsl:stylesheet>
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/šablona/stránka-společné.xsl	Fri Jan 06 20:48:42 2012 +0100
    12.3 @@ -0,0 +1,56 @@
    12.4 +<?xml version="1.0" encoding="UTF-8"?>
    12.5 +<xsl:stylesheet version="2.0"
    12.6 +	xmlns="http://www.w3.org/1999/xhtml"
    12.7 +	xmlns:h="http://www.w3.org/1999/xhtml"
    12.8 +	xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
    12.9 +	xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
   12.10 +	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
   12.11 +	xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce"
   12.12 +	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   12.13 +	xmlns:fn="http://www.w3.org/2005/xpath-functions"
   12.14 +	xmlns:svg="http://www.w3.org/2000/svg"
   12.15 +	xmlns:xs="http://www.w3.org/2001/XMLSchema"
   12.16 +	exclude-result-prefixes="fn h s k m j xs">
   12.17 +	
   12.18 +	<xsl:param name="vstup" select="'../vstup/'"/>
   12.19 +	<xsl:param name="výstup" select="'../výstup/'"/>
   12.20 +	<xsl:param name="vstupníPřípona" select="'.xml'"/>
   12.21 +	<xsl:param name="výstupníPřípona" select="'.xhtml'"/>
   12.22 +	<xsl:param name="vsuvkováPřípona" select="'.inc'"/>
   12.23 +	<xsl:param name="podporaZaostalýchProhlížečů" select="false()" as="xs:boolean"/>
   12.24 +
   12.25 +	<xsl:variable name="konfigurace" select="document(concat($vstup, 'web.conf'))"/>
   12.26 +	
   12.27 +	<xsl:include href=".makra-seznam.xsl"/>
   12.28 +	
   12.29 +	
   12.30 +	<!-- Kopírujeme elementy, ale vynecháme nepoužité xmlns deklarace: -->
   12.31 +	<xsl:template match="*">
   12.32 +		<xsl:element name="{name()}">
   12.33 +			<xsl:copy-of select="@*"/>
   12.34 +			<xsl:apply-templates/>
   12.35 +		</xsl:element>
   12.36 +    </xsl:template>
   12.37 +    
   12.38 +    <!-- Varování pro případ, že jsme v režimu podpory pro zaostalé prohlížeče -->
   12.39 +    <xsl:template name="varováníRetardace">
   12.40 +    	<xsl:if test="$podporaZaostalýchProhlížečů">
   12.41 +			<xsl:comment>
   12.42 +				Generátor byl spuštěn v režimu podpory zaostalých prohlížečů.
   12.43 +				Uživatelům doporučujeme upgrade na skutečný WWW prohlížeč,
   12.44 +				jako je např. Firefox nebo Chromium (případně Opera či Safari).
   12.45 +			</xsl:comment>
   12.46 +    	</xsl:if>
   12.47 +    </xsl:template>
   12.48 +
   12.49 +    <!-- Odkazy na JavaScript a kaskádové styly -->    
   12.50 +    <xsl:template match="k:web/k:js">    	
   12.51 +    	<script src="{text()}" type="text/javascript">
   12.52 +    		<xsl:call-template name="varováníRetardace"/>
   12.53 +    	</script>
   12.54 +    </xsl:template>
   12.55 +    <xsl:template match="k:web/k:css">
   12.56 +    	<link href="{text()}" type="text/css" rel="StyleSheet" />
   12.57 +    </xsl:template>
   12.58 +    
   12.59 +</xsl:stylesheet>
    13.1 --- a/šablona/stránka.xsl	Thu Jan 05 16:24:56 2012 +0100
    13.2 +++ b/šablona/stránka.xsl	Fri Jan 06 20:48:42 2012 +0100
    13.3 @@ -17,19 +17,13 @@
    13.4  		encoding="UTF-8"		
    13.5  		doctype-public="-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" 
    13.6  		doctype-system="http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"/>
    13.7 -		
    13.8 -	<xsl:param name="vstup" select="'../vstup/'"/>
    13.9 -	<xsl:param name="výstup" select="'../výstup/'"/>
   13.10 -	<xsl:param name="vstupníPřípona" select="'.xml'"/>
   13.11 -	<xsl:param name="výstupníPřípona" select="'.xhtml'"/>
   13.12 -	<xsl:param name="vsuvkováPřípona" select="'.inc'"/>
   13.13 -	<xsl:param name="podporaZaostalýchProhlížečů" select="false()" as="xs:boolean"/>
   13.14 +	<xsl:include href="stránka-společné.xsl"/>
   13.15  	
   13.16 -	<xsl:include href="makra.xsl"/>
   13.17 -	
   13.18 -	<!-- Celý dokument: -->
   13.19 +	<!-- 
   13.20 +		Šablona stránky
   13.21 +		***************
   13.22 +	-->
   13.23  	<xsl:template match="/">
   13.24 -		<xsl:variable name="konfigurace" select="document(concat($vstup, 'web.conf'))"/>
   13.25  		<html>
   13.26  			<head>
   13.27  				<xsl:if test="$podporaZaostalýchProhlížečů">
   13.28 @@ -39,7 +33,7 @@
   13.29  				<link title="Novinky (Atom)" href="atom.xml" type="application/atom+xml" rel="alternate"/>
   13.30  				<link title="Novinky (RSS)"  href="rss.xml"  type="application/rss+xml"  rel="alternate"/>
   13.31  				<xsl:apply-templates select="$konfigurace/k:web/k:js"/>
   13.32 -				<xsl:apply-templates select="$konfigurace/k:web/k:css"/>				
   13.33 +				<xsl:apply-templates select="$konfigurace/k:web/k:css"/>
   13.34  			</head>
   13.35  			<body>
   13.36  				<div id="tělo">
   13.37 @@ -70,184 +64,5 @@
   13.38  			</body>
   13.39  		</html>
   13.40  	</xsl:template>
   13.41 -	
   13.42 -	<!-- Kopírujeme elementy, ale vynecháme nepoužité xmlns deklarace: -->
   13.43 -	<xsl:template match="*">
   13.44 -		<xsl:element name="{name()}">
   13.45 -			<xsl:copy-of select="@*"/>
   13.46 -			<xsl:apply-templates/>
   13.47 -		</xsl:element>
   13.48 -    </xsl:template>
   13.49      
   13.50 -    <!-- Varování pro případ, že jsme v režimu podpory pro zaostalé prohlížeče -->
   13.51 -    <xsl:template name="varováníRetardace">
   13.52 -    	<xsl:if test="$podporaZaostalýchProhlížečů">
   13.53 -			<xsl:comment>
   13.54 -				Generátor byl spuštěn v režimu podpory zaostalých prohlížečů.
   13.55 -				Uživatelům doporučujeme upgrade na skutečný WWW prohlížeč,
   13.56 -				jako je např. Firefox nebo Chromium (případně Opera či Safari).
   13.57 -			</xsl:comment>
   13.58 -    	</xsl:if>
   13.59 -    </xsl:template>
   13.60 -
   13.61 -    <!-- Odkazy na JavaScript a kaskádové styly -->    
   13.62 -    <xsl:template match="k:web/k:js">    	
   13.63 -    	<script src="{text()}" type="text/javascript">
   13.64 -    		<xsl:call-template name="varováníRetardace"/>
   13.65 -    	</script>
   13.66 -    </xsl:template>
   13.67 -    <xsl:template match="k:web/k:css">
   13.68 -    	<link href="{text()}" type="text/css" rel="StyleSheet" />
   13.69 -    </xsl:template>
   13.70 -    
   13.71 -    <!--
   13.72 -    	TODO: makra vyčlenit do samostatných souborů
   13.73 -    -->
   13.74 -   
   13.75 -    <!--
   13.76 -    	Makro pro převod interních odkazů:
   13.77 -    		- doplnění správné přípony
   13.78 -    		- URL kódování znaků
   13.79 -    -->
   13.80 -    <xsl:template match="m:a">
   13.81 -    	<a>
   13.82 -    		<xsl:copy-of select="@*"/>
   13.83 -    		<xsl:attribute name="href">
   13.84 -    			<xsl:value-of select="fn:encode-for-uri(concat(@href, $výstupníPřípona))"/>
   13.85 -    		</xsl:attribute>
   13.86 -    		<xsl:apply-templates/>
   13.87 -    	</a>
   13.88 -    </xsl:template>
   13.89 -    
   13.90 -    <!--
   13.91 -    	Makro pro zvýraznění syntaxe:
   13.92 -    -->    
   13.93 -    <xsl:template match="m:pre">
   13.94 -    	<xsl:call-template name="zvýrazniZdroják">
   13.95 -    		<xsl:with-param name="zdroják" select="text()"/>
   13.96 -    	</xsl:call-template>
   13.97 -    </xsl:template>
   13.98 -    
   13.99 -    <xsl:template match="m:pre[@src]">
  13.100 -    	<xsl:call-template name="zvýrazniZdroják">
  13.101 -    		<xsl:with-param name="zdroják" select="unparsed-text(concat($vstup, @src))"/>
  13.102 -    	</xsl:call-template>
  13.103 -		<xsl:if test="@odkaz = 'ano'">
  13.104 -			<p class="zdroják-ke-stažení">
  13.105 -				<span>Stáhnout: <a href="{encode-for-uri(@src)}"><xsl:value-of select="@src"/></a></span>
  13.106 -			</p>
  13.107 -		</xsl:if>
  13.108 -    </xsl:template>
  13.109 -    
  13.110 -    <xsl:template name="zvýrazniZdroják">
  13.111 -    	<xsl:param name="zdroják"/>
  13.112 -    	<xsl:variable name="zvýrazněnýZdroják" select="j:zvýrazniSyntaxi($zdroják, @jazyk)"/>
  13.113 -    	<xsl:choose>
  13.114 -    		<xsl:when test="$zvýrazněnýZdroják">
  13.115 -    			<xsl:comment>Následující kód je v jazyce <xsl:value-of select="@jazyk"/></xsl:comment>
  13.116 -    			<xsl:value-of disable-output-escaping="yes" select="$zvýrazněnýZdroják"/>
  13.117 -    		</xsl:when>
  13.118 -    		<xsl:otherwise>
  13.119 -    			<xsl:message>Zvýraznění syntaxe se nezdařilo → bude vložen původní nezvýrazněný kód.</xsl:message>
  13.120 -    			<pre><xsl:value-of select="$zdroják"/></pre>
  13.121 -    		</xsl:otherwise>
  13.122 -    	</xsl:choose>    	
  13.123 -    </xsl:template>
  13.124 -    
  13.125 -    <!--
  13.126 -    	Makro pro diagramy/grafy
  13.127 -    -->
  13.128 -    <xsl:template match="m:diagram">
  13.129 -    	<xsl:variable name="souborDiagramu" select="j:vytvořDiagram(text(), @orientace = 'vodorovně')"/>
  13.130 -    	<xsl:choose>
  13.131 -			<xsl:when test="$souborDiagramu">
  13.132 -				<div class="diagram">
  13.133 -					<a href="{$souborDiagramu}.svg">
  13.134 -						<img
  13.135 -							src="{$souborDiagramu}.svg" 
  13.136 -							alt="Diagram {$souborDiagramu} | pokud nevidíte obrázek, váš prohlížeč stojí za starou bačkoru"
  13.137 -							title="{@nadpis} (klikněte pro zobrazení samotného diagramu)"/>
  13.138 -					</a>
  13.139 -					<!-- TODO: SVG+PNG
  13.140 -					<xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/>
  13.141 -					<object
  13.142 -						data="{$souborDiagramu}.svg"
  13.143 -						type="image/svg+xml"
  13.144 -						style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}">
  13.145 -							<img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/>
  13.146 -					</object>
  13.147 -					-->
  13.148 -					<xsl:if test="@nadpis">
  13.149 -						<p class="nadpis"><xsl:value-of select="@nadpis"/></p>
  13.150 -					</xsl:if>
  13.151 -				</div>
  13.152 -			</xsl:when>
  13.153 -			<xsl:otherwise>
  13.154 -				<xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message>
  13.155 -			</xsl:otherwise>
  13.156 -    	</xsl:choose>
  13.157 -    </xsl:template>
  13.158 -    
  13.159 -    <!--
  13.160 -    	Makro pro Wiki syntaxi
  13.161 -    -->
  13.162 -    <xsl:template match="m:wiki">
  13.163 -    	<xsl:variable name="wikiXHTML" select="j:formátujWiki(text(), @syntaxe)"/>
  13.164 -    	<xsl:choose>
  13.165 -			<xsl:when test="$wikiXHTML">
  13.166 -				<xsl:value-of select="$wikiXHTML" disable-output-escaping="yes"/>
  13.167 -			</xsl:when>
  13.168 -			<xsl:otherwise>
  13.169 -				<xsl:message terminate="yes">Při zpracování wiki syntaxe došlo k chybě.</xsl:message>
  13.170 -			</xsl:otherwise>
  13.171 -		</xsl:choose>
  13.172 -    </xsl:template>
  13.173 -    
  13.174 -    <!-- 
  13.175 -    	Makro pro vycpávkový text
  13.176 -    -->
  13.177 -    <xsl:template match="m:vycpávka">
  13.178 -    	<!-- 
  13.179 -    		TODO: stáhnout jen jednou, uložit do souboru a při dalších generováních brát z něj.
  13.180 -    	-->
  13.181 -    	<xsl:message>Stahuji vycpávkový text z http://lipsum.lipsum.com/</xsl:message>
  13.182 -    	<xsl:variable name="prostýText" select="document(concat('http://lipsum.lipsum.com/feed/xml?amount=', @odstavců, '&amp;what=paragraphs'))/feed/lipsum"/>
  13.183 -    	<xsl:for-each select="fn:tokenize($prostýText, '\n')">
  13.184 -    		<p><xsl:value-of select="."/></p>
  13.185 -    	</xsl:for-each>
  13.186 -    </xsl:template>
  13.187 -    
  13.188 -    <!--
  13.189 -    	Makro pro jednoduché tabulky
  13.190 -    -->
  13.191 -    <xsl:template match="m:tabulka">
  13.192 -    	<table>
  13.193 -    		<xsl:variable name="data" select="replace(replace(text(), '^\s+', ''),'\s+$','')"/>
  13.194 -    		<xsl:variable name="hlavička" select="substring-before($data, '&#10;')"/>
  13.195 -    		<xsl:variable name="tělo" select="substring-after($data, '&#10;')"/>
  13.196 -    		<thead>
  13.197 -    			<tr>
  13.198 -    				<xsl:for-each select="tokenize($hlavička, '\t+')">
  13.199 -    					<xsl:if test="normalize-space(.)">
  13.200 -							<td><xsl:value-of select="normalize-space(.)"/></td>
  13.201 -						</xsl:if>
  13.202 -					</xsl:for-each>
  13.203 -    			</tr>
  13.204 -    		</thead>
  13.205 -    		<tbody>
  13.206 -				<xsl:for-each select="tokenize($tělo, '\n')">
  13.207 -					<xsl:if test="normalize-space(.)">
  13.208 -						<tr>
  13.209 -							<xsl:for-each select="tokenize(., '\t+')">
  13.210 -								<xsl:if test="normalize-space(.)">
  13.211 -									<td><xsl:value-of select="normalize-space(.)"/></td>
  13.212 -								</xsl:if>
  13.213 -							</xsl:for-each>
  13.214 -						</tr>
  13.215 -					</xsl:if>
  13.216 -				</xsl:for-each>
  13.217 -    		</tbody>
  13.218 -    	</table>    
  13.219 -    </xsl:template>
  13.220 -
  13.221  </xsl:stylesheet>