4 xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro" |
4 xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro" |
5 xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce" |
5 xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce" |
6 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
6 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
7 exclude-result-prefixes="m j"> |
7 exclude-result-prefixes="m j"> |
8 |
8 |
9 <!-- |
9 <!-- |
10 Diagramy/grafy |
10 Diagramy/grafy |
11 ************** |
11 ************** |
12 Můžeme vložit diagram – obrázek. |
12 Můžeme vložit diagram – obrázek. |
13 Pro jejich vykreslování se používá Graphviz – diagramy zadáváme v jeho syntaxi. |
13 Pro jejich vykreslování se používá Graphviz – diagramy zadáváme v jeho syntaxi. |
14 * |
14 * |
15 @orientace „vodorovně“ nebo „svisle“ (výchozí) |
15 @orientace „vodorovně“ nebo „svisle“ (výchozí) |
16 @nadpis můžeme uvést název diagramu |
16 @nadpis můžeme uvést název diagramu |
17 --> |
17 @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;“. |
18 <xsl:template match="m:diagram"> |
18 @src zadání diagramu načteme ze souboru (potom je výchozí kompletní = 'ne') |
19 <!-- |
19 --> |
20 TODO: umožnit vkládání diagramů ze souboru (@src) |
20 <xsl:template match="m:diagram"> |
21 --> |
21 <xsl:call-template name="vložDiagram"> |
22 <xsl:variable name="souborDiagramu" select="j:vytvořDiagram(text(), @orientace = 'vodorovně')"/> |
22 <xsl:with-param name="zadání" select="text()"/> |
23 <xsl:choose> |
23 <xsl:with-param name="kompletní" select="@kompletní = 'ano'"/> |
|
24 </xsl:call-template> |
|
25 </xsl:template> |
|
26 |
|
27 <xsl:template match="m:diagram[@src]"> |
|
28 <xsl:call-template name="vložDiagram"> |
|
29 <xsl:with-param name="zadání" select="unparsed-text(concat('../', $vstup, @src))"/> |
|
30 <xsl:with-param name="kompletní" select="not(@kompletní) or @kompletní = 'ano'"/> |
|
31 </xsl:call-template> |
|
32 </xsl:template> |
|
33 |
|
34 <xsl:template name="vložDiagram"> |
|
35 <xsl:param name="zadání"/> |
|
36 <xsl:param name="kompletní"/> |
|
37 <xsl:variable name="souborDiagramu" select="j:vytvořDiagram($zadání, @orientace = 'vodorovně', $kompletní)"/> |
|
38 <xsl:choose> |
24 <xsl:when test="$souborDiagramu"> |
39 <xsl:when test="$souborDiagramu"> |
25 <div class="diagram"> |
40 <div class="diagram"> |
26 <a href="{$souborDiagramu}.svg"> |
41 <a href="{$souborDiagramu}.svg"> |
27 <img |
42 <img |
28 src="{$souborDiagramu}.svg" |
43 src="{$souborDiagramu}.svg" |
31 </a> |
46 </a> |
32 <!-- |
47 <!-- |
33 TODO: SVG+PNG: |
48 TODO: SVG+PNG: |
34 <xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/> |
49 <xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/> |
35 <object |
50 <object |
36 data="{$souborDiagramu}.svg" |
51 data="{$souborDiagramu}.svg" |
37 type="image/svg+xml" |
52 type="image/svg+xml" |
38 style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}"> |
53 style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}"> |
39 <img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/> |
54 <img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/> |
40 </object> |
55 </object> |
41 --> |
56 --> |
42 <xsl:if test="@nadpis"> |
57 <xsl:if test="@nadpis"> |
43 <p class="nadpis"><xsl:value-of select="@nadpis"/></p> |
58 <p class="nadpis"><xsl:value-of select="@nadpis"/></p> |
44 </xsl:if> |
59 </xsl:if> |
45 </div> |
60 </div> |
46 </xsl:when> |
61 </xsl:when> |
47 <xsl:otherwise> |
62 <xsl:otherwise> |
48 <xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message> |
63 <xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message> |
49 </xsl:otherwise> |
64 </xsl:otherwise> |
50 </xsl:choose> |
65 </xsl:choose> |
51 </xsl:template> |
66 </xsl:template> |
52 |
67 |
53 </xsl:stylesheet> |
68 </xsl:stylesheet> |