Changeset 113:18bf0044f5ab
- Timestamp:
- 07/06/12 14:52:05 (13 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, |