Makro pro odkazy #16 – Trac, Seznam, Google, RFC
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sat, 07 Jan 2012 00:14:27 +0100
changeset 53 7403128a8e0a
parent 52 a221785fe3ac
child 54 15c66c9048f2
Makro pro odkazy #16 – Trac, Seznam, Google, RFC
vstup/odkazy.xml
vstup/zdrojáky.xml
šablona/makra/odkazy.xsl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vstup/odkazy.xml	Sat Jan 07 00:14:27 2012 +0100
@@ -0,0 +1,47 @@
+<stránka
+	xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
+	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro">
+	<nadpis>Odkazy</nadpis>
+	<perex>Ukázka odkazů – interních, externích…</perex>
+
+	<text xmlns="http://www.w3.org/1999/xhtml">
+		
+		<p>Tady jsou nějaké naše odkazy. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mi nisl, tincidunt in viverra vitae, pharetra nec urna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer gravida gravida convallis. Phasellus erat ligula, vestibulum vel commodo ac, fringilla quis lorem. Morbi a massa a ligula tincidunt mattis et et felis. Vivamus a quam nulla, at vulputate nisi. Duis gravida placerat luctus. Phasellus vehicula lobortis arcu vitae hendrerit. Maecenas ut molestie elit. Aliquam erat volutpat. Curabitur sed euismod nisl. Mauris molestie tristique nulla, eu pellentesque sem tincidunt non.</p>
+		
+		<ul>
+			<li><m:a href="kontakt">Kontakt</m:a> – interní odkaz</li>
+			<li><m:a href="nejlepší linuxová distribuce" typ="seznam">Nejlepší distribuce</m:a> – vyhledávání pomocí Seznamu</li>
+			<li><m:a href="GNU/Linux a tučňák Tux" typ="google"><abbr title="GNU's Not Unix! – GNU Není Unix!">GNU</abbr>/Linux a tučňák Tux</m:a> – vyhledávání pomocí Googlu</li>
+			<li><m:a href="1855" typ="rfc"><em>Net</em>iketa</m:a> – internetový standard <abbr title="request for comments">RFC</abbr></li>
+		</ul>
+		
+		<p>
+			Podporované typy <m:a href="16" typ="trac">odkazů</m:a> zapisujeme takto:
+		</p>
+		
+		<m:pre jazyk="xml"><![CDATA[
+<m:a href="kontakt">Kontakt</m:a>
+<m:a href="nejlepší linuxová distribuce" typ="seznam">Nejlepší distribuce</m:a>
+<m:a href="GNU/Linux a tučňák Tux" typ="google">GNU/Linux a tučňák Tux</m:a>
+<m:a href="1855" typ="rfc">Netiketa</m:a>
+]]></m:pre>
+
+		<p>
+			Libovolné odkazy se zadávají pomocí úplně obyčejné XHTML značky, jak jste zvyklí :-)
+		</p>
+		
+		<m:pre jazyk="xml"><![CDATA[
+<a href="http://example.com/">nějaká stránka</a>
+<a href="mailto:anonym@example.com">nějaký e-mail</a>
+]]></m:pre>		
+	
+		<p>
+			Uvnitř textu odkazů (ať už těch vložených pomocí <m:a href="xmlns/makro" typ="trac">makra</m:a> nebo standardních z XHTML)
+			můžeme klidně používat další makra nebo vkládat jiné značky
+			– třeba obrázky nebo formátování 
+			– nemusíme se omezovat na prostý text!
+		</p>
+
+    </text>
+
+</stránka>
--- a/vstup/zdrojáky.xml	Fri Jan 06 21:58:52 2012 +0100
+++ b/vstup/zdrojáky.xml	Sat Jan 07 00:14:27 2012 +0100
@@ -7,7 +7,7 @@
 	<text xmlns="http://www.w3.org/1999/xhtml">
 		
 		<p>Zde je malá ukázka našich zdrojových kódů. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mi nisl, tincidunt in viverra vitae, pharetra nec urna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer gravida gravida convallis. Phasellus erat ligula, vestibulum vel commodo ac, fringilla quis lorem. Morbi a massa a ligula tincidunt mattis et et felis. Vivamus a quam nulla, at vulputate nisi. Duis gravida placerat luctus. Phasellus vehicula lobortis arcu vitae hendrerit. Maecenas ut molestie elit. Aliquam erat volutpat. Curabitur sed euismod nisl. Mauris molestie tristique nulla, eu pellentesque sem tincidunt non.</p>
-		<p>Morbi et magna a ligula pulvinar posuere. Pellentesque sit amet sem sed orci convallis tincidunt sed sed nisl. Aenean id nibh lorem, eget tempor mauris. Duis diam dui, ullamcorper quis iaculis eget, blandit non dolor. Vestibulum pretium lorem aliquet libero tristique vehicula. Quisque sit amet odio risus, sed tincidunt augue. Proin tincidunt eros eu sem sodales sit amet sollicitudin libero vestibulum. Proin sed nunc elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam mollis, nisl ut sodales sodales, quam lacus elementum magna, nec blandit leo enim id odio. Integer risus leo, sagittis vitae vestibulum vitae, elementum eu eros.	</p>
+		<p>Morbi et magna a ligula pulvinar posuere. Pellentesque sit amet sem <m:a href="odkazy" title="Ukázka odkazů">sed orci</m:a> convallis tincidunt sed sed nisl. Aenean id nibh lorem, eget tempor mauris. Duis diam dui, ullamcorper quis iaculis eget, blandit non dolor. Vestibulum pretium lorem aliquet libero tristique vehicula. Quisque sit amet odio risus, sed tincidunt augue. Proin tincidunt eros eu sem sodales sit amet sollicitudin libero vestibulum. Proin sed nunc elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam mollis, nisl ut sodales sodales, quam lacus elementum magna, nec blandit leo enim id odio. Integer risus leo, sagittis vitae vestibulum vitae, elementum eu eros.	</p>
 		
 		<h2>C++</h2>
 		<p>Ukázka převzatá ze stránky <a href="https://podnik.frantovo.cz/s/zdrojovy-kod">Zdrojový kód</a>:</p>
--- a/šablona/makra/odkazy.xsl	Fri Jan 06 21:58:52 2012 +0100
+++ b/šablona/makra/odkazy.xsl	Sat Jan 07 00:14:27 2012 +0100
@@ -4,20 +4,98 @@
 	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
 	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 	exclude-result-prefixes="m">
-   
-    <!--
-    	Makro pro převod interních odkazů:
-    		- doplnění správné přípony
-    		- URL kódování znaků
-    -->
-    <xsl:template match="m:a">
-    	<a>
-    		<xsl:copy-of select="@*"/>
-    		<xsl:attribute name="href">
-    			<xsl:value-of select="encode-for-uri(concat(@href, $výstupníPřípona))"/>
-    		</xsl:attribute>
-    		<xsl:apply-templates/>
-    	</a>
-    </xsl:template>
-    
+
+	<!--
+		Odkazy
+		******
+		Slouží hlavně k vkládání odkazů na jiné stránky v rámci webu.
+		*
+		@href zadáváme jen název souboru bez přípony – s nezakódovanou češtinou a s mezerami
+		@typ jiné typy odkazů (výchozí jsou interní odkazy v rámci webu)
+	-->
+	<xsl:template match="m:a">
+		<a>
+			<xsl:copy-of select="@*"/>
+			<xsl:attribute name="href">
+				<xsl:value-of select="encode-for-uri(concat(@href, $výstupníPřípona))"/>
+			</xsl:attribute>
+			<xsl:apply-templates/>
+		</a>
+	</xsl:template>
+
+	<!--
+		Trac – wiki
+		***********
+		Odkazy na Trac našeho generátoru.
+		@href nečíselné parametry vedou do wiki
+	-->
+	<xsl:template match="m:a[@typ='trac' and not(number(@href))]">
+		<xsl:call-template name="vložOdkaz">
+			<xsl:with-param name="url" select="
+				concat(
+					'https://trac.frantovo.cz/xml-web-generator/wiki/', 
+					replace(encode-for-uri(@href), '%2F', '/')
+				)"/>
+		</xsl:call-template>		
+	</xsl:template>
+	
+	<!--
+		Trac – úkoly
+		************
+		Odkazy na Trac našeho generátoru.
+		@href číselné parametry vedou na úkoly
+	-->
+	<xsl:template match="m:a[@typ='trac' and number(@href)]">
+		<xsl:call-template name="vložOdkaz">
+			<xsl:with-param name="url" select="
+				concat(
+					'https://trac.frantovo.cz/xml-web-generator/ticket/', 
+					@href
+				)"/>
+		</xsl:call-template>
+	</xsl:template>
+
+	<!-- 
+		Seznam.cz
+		*********
+		Vyhledávání pomocí Seznamu
+	-->
+	<xsl:template match="m:a[@typ='seznam']">
+		<xsl:call-template name="vložOdkaz">
+			<xsl:with-param name="url" select="concat('http://search.seznam.cz/?q=', encode-for-uri(@href))"/>
+		</xsl:call-template>
+	</xsl:template>
+
+	<!-- 
+		Google.com
+		**********
+		Vyhledávání pomocí Googlu
+	-->
+	<xsl:template match="m:a[@typ='google']">
+		<xsl:call-template name="vložOdkaz">
+			<xsl:with-param name="url" select="concat('https://encrypted.google.com/search?q=', encode-for-uri(@href))"/>
+		</xsl:call-template>	
+	</xsl:template>
+	
+	<!-- 
+		Request for comments
+		********************
+		Internetové standardy – RFC
+	-->
+	<xsl:template match="m:a[@typ='rfc']">
+		<xsl:call-template name="vložOdkaz">
+			<xsl:with-param name="url" select="concat('https://tools.ietf.org/html/rfc', @href)"/>
+		</xsl:call-template>
+	</xsl:template>
+	
+	
+	<xsl:template name="vložOdkaz">
+		<xsl:param name="url"/>
+		<a>
+			<xsl:copy-of select="@*"/>
+			<xsl:attribute name="href"><xsl:value-of select="$url"/></xsl:attribute>
+			<xsl:apply-templates/>
+		</a>		
+	</xsl:template>
+
 </xsl:stylesheet>