--- a/šablona/stránka.xsl Thu Jan 05 16:24:56 2012 +0100
+++ b/šablona/stránka.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -17,19 +17,13 @@
encoding="UTF-8"
doctype-public="-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
doctype-system="http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"/>
-
- <xsl:param name="vstup" select="'../vstup/'"/>
- <xsl:param name="výstup" select="'../výstup/'"/>
- <xsl:param name="vstupníPřípona" select="'.xml'"/>
- <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:include href="stránka-společné.xsl"/>
- <xsl:include href="makra.xsl"/>
-
- <!-- Celý dokument: -->
+ <!--
+ Šablona stránky
+ ***************
+ -->
<xsl:template match="/">
- <xsl:variable name="konfigurace" select="document(concat($vstup, 'web.conf'))"/>
<html>
<head>
<xsl:if test="$podporaZaostalýchProhlížečů">
@@ -39,7 +33,7 @@
<link title="Novinky (Atom)" href="atom.xml" type="application/atom+xml" rel="alternate"/>
<link title="Novinky (RSS)" href="rss.xml" type="application/rss+xml" rel="alternate"/>
<xsl:apply-templates select="$konfigurace/k:web/k:js"/>
- <xsl:apply-templates select="$konfigurace/k:web/k:css"/>
+ <xsl:apply-templates select="$konfigurace/k:web/k:css"/>
</head>
<body>
<div id="tělo">
@@ -70,184 +64,5 @@
</body>
</html>
</xsl:template>
-
- <!-- 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>
- <!-- 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>
-
- <!-- 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>
-
- <!--
- TODO: makra vyčlenit do samostatných souborů
- -->
-
- <!--
- Makro pro převod interních odkazů:
- - doplnění správné přípony
- - URL kódování znaků
- -->
- <xsl:template match="m:a">
- <a>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="href">
- <xsl:value-of select="fn:encode-for-uri(concat(@href, $výstupníPřípona))"/>
- </xsl:attribute>
- <xsl:apply-templates/>
- </a>
- </xsl:template>
-
- <!--
- Makro pro zvýraznění syntaxe:
- -->
- <xsl:template match="m:pre">
- <xsl:call-template name="zvýrazniZdroják">
- <xsl:with-param name="zdroják" select="text()"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="m:pre[@src]">
- <xsl:call-template name="zvýrazniZdroják">
- <xsl:with-param name="zdroják" select="unparsed-text(concat($vstup, @src))"/>
- </xsl:call-template>
- <xsl:if test="@odkaz = 'ano'">
- <p class="zdroják-ke-stažení">
- <span>Stáhnout: <a href="{encode-for-uri(@src)}"><xsl:value-of select="@src"/></a></span>
- </p>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="zvýrazniZdroják">
- <xsl:param name="zdroják"/>
- <xsl:variable name="zvýrazněnýZdroják" select="j:zvýrazniSyntaxi($zdroják, @jazyk)"/>
- <xsl:choose>
- <xsl:when test="$zvýrazněnýZdroják">
- <xsl:comment>Následující kód je v jazyce <xsl:value-of select="@jazyk"/></xsl:comment>
- <xsl:value-of disable-output-escaping="yes" select="$zvýrazněnýZdroják"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>Zvýraznění syntaxe se nezdařilo → bude vložen původní nezvýrazněný kód.</xsl:message>
- <pre><xsl:value-of select="$zdroják"/></pre>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!--
- Makro pro diagramy/grafy
- -->
- <xsl:template match="m:diagram">
- <xsl:variable name="souborDiagramu" select="j:vytvořDiagram(text(), @orientace = 'vodorovně')"/>
- <xsl:choose>
- <xsl:when test="$souborDiagramu">
- <div class="diagram">
- <a href="{$souborDiagramu}.svg">
- <img
- src="{$souborDiagramu}.svg"
- alt="Diagram {$souborDiagramu} | pokud nevidíte obrázek, váš prohlížeč stojí za starou bačkoru"
- title="{@nadpis} (klikněte pro zobrazení samotného diagramu)"/>
- </a>
- <!-- TODO: SVG+PNG
- <xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/>
- <object
- data="{$souborDiagramu}.svg"
- type="image/svg+xml"
- style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}">
- <img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/>
- </object>
- -->
- <xsl:if test="@nadpis">
- <p class="nadpis"><xsl:value-of select="@nadpis"/></p>
- </xsl:if>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!--
- Makro pro Wiki syntaxi
- -->
- <xsl:template match="m:wiki">
- <xsl:variable name="wikiXHTML" select="j:formátujWiki(text(), @syntaxe)"/>
- <xsl:choose>
- <xsl:when test="$wikiXHTML">
- <xsl:value-of select="$wikiXHTML" disable-output-escaping="yes"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message terminate="yes">Při zpracování wiki syntaxe došlo k chybě.</xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!--
- Makro pro vycpávkový text
- -->
- <xsl:template match="m:vycpávka">
- <!--
- TODO: stáhnout jen jednou, uložit do souboru a při dalších generováních brát z něj.
- -->
- <xsl:message>Stahuji vycpávkový text z http://lipsum.lipsum.com/</xsl:message>
- <xsl:variable name="prostýText" select="document(concat('http://lipsum.lipsum.com/feed/xml?amount=', @odstavců, '&what=paragraphs'))/feed/lipsum"/>
- <xsl:for-each select="fn:tokenize($prostýText, '\n')">
- <p><xsl:value-of select="."/></p>
- </xsl:for-each>
- </xsl:template>
-
- <!--
- Makro pro jednoduché tabulky
- -->
- <xsl:template match="m:tabulka">
- <table>
- <xsl:variable name="data" select="replace(replace(text(), '^\s+', ''),'\s+$','')"/>
- <xsl:variable name="hlavička" select="substring-before($data, ' ')"/>
- <xsl:variable name="tělo" select="substring-after($data, ' ')"/>
- <thead>
- <tr>
- <xsl:for-each select="tokenize($hlavička, '\t+')">
- <xsl:if test="normalize-space(.)">
- <td><xsl:value-of select="normalize-space(.)"/></td>
- </xsl:if>
- </xsl:for-each>
- </tr>
- </thead>
- <tbody>
- <xsl:for-each select="tokenize($tělo, '\n')">
- <xsl:if test="normalize-space(.)">
- <tr>
- <xsl:for-each select="tokenize(., '\t+')">
- <xsl:if test="normalize-space(.)">
- <td><xsl:value-of select="normalize-space(.)"/></td>
- </xsl:if>
- </xsl:for-each>
- </tr>
- </xsl:if>
- </xsl:for-each>
- </tbody>
- </table>
- </xsl:template>
-
</xsl:stylesheet>