Zjednodušení šablony stránka.xsl (přesun šablon do stránka-společné.xsl) #8.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 08 Jan 2012 17:09:50 +0100
changeset 77 2f11f0ba6f13
parent 76 c7746d95283d
child 78 7e478bfa5694
Zjednodušení šablony stránka.xsl (přesun šablon do stránka-společné.xsl) #8.
šablona/stránka-společné.xsl
šablona/stránka.xsl
--- a/šablona/stránka-společné.xsl	Sun Jan 08 16:52:30 2012 +0100
+++ b/šablona/stránka-společné.xsl	Sun Jan 08 17:09:50 2012 +0100
@@ -35,41 +35,87 @@
 	<xsl:param name="výstupníPřípona" select="'.xhtml'"/>
 	<xsl:param name="vsuvkováPřípona" select="'.inc'"/>
 	<xsl:param name="podporaZaostalýchProhlížečů" select="false()" as="xs:boolean"/>
-
+	
 	<xsl:variable name="konfigurace" select="document(concat($vstup, 'web.conf'))"/>
 	
 	<xsl:include href=".makra-seznam.xsl"/>
 	
-	
-	<!-- Kopírujeme elementy, ale vynecháme nepoužité xmlns deklarace: -->
+	<!-- 
+		Kopírujeme elementy, ale vynecháme nepoužité xmlns deklarace: 
+	-->
 	<xsl:template match="*">
 		<xsl:element name="{name()}">
 			<xsl:copy-of select="@*"/>
 			<xsl:apply-templates/>
 		</xsl:element>
-    </xsl:template>
+	</xsl:template>
     
-    <!-- Varování pro případ, že jsme v režimu podpory pro zaostalé prohlížeče -->
-    <xsl:template name="varováníRetardace">
-    	<xsl:if test="$podporaZaostalýchProhlížečů">
+	<!-- 
+		Varování pro případ, že jsme v režimu podpory pro zaostalé prohlížeče 
+	-->
+	<xsl:template name="varováníRetardace">
+		<xsl:if test="$podporaZaostalýchProhlížečů">
 			<xsl:comment>
 				Generátor byl spuštěn v režimu podpory zaostalých prohlížečů.
 				Uživatelům doporučujeme upgrade na skutečný WWW prohlížeč,
 				jako je např. Firefox nebo Chromium (případně Opera či Safari).
 			</xsl:comment>
-    	</xsl:if>
-    </xsl:template>
+		</xsl:if>
+	</xsl:template>
+	
+	<!-- 
+		Odkazy na JavaScript a kaskádové styly 
+	-->    
+	<xsl:template match="k:web/k:js">    	
+		<script src="{text()}" type="text/javascript">
+			<xsl:call-template name="varováníRetardace"/>
+		</script>
+	</xsl:template>
+	<xsl:template match="k:web/k:css">
+		<link href="{text()}" type="text/css" rel="StyleSheet" />
+	</xsl:template>
+    
+    <!--
+    	Vloží nečíslovaný seznam obsahující hlavní nabídku webu (seznam stránek)
+    	Pro potřeby CSS stylování má nabídka @id='nabídka'
+    -->
+	<xsl:template name="vložNabídku">
+		<ul id="nabídka">
+			<xsl:for-each select="collection(concat('./', $vstup ,'/?select=*', $vstupníPřípona))[s:stránka/s:pořadí]">
+				<xsl:sort select="empty(./s:stránka/s:pořadí)"/>
+				<xsl:sort select="./s:stránka/s:pořadí"/>
+				<li>
+					<xsl:variable name="xmlSoubor" select="tokenize(document-uri(.), '/')[last()]"/>
+					<xsl:variable name="xhtmlSoubor" select="replace($xmlSoubor, $vstupníPřípona, $výstupníPřípona)"/>
+					<a href="{fn:encode-for-uri($xhtmlSoubor)}"><xsl:value-of select="./s:stránka/s:nadpis"/></a>
+				</li>
+			</xsl:for-each>
+		</ul>
+	</xsl:template>
+	
+	<!--
+		Vloží záhlaví (společné pro všechny stránky)
+		Pro potřeby CSS stylování má @id='záhlaví'
+	-->
+	<xsl:template name="vložZáhlaví">
+		<div id="záhlaví">
+			<xsl:apply-templates select="document(fn:encode-for-uri(concat($vstup, 'záhlaví', $vsuvkováPřípona)))/s:stránka/h:text/node()"/>
+		</div>
+	</xsl:template>
+	
+	<!--
+		Vloží zápatí (společné pro všechny stránky)
+		Pro potřeby CSS stylování má @id='zápatí'
+	-->
+	<xsl:template name="vložZápatí">
+		<div id="zápatí">
+			<xsl:apply-templates select="document(fn:encode-for-uri(concat($vstup, 'zápatí', $vsuvkováPřípona)))/s:stránka/h:text/node()"/>
+		</div>
+	</xsl:template>
 
-    <!-- Odkazy na JavaScript a kaskádové styly -->    
-    <xsl:template match="k:web/k:js">    	
-    	<script src="{text()}" type="text/javascript">
-    		<xsl:call-template name="varováníRetardace"/>
-    	</script>
-    </xsl:template>
-    <xsl:template match="k:web/k:css">
-    	<link href="{text()}" type="text/css" rel="StyleSheet" />
-    </xsl:template>
-    
+    <!--
+    	Vrací cestu v URL kódování, ale lomítka nekóduje
+    -->
     <xsl:function name="m:escapuj-url-zachovej-lomítka" as="xs:string">
 		<xsl:param name="cesta"/>
 		<xsl:value-of select="replace(encode-for-uri($cesta), '%2F', '/')"/>
--- a/šablona/stránka.xsl	Sun Jan 08 16:52:30 2012 +0100
+++ b/šablona/stránka.xsl	Sun Jan 08 17:09:50 2012 +0100
@@ -54,29 +54,15 @@
 			</head>
 			<body>
 				<div id="tělo">
-					<div id="záhlaví">
-						<xsl:apply-templates select="document(fn:encode-for-uri(concat($vstup, 'záhlaví', $vsuvkováPřípona)))/s:stránka/h:text/node()"/>
-					</div>
+					<xsl:call-template name="vložZáhlaví"/>
 					<div id="vnitřek">
 						<h1><xsl:value-of select="s:stránka/s:nadpis"/></h1>
-						<ul id="nabídka">
-							<xsl:for-each select="collection(concat('./', $vstup ,'/?select=*', $vstupníPřípona))[s:stránka/s:pořadí]">
-								<xsl:sort select="empty(./s:stránka/s:pořadí)"/>
-								<xsl:sort select="./s:stránka/s:pořadí"/>
-								<li>
-									<xsl:variable name="xmlSoubor" select="tokenize(document-uri(.), '/')[last()]"/>
-									<xsl:variable name="xhtmlSoubor" select="replace($xmlSoubor, $vstupníPřípona, $výstupníPřípona)"/>
-									<a href="{fn:encode-for-uri($xhtmlSoubor)}"><xsl:value-of select="./s:stránka/s:nadpis"/></a>
-								</li>
-							</xsl:for-each>
-						</ul>
+						<xsl:call-template name="vložNabídku"/>
 						<div id="text">
 							<xsl:apply-templates select="s:stránka/h:text/node()"/>
 						</div>
 					</div>
-					<div id="zápatí">
-						<xsl:apply-templates select="document(fn:encode-for-uri(concat($vstup, 'zápatí', $vsuvkováPřípona)))/s:stránka/h:text/node()"/>
-					</div>
+					<xsl:call-template name="vložZápatí"/>
 				</div>
 			</body>
 		</html>