# 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 @@
+
+
+