šablona/makra/diagramy.xsl
changeset 52 a221785fe3ac
parent 51 df1f942f7b69
child 55 7a6267709af8
--- a/šablona/makra/diagramy.xsl	Fri Jan 06 20:48:42 2012 +0100
+++ b/šablona/makra/diagramy.xsl	Fri Jan 06 21:58:52 2012 +0100
@@ -6,21 +6,36 @@
 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 	exclude-result-prefixes="m j">
     
-    <!--
-    	Diagramy/grafy
-    	**************
-    	Můžeme vložit diagram – obrázek.
-    	Pro jejich vykreslování se používá Graphviz – diagramy zadáváme v jeho syntaxi.
-    	*
-    	@orientace „vodorovně“ nebo „svisle“ (výchozí)
-    	@nadpis můžeme uvést název diagramu
-    -->
-    <xsl:template match="m:diagram">
-    	<!-- 
-    		TODO: umožnit vkládání diagramů ze souboru (@src) 
-    	-->
-    	<xsl:variable name="souborDiagramu" select="j:vytvořDiagram(text(), @orientace = 'vodorovně')"/>
-    	<xsl:choose>
+	<!--
+		Diagramy/grafy
+		**************
+		Můžeme vložit diagram – obrázek.
+		Pro jejich vykreslování se používá Graphviz – diagramy zadáváme v jeho syntaxi.
+		*
+		@orientace „vodorovně“ nebo „svisle“ (výchozí)
+		@nadpis můžeme uvést název diagramu
+		@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;“.  
+		@src zadání diagramu načteme ze souboru (potom je výchozí kompletní = 'ne')
+	-->
+	<xsl:template match="m:diagram">
+		<xsl:call-template name="vložDiagram">
+			<xsl:with-param name="zadání" select="text()"/>
+			<xsl:with-param name="kompletní" select="@kompletní = 'ano'"/>
+		</xsl:call-template>
+	</xsl:template>
+	
+	<xsl:template match="m:diagram[@src]">
+		<xsl:call-template name="vložDiagram">
+			<xsl:with-param name="zadání" select="unparsed-text(concat('../', $vstup, @src))"/>
+			<xsl:with-param name="kompletní" select="not(@kompletní) or @kompletní = 'ano'"/>
+		</xsl:call-template>
+	</xsl:template>
+    
+    <xsl:template name="vložDiagram">
+		<xsl:param name="zadání"/>
+		<xsl:param name="kompletní"/>
+		<xsl:variable name="souborDiagramu" select="j:vytvořDiagram($zadání, @orientace = 'vodorovně', $kompletní)"/>
+		<xsl:choose>
 			<xsl:when test="$souborDiagramu">
 				<div class="diagram">
 					<a href="{$souborDiagramu}.svg">
@@ -33,10 +48,10 @@
 						TODO: SVG+PNG:
 						<xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/>
 						<object
-							data="{$souborDiagramu}.svg"
-							type="image/svg+xml"
-							style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}">
-								<img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/>
+						data="{$souborDiagramu}.svg"
+						type="image/svg+xml"
+						style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}">
+						<img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/>
 						</object>
 					-->
 					<xsl:if test="@nadpis">
@@ -47,7 +62,7 @@
 			<xsl:otherwise>
 				<xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message>
 			</xsl:otherwise>
-    	</xsl:choose>
-    </xsl:template>
+		</xsl:choose>
+	</xsl:template>
 
 </xsl:stylesheet>