Ukázka uživatelského „makra“ a vkládání odkazů na CSS a JS soubory.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 03 Apr 2011 20:12:33 +0200
changeset 104e70453a027f
parent 9 71275159d985
child 11 78a8dd1eeb2b
Ukázka uživatelského „makra“ a vkládání odkazů na CSS a JS soubory.
build.xml
vstup/produkty.xml
vstup/web.conf
šablona/stránka.xsl
     1.1 --- a/build.xml	Sun Apr 03 18:44:35 2011 +0200
     1.2 +++ b/build.xml	Sun Apr 03 20:12:33 2011 +0200
     1.3 @@ -12,6 +12,7 @@
     1.4  	
     1.5  	<target name="stránky" description="Vygeneruje XHTML webové stránky.">		
     1.6  		<xslt basedir="${vstup}" destdir="${výstup}" includes="*.xml" extension=".xhtml" style="${šablona}/stránka.xsl">
     1.7 +			<param name="konfigurák" expression="../${vstup}/web.conf"/>
     1.8  			<classpath location="/usr/share/java/saxonb-9.0.jar"/>
     1.9  			<classpath location="${funkce}"/>
    1.10  			<factory name="net.sf.saxon.TransformerFactoryImpl">
     2.1 --- a/vstup/produkty.xml	Sun Apr 03 18:44:35 2011 +0200
     2.2 +++ b/vstup/produkty.xml	Sun Apr 03 20:12:33 2011 +0200
     2.3 @@ -1,4 +1,6 @@
     2.4 -<stránka xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/prostor">
     2.5 +<stránka
     2.6 +	xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/prostor"
     2.7 +	xmlns:g="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/prostor">
     2.8  	<nadpis>Produkty</nadpis>
     2.9  	<perex>Co vyrábíme.</perex>
    2.10  	<pořadí>20</pořadí>
    2.11 @@ -7,6 +9,9 @@
    2.12  		<p>
    2.13  		    naše produkty…
    2.14  		</p>
    2.15 +		
    2.16 +		<p>Vhodnost zvířete do domácnosti:</p>
    2.17 +		<g:měřák hodnota="80"/>
    2.18      </text>
    2.19  
    2.20  </stránka>
     3.1 --- a/vstup/web.conf	Sun Apr 03 18:44:35 2011 +0200
     3.2 +++ b/vstup/web.conf	Sun Apr 03 20:12:33 2011 +0200
     3.3 @@ -5,8 +5,23 @@
     3.4  		<jméno>František Kučera</jméno>
     3.5  		<email>nereknu_nechci_spam@example.com</email>
     3.6  	</autor>
     3.7 +	
     3.8 +	<!-- TODO: XML Schéma a popisy v něm-->
     3.9 +	
    3.10 +	<!-- Základní URL našeho webu, mělo by končit pomlčkou – pro generování RSS/Atom -->
    3.11  	<url>https://trac.frantovo.cz/xml-web-generator/</url>
    3.12 +	
    3.13 +	<!-- ID našeho webu (každý by si měl vygenerovat svoje) – pro Atom -->
    3.14  	<uuid>399a714c-956e-444c-a8f4-afe8f0df802a</uuid>
    3.15 +	
    3.16 +	<!-- Kód našeho webu, použije se jako součást identifikátoru položek v RSS/Atomu -->
    3.17  	<kod>PokusnyWeb123</kod>
    3.18  	
    3.19 +	<!--
    3.20 +		Odkazy na JavaScripty a kaskádové styly, které se vloží do hlavičky každé stránky.
    3.21 +		Můžeme jich uvést libovolné množství.
    3.22 +	-->
    3.23 +	<css>css/styl.css</css>
    3.24 +	<js>js/skript.js</js>
    3.25 +	
    3.26  </web>
     4.1 --- a/šablona/stránka.xsl	Sun Apr 03 18:44:35 2011 +0200
     4.2 +++ b/šablona/stránka.xsl	Sun Apr 03 20:12:33 2011 +0200
     4.3 @@ -13,14 +13,19 @@
     4.4  		encoding="UTF-8"		
     4.5  		doctype-public="-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" 
     4.6  		doctype-system="http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd"/>
     4.7 +		
     4.8 +	<xsl:param name="konfigurák"/>
     4.9  	
    4.10  	<!-- Celý dokument: -->
    4.11  	<xsl:template match="/">
    4.12 +		<xsl:variable name="konfigurace" select="document($konfigurák)"/>
    4.13  		<html>
    4.14  			<head>
    4.15  				<title><xsl:value-of select="g:stránka/g:nadpis"/></title>
    4.16  				<link title="Novinky (Atom)" href="atom.xml" type="application/atom+xml" rel="alternate"/>
    4.17 -				<link title="Novinky (RSS)"  href="rss.xml"  type="application/rss+xml"  rel="alternate"/>				
    4.18 +				<link title="Novinky (RSS)"  href="rss.xml"  type="application/rss+xml"  rel="alternate"/>
    4.19 +				<xsl:apply-templates select="$konfigurace/g:web/g:js"/>
    4.20 +				<xsl:apply-templates select="$konfigurace/g:web/g:css"/>				
    4.21  			</head>
    4.22  			<body>
    4.23  				<xsl:apply-templates select="document(fn:encode-for-uri('../vstup/záhlaví.inc'))/g:stránka/h:text/node()"/>			
    4.24 @@ -49,5 +54,31 @@
    4.25  			<xsl:apply-templates/>
    4.26  		</xsl:element>
    4.27      </xsl:template>
    4.28 +    
    4.29 +    <xsl:template match="g:web/g:js">
    4.30 +    	<script src="{text()}" type="text/javascript" />
    4.31 +    </xsl:template>
    4.32 +    <xsl:template match="g:web/g:css">
    4.33 +    	<link href="{text()}" type="text/css" rel="StyleSheet" />
    4.34 +    </xsl:template>
    4.35 +    
    4.36 +    <!-- Ukázka vlastního „makra“: -->
    4.37 +    <xsl:template match="g:měřák">
    4.38 +    	<xsl:variable name="hodnota" select="number(@hodnota)"/>
    4.39 +    	<xsl:variable name="šířkaGrafu" select="128"/>
    4.40 +		<xsl:choose>			
    4.41 +			<xsl:when test="$hodnota &gt;= 0 and $hodnota &lt;= 100">				
    4.42 +				<div style="border: 1px solid black; width: {$šířkaGrafu}px; height: 16px; padding: 0px; text-align: center; background-color: #cfc;">			
    4.43 +					<div style="margin: 0px; background-color: #A4E666; width: {@hodnota*$šířkaGrafu div 100}px; height: 16px;"/>
    4.44 +					<p style="margin: 0px; font-size: 12px; position: relative; top: -15px;">
    4.45 +						<xsl:value-of select="@hodnota"/>/100
    4.46 +					</p>	
    4.47 +				</div>
    4.48 +			</xsl:when>
    4.49 +			<xsl:otherwise>
    4.50 +				<xsl:message terminate="yes">Hodnota měřáku musí být nejméně 0 a nejvíce 100 (udává procenta).</xsl:message>
    4.51 +			</xsl:otherwise>
    4.52 +		</xsl:choose>
    4.53 +	</xsl:template>
    4.54  
    4.55  </xsl:stylesheet>