Přesun maker do samostatných souborů #8 + automatické generování seznamu maker
→ nová makra není potřeba nikde registrovat, prostě vytvoříme nový soubor v adresáři
šablona/makra nebo
vstup/makra
a spustíme „ant makra“ – vygenruje se „šablona/.makra-seznam.xsl“ který se vloží do šablony stránky.
--- a/.hgignore Thu Jan 05 16:24:56 2012 +0100
+++ b/.hgignore Fri Jan 06 20:48:42 2012 +0100
@@ -1,6 +1,7 @@
temp/*
výstup/*
šablona/funkce/build/*
+šablona/.makra-seznam.xsl
vstup/.seznam.xml
analýza/princip.png
nbproject/private
--- a/build.xml Thu Jan 05 16:24:56 2012 +0100
+++ b/build.xml Fri Jan 06 20:48:42 2012 +0100
@@ -4,6 +4,7 @@
<property name="vstup" value="vstup"/>
<property name="výstup" value="výstup"/>
<property name="šablona" value="šablona"/>
+ <property name="seznamMaker" value="${šablona}/.makra-seznam.xsl"/>
<property name="temp" value="temp"/>
<property name="funkce" value="${šablona}/funkce/build/classes"/>
@@ -13,7 +14,7 @@
<target name="generuj" description="Vygeneruje kompletní web." depends="agregace,stránky">
</target>
- <target name="stránky" description="Vygeneruje samotné XHTML webové stránky." depends="statický-obsah,syntaxe,kompiluj-funkce">
+ <target name="stránky" description="Vygeneruje samotné XHTML webové stránky." depends="statický-obsah,syntaxe,kompiluj-funkce,makra">
<xslt basedir="${vstup}" destdir="${výstup}" includes="*${vstupníPřípona}" extension="${výstupníPřípona}" style="${šablona}/stránka.xsl" processor="org.apache.tools.ant.taskdefs.optional.TraXLiaison">
<param name="konfigurák" expression="../${vstup}/"/>
<param name="podporaZaostalýchProhlížečů" expression="false"/>
@@ -37,6 +38,16 @@
</xslt>
</target>
+ <target name="makra" description="Vygeneruje seznam maker podle souborů v příslušných složkách" depends="kompiluj-funkce">
+ <xslt in="${vstup}/web.conf" out="${seznamMaker}" style="${šablona}/makra.xsl" processor="org.apache.tools.ant.taskdefs.optional.TraXLiaison">
+ <classpath location="/usr/share/java/saxonb-9.0.jar"/>
+ <classpath location="${funkce}"/>
+ <factory name="net.sf.saxon.TransformerFactoryImpl">
+ <attribute name="http://saxon.sf.net/feature/allow-external-functions" value="true"/>
+ </factory>
+ </xslt>
+ </target>
+
<target name="agregace" description="Vytvoří agregované výstupy: RSS, Atom, Sitemap.xml." depends="kompiluj-funkce">
<!-- TODO: sloučit, zjednodušit, parametrizovat -->
@@ -99,6 +110,7 @@
<delete includeemptydirs="true">
<fileset dir="${výstup}" includes="**/*"/>
<fileset dir="${funkce}" includes="**/*"/>
+ <fileset file="${seznamMaker}"/>
</delete>
</target>
--- a/vstup/makra.xsl Thu Jan 05 16:24:56 2012 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="2.0"
- xmlns="http://www.w3.org/1999/xhtml"
- xmlns:h="http://www.w3.org/1999/xhtml"
- xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
- xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
- xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:fn="http://www.w3.org/2005/xpath-functions"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- exclude-result-prefixes="fn h s k m xs">
-
- <!-- Ukázka vlastního „makra“: -->
- <xsl:template match="m:měřák">
- <xsl:variable name="hodnota" select="number(@hodnota)"/>
- <xsl:variable name="šířkaGrafu" select="128"/>
- <xsl:choose>
- <xsl:when test="$hodnota >= 0 and $hodnota <= 100">
- <div style="border: 1px solid black; width: {$šířkaGrafu}px; height: 16px; padding: 0px; text-align: center; background-color: #cfc;">
- <div style="margin: 0px; background-color: #A4E666; width: {@hodnota*$šířkaGrafu div 100}px; height: 16px;"><xsl:call-template name="varováníRetardace"/></div>
- <p style="margin: 0px; font-size: 12px; position: relative; top: -15px;">
- <xsl:value-of select="@hodnota"/>/100
- </p>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message terminate="yes">Hodnota měřáku musí být nejméně 0 a nejvíce 100 (udává procenta).</xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vstup/makra/měřák.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
+ xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
+ xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fn="http://www.w3.org/2005/xpath-functions"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ exclude-result-prefixes="fn h s k m xs">
+
+ <!-- Ukázka vlastního „makra“: -->
+ <xsl:template match="m:měřák">
+ <xsl:variable name="hodnota" select="number(@hodnota)"/>
+ <xsl:variable name="šířkaGrafu" select="128"/>
+ <xsl:choose>
+ <xsl:when test="$hodnota >= 0 and $hodnota <= 100">
+ <div style="border: 1px solid black; width: {$šířkaGrafu}px; height: 16px; padding: 0px; text-align: center; background-color: #cfc;">
+ <div style="margin: 0px; background-color: #A4E666; width: {@hodnota*$šířkaGrafu div 100}px; height: 16px;"><xsl:call-template name="varováníRetardace"/></div>
+ <p style="margin: 0px; font-size: 12px; position: relative; top: -15px;">
+ <xsl:value-of select="@hodnota"/>/100
+ </p>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">Hodnota měřáku musí být nejméně 0 a nejvíce 100 (udává procenta).</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
--- a/šablona/makra.xsl Thu Jan 05 16:24:56 2012 +0100
+++ b/šablona/makra.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -1,1 +1,30 @@
-../vstup/makra.xsl
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:XSL="http://example.com/XSL">
+ <xsl:output method="xml" indent="yes" encoding="UTF-8" />
+ <xsl:namespace-alias stylesheet-prefix="XSL" result-prefix="xsl"/>
+
+ <xsl:template match="/">
+ <XSL:stylesheet version="2.0">
+ <xsl:text>
+</xsl:text>
+ <xsl:comment>
+ Tento seznam maker je automaticky generovaný.
+ Neupravujte ho ručně – použijte příkaz „ant makra“.
+</xsl:comment>
+ <xsl:text>
+ </xsl:text>
+ <!-- Makra dodávaná jako součást programu: -->
+ <xsl:for-each select="collection('./makra/?select=*.xsl')">
+ <XSL:include href="{document-uri(.)}"/>
+ </xsl:for-each>
+
+ <!-- Uživatelská makra -->
+ <xsl:for-each select="collection('../vstup/makra/?select=*.xsl')">
+ <XSL:include href="{document-uri(.)}"/>
+ </xsl:for-each>
+ </XSL:stylesheet>
+ </xsl:template>
+
+</xsl:stylesheet>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/šablona/makra/diagramy.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+ xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ exclude-result-prefixes="m j">
+
+ <!--
+ Diagramy/grafy
+ **************
+ Můžeme vložit diagram – obrázek.
+ Pro jejich vykreslování se používá Graphviz – diagramy zadáváme v jeho syntaxi.
+ *
+ @orientace „vodorovně“ nebo „svisle“ (výchozí)
+ @nadpis můžeme uvést název diagramu
+ -->
+ <xsl:template match="m:diagram">
+ <!--
+ TODO: umožnit vkládání diagramů ze souboru (@src)
+ -->
+ <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>
+
+</xsl:stylesheet>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/šablona/makra/odkazy.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ exclude-result-prefixes="m">
+
+ <!--
+ 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="encode-for-uri(concat(@href, $výstupníPřípona))"/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ </xsl:template>
+
+</xsl:stylesheet>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/šablona/makra/tabulka.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ exclude-result-prefixes="m">
+
+ <!--
+ Jednoduché tabulky
+ ******************
+ Data zadáváme do těla elementu.
+ Sloupce oddělujeme tabulátorem (může jich být víc, minimálně však jeden, mezery nestačí).
+ První řádek se považuje za záhlaví (nadpisy sloupců).
+ *
+ -->
+ <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>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/šablona/makra/vycpávka.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ exclude-result-prefixes="m">
+
+ <!--
+ Vycpávkový text
+ ***************
+ Vkládá Lorem Ipsum.
+ *
+ @odstavců počet odstavců k vložení
+ -->
+ <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="tokenize($prostýText, '\n')">
+ <p><xsl:value-of select="."/></p>
+ </xsl:for-each>
+ </xsl:template>
+
+</xsl:stylesheet>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/šablona/makra/wiki.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+ xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ exclude-result-prefixes="m j">
+
+ <!--
+ Wiki syntaxe
+ ************
+ Text nemusíme vkládat v (X)HTML, ale můžeme ho uzavřít do této značky a používat „wiki“ syntaxi.
+ *
+ @syntaxe nepovinný atribut (zatím je podporován jen markdown procesor).
+ -->
+ <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>
+
+</xsl:stylesheet>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/šablona/makra/zvýraznění-syntaxe.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+ xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ exclude-result-prefixes="m j">
+
+ <!--
+ Zvýraznění syntaxe zdrojového kódu
+ **********************************
+ Ukázky zdrojového kódu budou mít zvýrazněnou syntaxi pro větší přehlednost.
+ *
+ @jazyk programovací jazyk, ve kterém je daný zdrojový kód
+ @src zdrojový kód nemusí být uvnitř elementu, ale můžeme se odkázat na externí soubor
+ @odkaz nastavíme hodnotu „ano“, pokud chceme vložit odkaz na soubor je stažení
+ -->
+ <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>
+
+</xsl:stylesheet>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/šablona/stránka-společné.xsl Fri Jan 06 20:48:42 2012 +0100
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://www.w3.org/1999/xhtml"
+ xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
+ xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
+ xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+ xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fn="http://www.w3.org/2005/xpath-functions"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ exclude-result-prefixes="fn h s k m j xs">
+
+ <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: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: -->
+ <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>
+
+</xsl:stylesheet>
--- 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>