Changeset 113:18bf0044f5ab
- Timestamp:
- 07/06/12 14:52:05 (12 years ago)
- Author:
- František Kučera <franta-hg@…>
- Branch:
- default
- Message:
-
#20 Skriptování: uvnitř zadání skriptu lze používat jiná makra (interpretují se před provedením skriptu).
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
r97
|
r113
|
|
11 | 11 | <p> |
12 | 12 | <strong>Naše adresa:</strong><br/> |
| 13 | <m:firma/><br/> |
13 | 14 | Polární 128<br/> |
14 | 15 | Tučňákova Lhota<br/> |
-
r112
|
r113
|
|
146 | 146 | ]]></m:skript></pre> |
147 | 147 | |
148 | | <h2 id="makraVeSkriptech">Makra ve skriptech</h2> |
| 148 | <h2 id="makraZeSkriptů">Makra ze skriptů</h2> |
149 | 149 | <p> |
150 | 150 | XML generované skriptem může také obsahovat makra, která se následně interptetují. |
… |
… |
|
215 | 215 | </p> |
216 | 216 | |
| 217 | <h2>Makra ve skriptech</h2> |
| 218 | |
| 219 | <p> |
| 220 | Uvnitř zdrojového kódu skriptu můžeme používat jiná makra. |
| 221 | Např. tento kód: |
| 222 | </p> |
| 223 | |
| 224 | <m:pre jazyk="xml"><![CDATA[<pre> |
| 225 | <m:skript jazyk="bash"> |
| 226 | echo "Náš podnik se jmenuje <m:firma/>"; |
| 227 | </m:skript> |
| 228 | </pre>]]></m:pre> |
| 229 | |
| 230 | <p> |
| 231 | nám vygeneruje: |
| 232 | </p> |
| 233 | |
| 234 | <pre><m:skript jazyk="bash"> |
| 235 | echo "Náš podnik se jmenuje <m:firma/>"; |
| 236 | </m:skript></pre> |
| 237 | |
| 238 | <p> |
| 239 | Můžete si tak vytvořit makra pro opakující se části |
| 240 | a používat je jak v textu stránek, tak ve skriptech nebo diagramech. |
| 241 | Jen pozor na ošetření zvláštních znaků – pokud text takové znaky obsahuje, |
| 242 | je dobré ho zabalit ještě do jedné značky, která se postará o <em>escapování</em> |
| 243 | pro daný kontext (skriptovací jazyk a prostředí v něm – např. apostrofy vs. uvozovky). |
| 244 | </p> |
| 245 | |
217 | 246 | <h2>Skripty v makrech</h2> |
218 | 247 | <p> |
219 | | Uvnitř maker můžeme volat<m:podČarou> |
| 248 | Uvnitř definic maker můžeme volat<m:podČarou> |
220 | 249 | Ovšem trochu jiným způsobem, než ve stránkách – |
221 | 250 | nacházíme se totiž v <em>programu</em> (XSL šablona definující makro) |
… |
… |
|
282 | 311 | |
283 | 312 | <p> |
284 | | Podobně bychom mohli postupovat i u <a href="#makraVeSkriptech">diagramu</a> – |
| 313 | Podobně bychom mohli postupovat i u <a href="#makraZeSkriptů">diagramu</a> – |
285 | 314 | negenerovat skriptem značky makra, ale pouze jeho obsah – zadání diagramu, nebo jen jeho část. |
286 | 315 | Někdy se ale může hodit ve skriptu nastavovat atributy elementů nebo elementy vytvářet dynamicky. |
-
r87
|
r113
|
|
2 | 2 | * XML Web generátor – program na generování webových stránek |
3 | 3 | * Copyright © 2012 František Kučera (frantovo.cz) |
4 | | * |
| 4 | * |
5 | 5 | * This program is free software: you can redistribute it and/or modify |
6 | 6 | * it under the terms of the GNU General Public License as published by |
7 | 7 | * the Free Software Foundation, either version 3 of the License, or |
8 | 8 | * (at your option) any later version. |
9 | | * |
| 9 | * |
10 | 10 | * This program is distributed in the hope that it will be useful, |
11 | 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | 13 | * GNU General Public License for more details. |
14 | | * |
| 14 | * |
15 | 15 | * You should have received a copy of the GNU General Public License |
16 | | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 | 17 | */ |
18 | 18 | package cz.frantovo.xmlWebGenerator; |
19 | 19 | |
20 | 20 | import java.io.File; |
21 | | import java.util.Date; |
22 | 21 | import java.net.URI; |
23 | 22 | import java.net.URISyntaxException; |
| 23 | import java.util.Date; |
24 | 24 | |
25 | 25 | /** |
26 | 26 | * Společná knihovna funkcí volaných z XSLT |
27 | | * |
| 27 | * |
28 | 28 | * @author František Kučera (frantovo.cz) |
29 | 29 | */ |
… |
… |
|
32 | 32 | /** |
33 | 33 | * Zjištuje, kdy byl naposledy daný soubor změněn. |
| 34 | * |
34 | 35 | * @param soubor cesta k souboru |
35 | 36 | * @return datum poslední změny |
… |
… |
|
41 | 42 | return new Date(f.lastModified()); |
42 | 43 | } |
| 44 | |
| 45 | public static String spojText(String[] kusyTextu) { |
| 46 | if (kusyTextu == null || kusyTextu.length < 1) { |
| 47 | return null; |
| 48 | } else { |
| 49 | StringBuilder sb = new StringBuilder(); |
| 50 | for (int i = 0; i < kusyTextu.length; i++) { |
| 51 | sb.append(kusyTextu[i]); |
| 52 | } |
| 53 | return sb.toString(); |
| 54 | } |
| 55 | } |
43 | 56 | } |
44 | | |
-
r108
|
r113
|
|
19 | 19 | |
20 | 20 | import static cz.frantovo.xmlWebGenerator.NástrojeCLI.načtiProud; |
| 21 | import static cz.frantovo.xmlWebGenerator.Funkce.spojText; |
21 | 22 | import static cz.frantovo.xmlWebGenerator.Xmlns.*; |
22 | 23 | import java.io.ByteArrayInputStream; |
… |
… |
|
75 | 76 | * @return výstup příkazu buď jako textový řetězec nebo jako XML (DOMSource) |
76 | 77 | */ |
77 | | 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 { |
78 | | String výstupSkriptu = získejVýstupSkriptu(skriptText, skriptSoubor, jazyk, uriStránky, nadpisStránky, perexStránky); |
| 78 | 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 { |
| 79 | String výstupSkriptu = získejVýstupSkriptu(spojText(skriptText), skriptSoubor, jazyk, uriStránky, nadpisStránky, perexStránky); |
79 | 80 | return vyrobXml(výstupSkriptu, zjistiFormát(výstupníFormát)); |
80 | 81 | } |
-
r108
|
r113
|
|
45 | 45 | <xsl:choose> |
46 | 46 | <xsl:when test="$režim = 'povolit'"> |
| 47 | <xsl:variable name="zadáníSkriptu"> |
| 48 | <xsl:apply-templates select="*|text()"/> |
| 49 | </xsl:variable> |
47 | 50 | <xsl:variable name="výstupSkriptu" select="j:interpretuj( |
48 | | text(), |
| 51 | $zadáníSkriptu, |
49 | 52 | @src, |
50 | 53 | @jazyk, |