vstup/makra/hg-verze.xsl
changeset 107 379a2a893fd1
child 108 8d9cab64c335
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vstup/makra/hg-verze.xsl	Thu Jul 05 19:10:42 2012 +0200
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+	xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:h="http://www.w3.org/1999/xhtml"
+	xmlns:s="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/strana"
+	xmlns:k="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/konfigurace"
+	xmlns:m="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/makro"
+	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+	xmlns:fn="http://www.w3.org/2005/xpath-functions"
+	xmlns:svg="http://www.w3.org/2000/svg"
+	xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	exclude-result-prefixes="fn h s k m xs">
+
+	<!-- Vypíše verze z verzovacího systému: -->
+	<xsl:template match="m:hg-verze">
+		<xsl:variable name="zadáníSkriptu">
+			<!--
+				TODO:
+				Zahazovat XML deklaraci bychom mohli v Javě u všech skriptů… 
+				Nicméně současná dohoda je taková, že skripty vracejí fragment, ne celý dokument,
+				což má výhodu v tom, že můžou vrátit kus textu a nějakou tu značku
+				a nemusí to být zabalené v kořenovém elementu.
+				
+			-->
+			<m:skript jazyk="bash" výstup="xml">hg log --style xml | awk '{if(NR&gt;1)print}';</m:skript>
+			<!--
+				Také bychom filtrování mohli provés ve skriptu…
+				hg log … | xpath -e "//logentry[tag[starts-with(., 'v')]]" 2>/dev/null
+				 …ale to by bylo trochu zbytečně pracné.
+			-->
+		</xsl:variable>
+
+		<xsl:variable name="výstupSkriptu">
+			<xsl:apply-templates select="$zadáníSkriptu/*"/>
+		</xsl:variable>
+
+		<table>
+			<thead>
+				<tr>
+					<td>Číslo verze</td>
+					<td>Datum vydání</td>
+				</tr>
+			</thead>
+			<tbody style="text-align: right;">
+				<!--
+					Výstup skriptu se bude nacházet v XHTML jmenném prostoru, což je obvykle v pořádku,
+					ale pro mezivýsledky to není úplně vhodné.
+				-->
+				<xsl:for-each select="$výstupSkriptu/h:log/h:logentry[h:tag[starts-with(text(), 'v')]]">
+					<tr>
+						<td><xsl:value-of select="substring(h:tag/text(), 2)"/></td>
+						<td><xsl:value-of select="format-dateTime(h:date, '[D]. [M]. [Y0001]')"/></td>
+					</tr>
+				</xsl:for-each>
+			</tbody>
+		</table>
+	</xsl:template>
+
+</xsl:stylesheet>
+