# HG changeset patch # User František Kučera # Date 1341579125 -7200 # Node ID 18bf0044f5ab96417c20ad3f89e52c1af3fe0a11 # Parent 7d4b23ccf144f275433458c7fcf8bc037c4ddcb9 #20 Skriptování: uvnitř zadání skriptu lze používat jiná makra (interpretují se před provedením skriptu). diff -r 7d4b23ccf144 -r 18bf0044f5ab vstup/kontakt.xml --- a/vstup/kontakt.xml Fri Jul 06 13:41:35 2012 +0200 +++ b/vstup/kontakt.xml Fri Jul 06 14:52:05 2012 +0200 @@ -10,6 +10,7 @@

Naše adresa:
+
Polární 128
Tučňákova Lhota
Česká republika diff -r 7d4b23ccf144 -r 18bf0044f5ab vstup/makra/firma.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vstup/makra/firma.xsl Fri Jul 06 14:52:05 2012 +0200 @@ -0,0 +1,19 @@ + + + + + + Chovatelská stanice a.s. + + + diff -r 7d4b23ccf144 -r 18bf0044f5ab vstup/skriptování.xml --- a/vstup/skriptování.xml Fri Jul 06 13:41:35 2012 +0200 +++ b/vstup/skriptování.xml Fri Jul 06 14:52:05 2012 +0200 @@ -145,7 +145,7 @@ echo "Perex: $XWG_STRANKA_PEREX"; ]]> -

Makra ve skriptech

+

Makra ze skriptů

XML generované skriptem může také obsahovat makra, která se následně interptetují. +

Makra ve skriptech

+ +

+ Uvnitř zdrojového kódu skriptu můžeme používat jiná makra. + Např. tento kód: +

+ + + + echo "Náš podnik se jmenuje "; + +]]> + +

+ nám vygeneruje: +

+ +

+				echo "Náš podnik se jmenuje ";
+		
+ +

+ Můžete si tak vytvořit makra pro opakující se části + a používat je jak v textu stránek, tak ve skriptech nebo diagramech. + Jen pozor na ošetření zvláštních znaků – pokud text takové znaky obsahuje, + je dobré ho zabalit ještě do jedné značky, která se postará o escapování + pro daný kontext (skriptovací jazyk a prostředí v něm – např. apostrofy vs. uvozovky). +

+

Skripty v makrech

- Uvnitř maker můžeme volat + Uvnitř definic maker můžeme volat Ovšem trochu jiným způsobem, než ve stránkách – nacházíme se totiž v programu (XSL šablona definující makro) nikoli v datovém souboru (XML stránka). @@ -281,7 +310,7 @@ -->

- Podobně bychom mohli postupovat i u diagramu – + Podobně bychom mohli postupovat i u diagramu – negenerovat skriptem značky makra, ale pouze jeho obsah – zadání diagramu, nebo jen jeho část. Někdy se ale může hodit ve skriptu nastavovat atributy elementů nebo elementy vytvářet dynamicky.

diff -r 7d4b23ccf144 -r 18bf0044f5ab šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Fri Jul 06 13:41:35 2012 +0200 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Fri Jul 06 14:52:05 2012 +0200 @@ -1,36 +1,37 @@ /** * XML Web generátor – program na generování webových stránek * Copyright © 2012 František Kučera (frantovo.cz) - * + * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ package cz.frantovo.xmlWebGenerator; import java.io.File; -import java.util.Date; import java.net.URI; import java.net.URISyntaxException; +import java.util.Date; /** * Společná knihovna funkcí volaných z XSLT - * + * * @author František Kučera (frantovo.cz) */ public class Funkce { /** * Zjištuje, kdy byl naposledy daný soubor změněn. + * * @param soubor cesta k souboru * @return datum poslední změny * @throws URISyntaxException @@ -40,5 +41,16 @@ File f = new File(uri); return new Date(f.lastModified()); } + + public static String spojText(String[] kusyTextu) { + if (kusyTextu == null || kusyTextu.length < 1) { + return null; + } else { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < kusyTextu.length; i++) { + sb.append(kusyTextu[i]); + } + return sb.toString(); + } + } } - diff -r 7d4b23ccf144 -r 18bf0044f5ab šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java --- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java Fri Jul 06 13:41:35 2012 +0200 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/makra/Skriptování.java Fri Jul 06 14:52:05 2012 +0200 @@ -18,6 +18,7 @@ package cz.frantovo.xmlWebGenerator.makra; import static cz.frantovo.xmlWebGenerator.NástrojeCLI.načtiProud; +import static cz.frantovo.xmlWebGenerator.Funkce.spojText; import static cz.frantovo.xmlWebGenerator.Xmlns.*; import java.io.ByteArrayInputStream; import java.io.File; @@ -74,8 +75,8 @@ * @param perexStránky perex stránky → proměnná prostředí * @return výstup příkazu buď jako textový řetězec nebo jako XML (DOMSource) */ - public static Source interpretuj(String skriptText, String skriptSoubor, String jazyk, String výstupníFormát, String uriStránky, String nadpisStránky, String perexStránky) throws Exception { - String výstupSkriptu = získejVýstupSkriptu(skriptText, skriptSoubor, jazyk, uriStránky, nadpisStránky, perexStránky); + public static Source interpretuj(String[] skriptText, String skriptSoubor, String jazyk, String výstupníFormát, String uriStránky, String nadpisStránky, String perexStránky) throws Exception { + String výstupSkriptu = získejVýstupSkriptu(spojText(skriptText), skriptSoubor, jazyk, uriStránky, nadpisStránky, perexStránky); return vyrobXml(výstupSkriptu, zjistiFormát(výstupníFormát)); } diff -r 7d4b23ccf144 -r 18bf0044f5ab šablona/makra/skriptování.xsl --- a/šablona/makra/skriptování.xsl Fri Jul 06 13:41:35 2012 +0200 +++ b/šablona/makra/skriptování.xsl Fri Jul 06 14:52:05 2012 +0200 @@ -44,8 +44,11 @@ + + +