Zjednodušení šablony stránka.xsl (přesun šablon do stránka-společné.xsl) #8.
--- 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>