#20 Skriptování: Podpora spouštění skriptů ze šablon (ne jen z dokumentů), oprava chyby (URI stránky bylo null),
ale při přiřazování výstupu skriptu do proměnné nejde použít disable-output-escaping="yes" resp. vloží se escapovaný výstup
(jiná makra lze přes proměnné procpat a používat je tak v jiných makrech).
viz http://www.stylusstudio.com/xsllist/200105/post40940.html
1 <?xml version="1.0" encoding="UTF-8"?>
3 XML Web generátor – program na generování webových stránek
4 Copyright © 2012 František Kučera (frantovo.cz)
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
19 <xsl:stylesheet version="2.0"
20 xmlns="http://www.w3.org/1999/xhtml"
21 xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
22 xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
23 xmlns:xs="http://www.w3.org/2001/XMLSchema"
24 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
25 exclude-result-prefixes="m k xs">
30 Slouží k vkládání odkazů na jiné stránky v rámci webu.
32 @href zadáváme jen název souboru bez přípony – s nezakódovanou češtinou a s mezerami
35 <xsl:template match="m:a[not(@typ)]">
37 <xsl:copy-of select="@*"/>
38 <xsl:attribute name="href">
39 <xsl:value-of select="encode-for-uri(concat(@href, $výstupníPřípona))"/>
41 <xsl:apply-templates/>
45 <xsl:variable name="tracURL" select="'https://trac.frantovo.cz/xml-web-generator'"/>
50 Odkazy na Trac našeho generátoru.
52 @href nečíselné parametry vedou do wiki
54 <xsl:template match="m:a[@typ='trac' and not(number(@href))]">
55 <xsl:call-template name="vložOdkaz">
56 <xsl:with-param name="url" select="
59 m:escapuj-url-zachovej-lomítka(@href)
67 Odkazy na Trac našeho generátoru.
69 @href číselné parametry vedou na úkoly
71 <xsl:template match="m:a[@typ='trac' and number(@href)]">
72 <xsl:call-template name="vložOdkaz">
73 <xsl:with-param name="url" select="
84 Odkazy zdrojový kód našeho generátoru.
87 @řádek číslo řádku (volitelně)
89 <xsl:template match="m:a[@typ='zdroják' and (not(@řádek) or number(@řádek))]">
90 <xsl:call-template name="vložOdkaz">
91 <xsl:with-param name="url" select="
93 $tracURL, '/browser/',
94 m:escapuj-url-zachovej-lomítka(@href),
104 Stránka v encyklopedii.
107 @jazyk kód jazyka (výchozí je čeština)
109 <xsl:template match="m:a[@typ='wiki']">
110 <xsl:call-template name="vložOdkaz">
111 <xsl:with-param name="url" select="
113 'https://secure.wikimedia.org/wikipedia/', (@jazyk,'cs')[1], '/wiki/',
114 m:escapuj-url-zachovej-lomítka(@href)
122 Dokumentace k javovským třídám.
124 @href jméno třídy včetně balíčku – např. java.lang.String
125 @verze verze Javy, výchozí: 7
127 <xsl:template match="m:a[@typ='javadoc']">
128 <xsl:call-template name="vložOdkaz">
129 <xsl:with-param name="url" select="
131 'http://docs.oracle.com/javase/', (@verze,'7')[1], '/docs/api/',
132 replace(@href, '\.', '/'),
141 Vyhledávání pomocí Seznamu.
145 <xsl:template match="m:a[@typ='seznam']">
146 <xsl:call-template name="vložOdkaz">
147 <xsl:with-param name="url" select="
149 'http://search.seznam.cz/?q=',
150 encode-for-uri(@href)
158 Vyhledávání pomocí Googlu.
162 <xsl:template match="m:a[@typ='google']">
163 <xsl:call-template name="vložOdkaz">
164 <xsl:with-param name="url" select="
166 'https://encrypted.google.com/search?q=',
167 encode-for-uri(@href)
175 Internetové standardy – RFC.
179 <xsl:template match="m:a[@typ='rfc' and number(@href)]">
180 <xsl:call-template name="vložOdkaz">
181 <xsl:with-param name="url" select="
183 'https://tools.ietf.org/html/rfc',
192 Odkaz na e-mail v „obfuskovaném“ tvaru,
193 aby spamovací roboti nemohli tak snadno sbírat e-mailové adresy z webů.
194 Ale zároveň klikatelný, aby ho uživatel nemusel opisovat (vyžaduje JavaScript).
195 Obsah elementu je nepovinný – pokud chybí, vloží se e-mailová adresa.
197 @href e-mailová adresa (bez „mailto:“)
199 <xsl:template match="m:a[@typ='email']">
200 <xsl:variable name="česky" select="replace(replace(@href, '@', ' zavináč '), '\.', ' tečka ')"/>
201 <xsl:variable name="klíč" select="concat(tokenize($konfigurace/k:web/k:uuid/text(), '-')[1], '9df1')"/>
202 <xsl:variable name="pořadí"><xsl:number level="any"/></xsl:variable>
203 <xsl:variable name="idSpanu" select="concat('c', $klíč, $pořadí)"/>
204 <span title="{text()}" id="{$idSpanu}">
205 <xsl:value-of select="$česky"/>
207 <span id="{$idSpanu}b" style="display: none">
208 <xsl:apply-templates/>
210 <script type="text/javascript">
211 xwg.odkazNaElektronickouPoštu("<xsl:value-of select="$idSpanu"/>");
216 <xsl:template name="vložOdkaz">
217 <xsl:param name="url"/>
219 <!-- Zachováme pouze povolené atributy: -->
221 <xsl:copy-of select="@charset"/>
222 <xsl:copy-of select="@coords"/>
223 <xsl:copy-of select="@hreflang"/>
224 <xsl:copy-of select="@name"/>
225 <xsl:copy-of select="@rel"/>
226 <xsl:copy-of select="@rev"/>
227 <xsl:copy-of select="@shape"/>
228 <xsl:copy-of select="@target"/> <!-- Pozor: nepatří do striktního XHTML -->
230 <xsl:copy-of select="@accesskey"/>
231 <xsl:copy-of select="@class"/>
232 <xsl:copy-of select="@dir"/>
233 <xsl:copy-of select="@id"/>
234 <xsl:copy-of select="@lang"/>
235 <xsl:copy-of select="@style"/>
236 <xsl:copy-of select="@tabindex"/>
237 <xsl:copy-of select="@title"/>
238 <xsl:copy-of select="@xml:lang"/>
240 <xsl:copy-of select="@onblur"/>
241 <xsl:copy-of select="@onclick"/>
242 <xsl:copy-of select="@ondblclick"/>
243 <xsl:copy-of select="@onfocus"/>
244 <xsl:copy-of select="@onmousedown"/>
245 <xsl:copy-of select="@onmousemove"/>
246 <xsl:copy-of select="@onmouseout"/>
247 <xsl:copy-of select="@onmouseover"/>
248 <xsl:copy-of select="@onmouseup"/>
249 <xsl:copy-of select="@onkeydown"/>
250 <xsl:copy-of select="@onkeypress"/>
251 <xsl:copy-of select="@onkeyup"/>
253 <xsl:attribute name="href"><xsl:value-of select="$url"/></xsl:attribute>
254 <xsl:apply-templates/>