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