Changeset 52:a221785fe3ac
- Timestamp:
- 01/06/12 21:58:52 (13 years ago)
- Branch:
- default
- Files:
-
- 1 added
- 3 modified
Legend:
- Unmodified
- Added
- Removed
-
vstup/zdrojáky.xml
r41 r52 65 65 # tento kód nebude zvýrazněn, protože atribut „jazyk“ chybí 66 66 # <blee/></m:pre> 67 68 <h2>Objekty</h2> 67 69 70 <p> 71 Při vývoji softwaru používáme <abbr title="objektově orientované programování">OOP</abbr>. 72 </p> 73 74 <m:diagram src="kočka-a-pes-oop.dot" nadpis="Třídy Kočka a Pes jsou potomkem třídy Zvíře"/> 68 75 69 76 </text> -
šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
r43 r52 2 2 3 3 import java.io.File; 4 import java.io.FileInputStream;5 4 import java.io.IOException; 6 5 import java.io.PrintStream; … … 24 23 private static final String PŘÍKAZ_DOT = "dot"; 25 24 private static final String PŘÍKAZ_MARKDOWN = "markdown"; 26 private static final String ADRESÁŘ_VSTUPNÍ = "vstup";27 25 private static final String ADRESÁŘ_VÝSTUPNÍ = "výstup"; 28 26 private static int počítadloDiagramů = 0; … … 99 97 * Vytvoří obrázek s diagramem. 100 98 * @param zadání definice diagramu ve formátu dot 101 * @param vodorovně zda má být graf orientovaný vodorovně 99 * @param vodorovně zda má být graf orientovaný vodorovně (funguje jen při <code>kompletní = false</code>) 100 * @param kompletní false, pokud k zadání chceme doplnit <code>digraph d {…}</code> 102 101 * @return název souboru bez přípony, který byl vytvořen, nebo null, pokud došlo k chybě. 103 102 */ 104 public static String vytvořDiagram(String zadání, boolean vodorovně ) throws IOException, InterruptedException {103 public static String vytvořDiagram(String zadání, boolean vodorovně, boolean kompletní) throws IOException, InterruptedException { 105 104 if (isPříkazDostupný(PŘÍKAZ_DOT)) { 106 105 počítadloDiagramů++; … … 108 107 String souborSložka = ADRESÁŘ_VÝSTUPNÍ + File.separator + soubor; 109 108 110 StringBuilder zdroják = new StringBuilder(zadání.length() + 200); 111 112 zdroják.append("digraph d {\n"); 113 zdroják.append("\tbgcolor=\"transparent\";\n"); 114 if (vodorovně) { 115 zdroják.append("\trankdir=LR;"); 109 String zdroják; 110 if (kompletní) { 111 zdroják = zadání; 112 } else { 113 StringBuilder b = new StringBuilder(zadání.length() + 200); 114 b.append("digraph d {\n"); 115 b.append("\tbgcolor=\"transparent\";\n"); 116 if (vodorovně) { 117 b.append("\trankdir=LR;"); 118 } 119 b.append(zadání); 120 b.append("}\n"); 121 zdroják = b.toString(); 116 122 } 117 zdroják.append(zadání);118 zdroják.append("}\n");119 123 120 124 Runtime r = Runtime.getRuntime(); -
šablona/makra/diagramy.xsl
r51 r52 7 7 exclude-result-prefixes="m j"> 8 8 9 <!-- 10 Diagramy/grafy 11 ************** 12 Můžeme vložit diagram – obrázek. 13 Pro jejich vykreslování se používá Graphviz – diagramy zadáváme v jeho syntaxi. 14 * 15 @orientace „vodorovně“ nebo „svisle“ (výchozí) 16 @nadpis můžeme uvést název diagramu 17 --> 18 <xsl:template match="m:diagram"> 19 <!-- 20 TODO: umožnit vkládání diagramů ze souboru (@src) 21 --> 22 <xsl:variable name="souborDiagramu" select="j:vytvořDiagram(text(), @orientace = 'vodorovně')"/> 23 <xsl:choose> 9 <!-- 10 Diagramy/grafy 11 ************** 12 Můžeme vložit diagram – obrázek. 13 Pro jejich vykreslování se používá Graphviz – diagramy zadáváme v jeho syntaxi. 14 * 15 @orientace „vodorovně“ nebo „svisle“ (výchozí) 16 @nadpis můžeme uvést název diagramu 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 @src zadání diagramu načteme ze souboru (potom je výchozí kompletní = 'ne') 19 --> 20 <xsl:template match="m:diagram"> 21 <xsl:call-template name="vložDiagram"> 22 <xsl:with-param name="zadání" select="text()"/> 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 39 <xsl:when test="$souborDiagramu"> 25 40 <div class="diagram"> … … 34 49 <xsl:variable name="svgDiagramu" select="document(concat($výstup, $souborDiagramu, '.svg'))/svg:svg"/> 35 50 <object 36 37 38 39 51 data="{$souborDiagramu}.svg" 52 type="image/svg+xml" 53 style="width: {$svgDiagramu/@width}; height: {$svgDiagramu/@height}"> 54 <img src="{$souborDiagramu}.png" alt="Diagram {$souborDiagramu}"/> 40 55 </object> 41 56 --> … … 48 63 <xsl:message terminate="yes">Při vytváření diagramu došlo k chybě.</xsl:message> 49 64 </xsl:otherwise> 50 51 65 </xsl:choose> 66 </xsl:template> 52 67 53 68 </xsl:stylesheet>