Ukázka uživatelského „makra“ a vkládání odkazů na CSS a JS soubory.
--- a/build.xml Sun Apr 03 18:44:35 2011 +0200
+++ b/build.xml Sun Apr 03 20:12:33 2011 +0200
@@ -12,6 +12,7 @@
<target name="stránky" description="Vygeneruje XHTML webové stránky.">
<xslt basedir="${vstup}" destdir="${výstup}" includes="*.xml" extension=".xhtml" style="${šablona}/stránka.xsl">
+ <param name="konfigurák" expression="../${vstup}/web.conf"/>
<classpath location="/usr/share/java/saxonb-9.0.jar"/>
<classpath location="${funkce}"/>
<factory name="net.sf.saxon.TransformerFactoryImpl">
--- a/vstup/produkty.xml Sun Apr 03 18:44:35 2011 +0200
+++ b/vstup/produkty.xml Sun Apr 03 20:12:33 2011 +0200
@@ -1,4 +1,6 @@
-<stránka xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/prostor">
+<stránka
+ xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/prostor"
+ xmlns:g="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/prostor">
<nadpis>Produkty</nadpis>
<perex>Co vyrábíme.</perex>
<pořadí>20</pořadí>
@@ -7,6 +9,9 @@
<p>
naše produkty…
</p>
+
+ <p>Vhodnost zvířete do domácnosti:</p>
+ <g:měřák hodnota="80"/>
</text>
</stránka>
--- a/vstup/web.conf Sun Apr 03 18:44:35 2011 +0200
+++ b/vstup/web.conf Sun Apr 03 20:12:33 2011 +0200
@@ -5,8 +5,23 @@
<jméno>František Kučera</jméno>
<email>nereknu_nechci_spam@example.com</email>
</autor>
+
+ <!-- TODO: XML Schéma a popisy v něm-->
+
+ <!-- Základní URL našeho webu, mělo by končit pomlčkou – pro generování RSS/Atom -->
<url>https://trac.frantovo.cz/xml-web-generator/</url>
+
+ <!-- ID našeho webu (každý by si měl vygenerovat svoje) – pro Atom -->
<uuid>399a714c-956e-444c-a8f4-afe8f0df802a</uuid>
+
+ <!-- Kód našeho webu, použije se jako součást identifikátoru položek v RSS/Atomu -->
<kod>PokusnyWeb123</kod>
+ <!--
+ Odkazy na JavaScripty a kaskádové styly, které se vloží do hlavičky každé stránky.
+ Můžeme jich uvést libovolné množství.
+ -->
+ <css>css/styl.css</css>
+ <js>js/skript.js</js>
+
</web>
--- a/šablona/stránka.xsl Sun Apr 03 18:44:35 2011 +0200
+++ b/šablona/stránka.xsl Sun Apr 03 20:12:33 2011 +0200
@@ -13,14 +13,19 @@
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="konfigurák"/>
<!-- Celý dokument: -->
<xsl:template match="/">
+ <xsl:variable name="konfigurace" select="document($konfigurák)"/>
<html>
<head>
<title><xsl:value-of select="g:stránka/g:nadpis"/></title>
<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"/>
+ <link title="Novinky (RSS)" href="rss.xml" type="application/rss+xml" rel="alternate"/>
+ <xsl:apply-templates select="$konfigurace/g:web/g:js"/>
+ <xsl:apply-templates select="$konfigurace/g:web/g:css"/>
</head>
<body>
<xsl:apply-templates select="document(fn:encode-for-uri('../vstup/záhlaví.inc'))/g:stránka/h:text/node()"/>
@@ -49,5 +54,31 @@
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
+
+ <xsl:template match="g:web/g:js">
+ <script src="{text()}" type="text/javascript" />
+ </xsl:template>
+ <xsl:template match="g:web/g:css">
+ <link href="{text()}" type="text/css" rel="StyleSheet" />
+ </xsl:template>
+
+ <!-- Ukázka vlastního „makra“: -->
+ <xsl:template match="g: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;"/>
+ <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>