18 --> |
18 --> |
19 <xsl:stylesheet version="2.0" |
19 <xsl:stylesheet version="2.0" |
20 xmlns="http://www.w3.org/1999/xhtml" |
20 xmlns="http://www.w3.org/1999/xhtml" |
21 xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro" |
21 xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro" |
22 xmlns:j="java:cz.frantovo.xmlWebGenerator.makra.Skriptování" |
22 xmlns:j="java:cz.frantovo.xmlWebGenerator.makra.Skriptování" |
|
23 xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace" |
23 xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana" |
24 xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana" |
24 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
25 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
25 exclude-result-prefixes="m j s"> |
26 exclude-result-prefixes="m j k s"> |
26 |
27 |
27 <!-- |
28 <!-- |
28 Skriptování |
29 Skriptování |
29 *********** |
30 *********** |
30 Provedeme skript zadaný v těle elementu a jeho výstup vložíme do stránky. |
31 Provedeme skript zadaný v těle elementu a jeho výstup vložíme do stránky. |
31 * |
32 * |
32 @jazyk programovací jazyk, např. bash, perl, php |
33 @jazyk programovací jazyk, např. bash, perl, php |
33 @výstup formát výstupu skriptu: text (výchozí) | xml (musí být validním fragmentem XML) |
34 @výstup formát výstupu skriptu: text (výchozí) | xml (musí být validním fragmentem XML) |
34 @src skript uložený v souboru místo v těle elementu |
|
35 --> |
35 --> |
36 <xsl:template match="m:skript"> |
36 <xsl:template match="m:skript"> |
37 <!-- |
|
38 TODO: |
|
39 - ošetření chyb |
|
40 - nastavení z web.conf (zákaz nebo ignorace skriptů) |
|
41 - podpora vkládání fragmentů XML, ne jen prostého textu |
|
42 --> |
|
43 |
37 |
44 <xsl:variable name="výstupSkriptu" select="j:interpretuj( |
38 <xsl:variable name="režim" select="$konfigurace/k:web/k:skriptování/k:režim/text()"/> |
45 text(), |
39 |
46 @jazyk, |
|
47 @výstup, |
|
48 document-uri(/), |
|
49 //s:stránka/s:nadpis/text(), |
|
50 //s:stránka/s:perex/text() |
|
51 )"/> |
|
52 <xsl:choose> |
40 <xsl:choose> |
53 <xsl:when test="$výstupSkriptu"> |
41 <xsl:when test="$režim = 'povolit'"> |
|
42 <xsl:variable name="výstupSkriptu" select="j:interpretuj( |
|
43 text(), |
|
44 @jazyk, |
|
45 @výstup, |
|
46 document-uri(/), |
|
47 //s:stránka/s:nadpis/text(), |
|
48 //s:stránka/s:perex/text() |
|
49 )"/> |
54 <xsl:choose> |
50 <xsl:choose> |
55 <xsl:when test="@výstup = 'xml'"><xsl:value-of select="$výstupSkriptu" disable-output-escaping="yes"/></xsl:when> |
51 <xsl:when test="$výstupSkriptu"> |
56 <xsl:otherwise><xsl:value-of select="$výstupSkriptu"/></xsl:otherwise> |
52 <xsl:choose> |
|
53 <xsl:when test="@výstup = 'xml'"><xsl:value-of select="$výstupSkriptu" disable-output-escaping="yes"/></xsl:when> |
|
54 <xsl:otherwise><xsl:value-of select="$výstupSkriptu"/></xsl:otherwise> |
|
55 </xsl:choose> |
|
56 </xsl:when> |
|
57 <xsl:otherwise> |
|
58 <xsl:message terminate="yes">Při interpretaci skriptu došlo k chybě.</xsl:message> |
|
59 </xsl:otherwise> |
57 </xsl:choose> |
60 </xsl:choose> |
58 </xsl:when> |
61 </xsl:when> |
59 <xsl:otherwise> |
62 |
60 <xsl:message terminate="yes">Při interpretaci skriptu došlo k chybě.</xsl:message> |
63 <xsl:when test="$režim = 'zakázat'"> |
|
64 <xsl:message terminate="yes">Stránka obsahuje skripty, ale skripty jsou zakázané → je potřeba je odstranit nebo upravit nastavení ve web.conf.</xsl:message> |
|
65 </xsl:when> |
|
66 <xsl:when test="$režim = 'ignorovat'"> |
|
67 <xsl:message>Stránka obsahuje skripty, ale skripty jsou ignorovány – změnu lze provést ve web.conf.</xsl:message> |
|
68 </xsl:when> |
|
69 <xsl:when test="$režim = 'vložit' and @výstup = 'xml'"> |
|
70 <xsl:message>Není možné jen tak vložit text, který měl mít výstup ve formátu XML – změnu lze provést ve web.conf</xsl:message> |
|
71 </xsl:when> |
|
72 <xsl:when test="$režim = 'vložit'"> |
|
73 <span class="vloženýNeinterpretovanýSkript jazyk-{@jazyk}"> |
|
74 <xsl:value-of select="text()"/> |
|
75 </span> |
|
76 </xsl:when> |
|
77 <xsl:otherwise><!-- varovat = výchozí možnost --> |
|
78 <xsl:choose> |
|
79 <xsl:when test="@výstup = 'xml'"> |
|
80 <xsl:message>Není možné možné vložit varování na místo, kde měl být skript generující XML – změnu lze provést ve web.conf</xsl:message> |
|
81 </xsl:when> |
|
82 <xsl:otherwise> |
|
83 <xsl:text>[VAROVÁNÍ (</xsl:text> |
|
84 <xsl:value-of select="@jazyk"/> |
|
85 <xsl:text>): skripty jsou vypnuté – lze je zapnout ve web.conf]</xsl:text> |
|
86 <xsl:message>Skript se neinterpretuje a vkládáme varování do stránky – změnu lze provést ve web.conf</xsl:message> |
|
87 </xsl:otherwise> |
|
88 </xsl:choose> |
61 </xsl:otherwise> |
89 </xsl:otherwise> |
62 </xsl:choose> |
90 </xsl:choose> |
63 |
|
64 |
|
65 </xsl:template> |
91 </xsl:template> |
66 |
92 |
67 </xsl:stylesheet> |
93 </xsl:stylesheet> |
68 |
94 |