1.1 --- a/šablona/stránka.xsl Thu Jan 05 16:24:56 2012 +0100
1.2 +++ b/šablona/stránka.xsl Fri Jan 06 21:58:52 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ů, '&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, ' ')"/>
1.195 - <xsl:variable name="tělo" select="substring-after($data, ' ')"/>
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>