šablona/makra/diagramy.xsl
author František Kučera <franta-hg@frantovo.cz>
Thu Jul 05 14:27:01 2012 +0200 (2012-07-05)
changeset 106 ae484a54d7fb
parent 76 c7746d95283d
child 111 d59023a42d4b
permissions -rw-r--r--
#20 Skriptování: Podpora spouštění skriptů ze šablon (ne jen z dokumentů), oprava chyby (URI stránky bylo null),
ale při přiřazování výstupu skriptu do proměnné nejde použít disable-output-escaping="yes" resp. vloží se escapovaný výstup
(jiná makra lze přes proměnné procpat a používat je tak v jiných makrech).

viz http://www.stylusstudio.com/xsllist/200105/post40940.html
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!--
     3 XML Web generátor – program na generování webových stránek
     4 Copyright © 2012 František Kučera (frantovo.cz)
     5 
     6 This program is free software: you can redistribute it and/or modify
     7 it under the terms of the GNU General Public License as published by
     8 the Free Software Foundation, either version 3 of the License, or
     9 (at your option) any later version.
    10 
    11 This program is distributed in the hope that it will be useful,
    12 but WITHOUT ANY WARRANTY; without even the implied warranty of
    13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    14 GNU General Public License for more details.
    15 
    16 You should have received a copy of the GNU General Public License
    17 along with this program.  If not, see <http://www.gnu.org/licenses/>.
    18 -->
    19 <xsl:stylesheet version="2.0"
    20 	xmlns="http://www.w3.org/1999/xhtml"
    21 	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
    22 	xmlns:j="java:cz.frantovo.xmlWebGenerator.makra.Diagram"
    23 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    24 	exclude-result-prefixes="m j">
    25 
    26 	<!--
    27 		Diagramy/grafy
    28 		**************
    29 		Můžeme vložit diagram – obrázek.
    30 		Pro jejich vykreslování se používá Graphviz – diagramy zadáváme v jeho syntaxi.
    31 		*
    32 		@orientace „vodorovně“ nebo „svisle“ (výchozí)
    33 		@nadpis můžeme uvést název diagramu
    34 		@kompletní „ano“ → předpokládáme kompletní zdroják v GraphViz syntaxi (pak nemá smysl uvádět orientaci). Výchozí je však „ne“ → uživatel zadává jen „vnitřek“ grafu – např. „A -> B; B -> C;“.  
    35 		@src zadání diagramu načteme ze souboru (potom je výchozí kompletní = 'ne')
    36 	-->
    37 	<xsl:template match="m:diagram">
    38 		<xsl:call-template name="vložDiagram">
    39 			<xsl:with-param name="zadání" select="text()"/>
    40 			<xsl:with-param name="kompletní" select="@kompletní = 'ano'"/>
    41 		</xsl:call-template>
    42 	</xsl:template>
    43 	
    44 	<xsl:template match="m:diagram[@src]">
    45 		<xsl:call-template name="vložDiagram">
    46 			<xsl:with-param name="zadání" select="m:načti-textový-soubor(@src)"/>
    47 			<xsl:with-param name="kompletní" select="not(@kompletní) or @kompletní = 'ano'"/>
    48 		</xsl:call-template>
    49 	</xsl:template>
    50 
    51 	<xsl:template name="vložDiagram">
    52 		<xsl:param name="zadání"/>
    53 		<xsl:param name="kompletní"/>
    54 		<xsl:variable name="souborDiagramu" select="j:vytvořDiagram(
    55 															$zadání, 
    56 															@orientace = 'vodorovně', 
    57 															$kompletní,
    58 															tokenize(base-uri(), '/')[last()],
    59 															@src
    60 															)"/>
    61 		<xsl:choose>
    62 			<xsl:when test="$souborDiagramu">
    63 				<div class="diagram">
    64 					<a href="{encode-for-uri($souborDiagramu)}.svg">
    65 						<img
    66 							src="{encode-for-uri($souborDiagramu)}.svg" 
    67 							alt="Diagram {(@nadpis, $souborDiagramu)[1]} | pokud nevidíte obrázek, váš prohlížeč stojí za starou bačkoru"
    68 							title="{@nadpis} (klikněte pro zobrazení samotného diagramu)"/>
    69 					</a>
    70 					<!-- 
    71 						TODO: SVG+PNG:
    72 						<xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/>
    73 						<object
    74 						data="{$souborDiagramu}.svg"
    75 						type="image/svg+xml"
    76 						style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}">
    77 						<img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/>
    78 						</object>
    79 					-->
    80 					<xsl:if test="@nadpis">
    81 						<p class="nadpis"><xsl:value-of select="@nadpis"/></p>
    82 					</xsl:if>
    83 				</div>
    84 			</xsl:when>
    85 			<xsl:otherwise>
    86 				<xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message>
    87 			</xsl:otherwise>
    88 		</xsl:choose>
    89 	</xsl:template>
    90 
    91 </xsl:stylesheet>
    92