# HG changeset patch # User František Kučera <franta-hg@frantovo.cz> # Date 1301854353 -7200 # Node ID 4e70453a027fbb5c20501c10a73e57ebaea18e9a # Parent 71275159d98519508f3066d0b064b878c6b3c97b Ukázka uživatelského „makra“ a vkládání odkazů na CSS a JS soubory. diff -r 71275159d985 -r 4e70453a027f build.xml --- 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"> diff -r 71275159d985 -r 4e70453a027f vstup/produkty.xml --- 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> diff -r 71275159d985 -r 4e70453a027f vstup/web.conf --- 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> diff -r 71275159d985 -r 4e70453a027f šablona/stránka.xsl --- 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>