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 10 4e70453a027f
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
--- 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 &gt;= 0 and $hodnota &lt;= 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>