šablona/stránka.xsl
changeset 57 768a7eecb0cf
parent 50 ae8222d2c903
child 61 9503eb8377f1
     1.1 --- a/šablona/stránka.xsl	Thu Jan 05 16:24:56 2012 +0100
     1.2 +++ b/šablona/stránka.xsl	Sat Jan 07 01:57:27 2012 +0100
     1.3 @@ -17,19 +17,13 @@
     1.4  		encoding="UTF-8"		
     1.5  		doctype-public="-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" 
     1.6  		doctype-system="http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"/>
     1.7 -		
     1.8 -	<xsl:param name="vstup" select="'../vstup/'"/>
     1.9 -	<xsl:param name="výstup" select="'../výstup/'"/>
    1.10 -	<xsl:param name="vstupníPřípona" select="'.xml'"/>
    1.11 -	<xsl:param name="výstupníPřípona" select="'.xhtml'"/>
    1.12 -	<xsl:param name="vsuvkováPřípona" select="'.inc'"/>
    1.13 -	<xsl:param name="podporaZaostalýchProhlížečů" select="false()" as="xs:boolean"/>
    1.14 +	<xsl:include href="stránka-společné.xsl"/>
    1.15  	
    1.16 -	<xsl:include href="makra.xsl"/>
    1.17 -	
    1.18 -	<!-- Celý dokument: -->
    1.19 +	<!-- 
    1.20 +		Šablona stránky
    1.21 +		***************
    1.22 +	-->
    1.23  	<xsl:template match="/">
    1.24 -		<xsl:variable name="konfigurace" select="document(concat($vstup, 'web.conf'))"/>
    1.25  		<html>
    1.26  			<head>
    1.27  				<xsl:if test="$podporaZaostalýchProhlížečů">
    1.28 @@ -39,7 +33,7 @@
    1.29  				<link title="Novinky (Atom)" href="atom.xml" type="application/atom+xml" rel="alternate"/>
    1.30  				<link title="Novinky (RSS)"  href="rss.xml"  type="application/rss+xml"  rel="alternate"/>
    1.31  				<xsl:apply-templates select="$konfigurace/k:web/k:js"/>
    1.32 -				<xsl:apply-templates select="$konfigurace/k:web/k:css"/>				
    1.33 +				<xsl:apply-templates select="$konfigurace/k:web/k:css"/>
    1.34  			</head>
    1.35  			<body>
    1.36  				<div id="tělo">
    1.37 @@ -70,184 +64,5 @@
    1.38  			</body>
    1.39  		</html>
    1.40  	</xsl:template>
    1.41 -	
    1.42 -	<!-- Kopírujeme elementy, ale vynecháme nepoužité xmlns deklarace: -->
    1.43 -	<xsl:template match="*">
    1.44 -		<xsl:element name="{name()}">
    1.45 -			<xsl:copy-of select="@*"/>
    1.46 -			<xsl:apply-templates/>
    1.47 -		</xsl:element>
    1.48 -    </xsl:template>
    1.49      
    1.50 -    <!-- Varování pro případ, že jsme v režimu podpory pro zaostalé prohlížeče -->
    1.51 -    <xsl:template name="varováníRetardace">
    1.52 -    	<xsl:if test="$podporaZaostalýchProhlížečů">
    1.53 -			<xsl:comment>
    1.54 -				Generátor byl spuštěn v režimu podpory zaostalých prohlížečů.
    1.55 -				Uživatelům doporučujeme upgrade na skutečný WWW prohlížeč,
    1.56 -				jako je např. Firefox nebo Chromium (případně Opera či Safari).
    1.57 -			</xsl:comment>
    1.58 -    	</xsl:if>
    1.59 -    </xsl:template>
    1.60 -
    1.61 -    <!-- Odkazy na JavaScript a kaskádové styly -->    
    1.62 -    <xsl:template match="k:web/k:js">    	
    1.63 -    	<script src="{text()}" type="text/javascript">
    1.64 -    		<xsl:call-template name="varováníRetardace"/>
    1.65 -    	</script>
    1.66 -    </xsl:template>
    1.67 -    <xsl:template match="k:web/k:css">
    1.68 -    	<link href="{text()}" type="text/css" rel="StyleSheet" />
    1.69 -    </xsl:template>
    1.70 -    
    1.71 -    <!--
    1.72 -    	TODO: makra vyčlenit do samostatných souborů
    1.73 -    -->
    1.74 -   
    1.75 -    <!--
    1.76 -    	Makro pro převod interních odkazů:
    1.77 -    		- doplnění správné přípony
    1.78 -    		- URL kódování znaků
    1.79 -    -->
    1.80 -    <xsl:template match="m:a">
    1.81 -    	<a>
    1.82 -    		<xsl:copy-of select="@*"/>
    1.83 -    		<xsl:attribute name="href">
    1.84 -    			<xsl:value-of select="fn:encode-for-uri(concat(@href, $výstupníPřípona))"/>
    1.85 -    		</xsl:attribute>
    1.86 -    		<xsl:apply-templates/>
    1.87 -    	</a>
    1.88 -    </xsl:template>
    1.89 -    
    1.90 -    <!--
    1.91 -    	Makro pro zvýraznění syntaxe:
    1.92 -    -->    
    1.93 -    <xsl:template match="m:pre">
    1.94 -    	<xsl:call-template name="zvýrazniZdroják">
    1.95 -    		<xsl:with-param name="zdroják" select="text()"/>
    1.96 -    	</xsl:call-template>
    1.97 -    </xsl:template>
    1.98 -    
    1.99 -    <xsl:template match="m:pre[@src]">
   1.100 -    	<xsl:call-template name="zvýrazniZdroják">
   1.101 -    		<xsl:with-param name="zdroják" select="unparsed-text(concat($vstup, @src))"/>
   1.102 -    	</xsl:call-template>
   1.103 -		<xsl:if test="@odkaz = 'ano'">
   1.104 -			<p class="zdroják-ke-stažení">
   1.105 -				<span>Stáhnout: <a href="{encode-for-uri(@src)}"><xsl:value-of select="@src"/></a></span>
   1.106 -			</p>
   1.107 -		</xsl:if>
   1.108 -    </xsl:template>
   1.109 -    
   1.110 -    <xsl:template name="zvýrazniZdroják">
   1.111 -    	<xsl:param name="zdroják"/>
   1.112 -    	<xsl:variable name="zvýrazněnýZdroják" select="j:zvýrazniSyntaxi($zdroják, @jazyk)"/>
   1.113 -    	<xsl:choose>
   1.114 -    		<xsl:when test="$zvýrazněnýZdroják">
   1.115 -    			<xsl:comment>Následující kód je v jazyce <xsl:value-of select="@jazyk"/></xsl:comment>
   1.116 -    			<xsl:value-of disable-output-escaping="yes" select="$zvýrazněnýZdroják"/>
   1.117 -    		</xsl:when>
   1.118 -    		<xsl:otherwise>
   1.119 -    			<xsl:message>Zvýraznění syntaxe se nezdařilo → bude vložen původní nezvýrazněný kód.</xsl:message>
   1.120 -    			<pre><xsl:value-of select="$zdroják"/></pre>
   1.121 -    		</xsl:otherwise>
   1.122 -    	</xsl:choose>    	
   1.123 -    </xsl:template>
   1.124 -    
   1.125 -    <!--
   1.126 -    	Makro pro diagramy/grafy
   1.127 -    -->
   1.128 -    <xsl:template match="m:diagram">
   1.129 -    	<xsl:variable name="souborDiagramu" select="j:vytvořDiagram(text(), @orientace = 'vodorovně')"/>
   1.130 -    	<xsl:choose>
   1.131 -			<xsl:when test="$souborDiagramu">
   1.132 -				<div class="diagram">
   1.133 -					<a href="{$souborDiagramu}.svg">
   1.134 -						<img
   1.135 -							src="{$souborDiagramu}.svg" 
   1.136 -							alt="Diagram {$souborDiagramu} | pokud nevidíte obrázek, váš prohlížeč stojí za starou bačkoru"
   1.137 -							title="{@nadpis} (klikněte pro zobrazení samotného diagramu)"/>
   1.138 -					</a>
   1.139 -					<!-- TODO: SVG+PNG
   1.140 -					<xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/>
   1.141 -					<object
   1.142 -						data="{$souborDiagramu}.svg"
   1.143 -						type="image/svg+xml"
   1.144 -						style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}">
   1.145 -							<img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/>
   1.146 -					</object>
   1.147 -					-->
   1.148 -					<xsl:if test="@nadpis">
   1.149 -						<p class="nadpis"><xsl:value-of select="@nadpis"/></p>
   1.150 -					</xsl:if>
   1.151 -				</div>
   1.152 -			</xsl:when>
   1.153 -			<xsl:otherwise>
   1.154 -				<xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message>
   1.155 -			</xsl:otherwise>
   1.156 -    	</xsl:choose>
   1.157 -    </xsl:template>
   1.158 -    
   1.159 -    <!--
   1.160 -    	Makro pro Wiki syntaxi
   1.161 -    -->
   1.162 -    <xsl:template match="m:wiki">
   1.163 -    	<xsl:variable name="wikiXHTML" select="j:formátujWiki(text(), @syntaxe)"/>
   1.164 -    	<xsl:choose>
   1.165 -			<xsl:when test="$wikiXHTML">
   1.166 -				<xsl:value-of select="$wikiXHTML" disable-output-escaping="yes"/>
   1.167 -			</xsl:when>
   1.168 -			<xsl:otherwise>
   1.169 -				<xsl:message terminate="yes">Při zpracování wiki syntaxe došlo k chybě.</xsl:message>
   1.170 -			</xsl:otherwise>
   1.171 -		</xsl:choose>
   1.172 -    </xsl:template>
   1.173 -    
   1.174 -    <!-- 
   1.175 -    	Makro pro vycpávkový text
   1.176 -    -->
   1.177 -    <xsl:template match="m:vycpávka">
   1.178 -    	<!-- 
   1.179 -    		TODO: stáhnout jen jednou, uložit do souboru a při dalších generováních brát z něj.
   1.180 -    	-->
   1.181 -    	<xsl:message>Stahuji vycpávkový text z http://lipsum.lipsum.com/</xsl:message>
   1.182 -    	<xsl:variable name="prostýText" select="document(concat('http://lipsum.lipsum.com/feed/xml?amount=', @odstavců, '&amp;what=paragraphs'))/feed/lipsum"/>
   1.183 -    	<xsl:for-each select="fn:tokenize($prostýText, '\n')">
   1.184 -    		<p><xsl:value-of select="."/></p>
   1.185 -    	</xsl:for-each>
   1.186 -    </xsl:template>
   1.187 -    
   1.188 -    <!--
   1.189 -    	Makro pro jednoduché tabulky
   1.190 -    -->
   1.191 -    <xsl:template match="m:tabulka">
   1.192 -    	<table>
   1.193 -    		<xsl:variable name="data" select="replace(replace(text(), '^\s+', ''),'\s+$','')"/>
   1.194 -    		<xsl:variable name="hlavička" select="substring-before($data, '&#10;')"/>
   1.195 -    		<xsl:variable name="tělo" select="substring-after($data, '&#10;')"/>
   1.196 -    		<thead>
   1.197 -    			<tr>
   1.198 -    				<xsl:for-each select="tokenize($hlavička, '\t+')">
   1.199 -    					<xsl:if test="normalize-space(.)">
   1.200 -							<td><xsl:value-of select="normalize-space(.)"/></td>
   1.201 -						</xsl:if>
   1.202 -					</xsl:for-each>
   1.203 -    			</tr>
   1.204 -    		</thead>
   1.205 -    		<tbody>
   1.206 -				<xsl:for-each select="tokenize($tělo, '\n')">
   1.207 -					<xsl:if test="normalize-space(.)">
   1.208 -						<tr>
   1.209 -							<xsl:for-each select="tokenize(., '\t+')">
   1.210 -								<xsl:if test="normalize-space(.)">
   1.211 -									<td><xsl:value-of select="normalize-space(.)"/></td>
   1.212 -								</xsl:if>
   1.213 -							</xsl:for-each>
   1.214 -						</tr>
   1.215 -					</xsl:if>
   1.216 -				</xsl:for-each>
   1.217 -    		</tbody>
   1.218 -    	</table>    
   1.219 -    </xsl:template>
   1.220 -
   1.221  </xsl:stylesheet>