Java funkce pro zjištění poslední úpravy souboru, Atom agregace, konfigurační soubor webu.
1.1 --- a/analýza/princip.dot Sun Apr 03 02:39:06 2011 +0200
1.2 +++ b/analýza/princip.dot Sun Apr 03 16:34:42 2011 +0200
1.3 @@ -1,11 +1,20 @@
1.4 digraph princip {
1.5 rankdir=LR
1.6
1.7 - gen [label="Generátor" shape="box" labelURL="xxxxxxxx"]
1.8 + gen [label="Generátor\n(Ant: build.xml)" shape="box"]
1.9 xml [label="Texty v XML"]
1.10 xhtml [label="XHTML web"]
1.11 - xslt [label="XSLT šablona"]
1.12 + xslt [label="XSLT šablony"]
1.13
1.14 - xml -> gen -> xhtml;
1.15 + atom [label="Atom"]
1.16 + rss [label="RSS"]
1.17 + sitemap [label="sitemap.xml"]
1.18 +
1.19 + xml -> gen;
1.20 xslt -> gen;
1.21 +
1.22 + gen -> xhtml;
1.23 + gen -> atom;
1.24 + gen -> rss;
1.25 + gen -> sitemap;
1.26 }
2.1 --- a/build.xml Sun Apr 03 02:39:06 2011 +0200
2.2 +++ b/build.xml Sun Apr 03 16:34:42 2011 +0200
2.3 @@ -7,19 +7,37 @@
2.4 <property name="temp" value="temp"/>
2.5 <property name="funkce" value="${šablona}/funkce/build/classes"/>
2.6
2.7 - <target name="generuj" description="Vygeneruje XHTML webové stránky.">
2.8 + <target name="generuj" description="Vygeneruje kompletní web." depends="kompiluj-funkce,stránky,agregace">
2.9 + </target>
2.10 +
2.11 + <target name="stránky" description="Vygeneruje XHTML webové stránky.">
2.12 <xslt basedir="${vstup}" destdir="${výstup}" includes="*.xml" extension=".xhtml" style="${šablona}/stránka.xsl">
2.13 <classpath location="/usr/share/java/saxonb-9.0.jar"/>
2.14 - <classpath location="${funkce}"/>
2.15 -
2.16 - <factory name="net.sf.saxon.TransformerFactoryImpl">
2.17 + <classpath location="${funkce}"/>
2.18 + <factory name="net.sf.saxon.TransformerFactoryImpl">
2.19 <attribute name="http://saxon.sf.net/feature/allow-external-functions" value="true"/>
2.20 </factory>
2.21 -
2.22 - <sysproperty key="javax.xml.parsers.DocumentBuilderFactory" value="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
2.23 - <sysproperty key="javax.xml.parsers.SAXParserFactory" value="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
2.24 - <sysproperty key="org.apache.xerces.xni.parser.XMLParserConfiguration" value="org.apache.xerces.parsers.XIncludeParserConfiguration"/>
2.25 </xslt>
2.26 </target>
2.27
2.28 + <target name="agregace" description="Vytvoří agregované výstupy: RSS, Atom, Sitemap.xml">
2.29 + <xslt in="${vstup}/web.conf" out="${výstup}/atom.xml" style="${šablona}/atom.xsl">
2.30 + <param name="konfigurák" expression="../vstup/web.conf"/>
2.31 + <classpath location="/usr/share/java/saxonb-9.0.jar"/>
2.32 + <classpath location="${funkce}"/>
2.33 + <factory name="net.sf.saxon.TransformerFactoryImpl">
2.34 + <attribute name="http://saxon.sf.net/feature/allow-external-functions" value="true"/>
2.35 + </factory>
2.36 + </xslt>
2.37 + </target>
2.38 +
2.39 + <target name="kompiluj-funkce" description="">
2.40 + <mkdir dir="${funkce}"/>
2.41 + <javac
2.42 + srcdir="${šablona}/funkce/src"
2.43 + destdir="${funkce}"
2.44 + includeAntRuntime="no">
2.45 + </javac>
2.46 + </target>
2.47 +
2.48 </project>
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/vstup/web.conf Sun Apr 03 16:34:42 2011 +0200
3.3 @@ -0,0 +1,12 @@
3.4 +<web xmlns="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/prostor">
3.5 + <název>Chovatelská stanice tučňáků</název>
3.6 + <podtitul>vše pro tučňáky</podtitul>
3.7 + <autor>
3.8 + <jméno>František Kučera</jméno>
3.9 + <email>nereknu_nechci_spam@example.com</email>
3.10 + </autor>
3.11 + <url>https://trac.frantovo.cz/xml-web-generator/</url>
3.12 + <uuid>399a714c-956e-444c-a8f4-afe8f0df802a</uuid>
3.13 + <kod>PokusnyWeb123</kod>
3.14 +
3.15 +</web>
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/šablona/atom.xsl Sun Apr 03 16:34:42 2011 +0200
4.3 @@ -0,0 +1,44 @@
4.4 +<?xml version="1.0" encoding="UTF-8"?>
4.5 +<xsl:stylesheet version="2.0"
4.6 + xmlns="http://www.w3.org/2005/Atom"
4.7 + xmlns:g="https://trac.frantovo.cz/xml-web-generator/wiki/xmlns/prostor"
4.8 + xmlns:j="java:cz.frantovo.xmlWebGenerator.Funkce"
4.9 + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4.10 + xmlns:fn="http://www.w3.org/2005/xpath-functions"
4.11 + exclude-result-prefixes="fn g j">
4.12 + <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
4.13 +
4.14 + <xsl:param name="konfigurák"></xsl:param>
4.15 +
4.16 + <xsl:template match="/">
4.17 + <!-- TODO: proměnná: -->
4.18 + <xsl:variable name="konfigurace" select="document($konfigurák)"/>
4.19 +
4.20 + <feed>
4.21 + <title><xsl:value-of select="$konfigurace/g:web/g:název"/></title>
4.22 + <subtitle><xsl:value-of select="$konfigurace/g:web/g:podtitul"/></subtitle>
4.23 + <link rel="self" href="{concat($konfigurace/g:web/g:url, 'atom.xml')}"/>
4.24 + <link href="{$konfigurace/g:web/g:url}"/>
4.25 + <updated><xsl:value-of select="current-dateTime()"/></updated>
4.26 + <author>
4.27 + <name><xsl:value-of select="$konfigurace/g:web/g:autor/g:jméno"/></name>
4.28 + <email><xsl:value-of select="$konfigurace/g:web/g:autor/g:email"/></email>
4.29 + </author>
4.30 + <id><xsl:value-of select="concat('urn:uuid:', $konfigurace/g:web/g:uuid)"/></id>
4.31 +
4.32 + <xsl:for-each select="collection('../vstup/?select=*.xml')[empty(g:stránka/g:skrytá) or not(g:stránka/g:skrytá)]">
4.33 + <entry>
4.34 + <title><xsl:value-of select="g:stránka/g:nadpis"/></title>
4.35 + <xsl:variable name="soubor" select="replace(tokenize(document-uri(.), '/')[last()], '.xml', '')"/>
4.36 + <link href="{concat($konfigurace/g:web/g:url, encode-for-uri($soubor), '.xhtml')}" />
4.37 + <id><xsl:value-of select="concat('urn:', $konfigurace/g:web/g:kod ,':strana:', encode-for-uri($soubor))"/></id>
4.38 + <!--2010-10-09T20:51:04Z-->
4.39 + <updated><xsl:value-of select="j:posledníZměna(document-uri(.))"/></updated>
4.40 + <summary><xsl:value-of select="g:stránka/g:perex"/></summary>
4.41 + </entry>
4.42 + </xsl:for-each>
4.43 +
4.44 + </feed>
4.45 + </xsl:template>
4.46 +
4.47 +</xsl:stylesheet>
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2 +++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java Sun Apr 03 16:34:42 2011 +0200
5.3 @@ -0,0 +1,13 @@
5.4 +package cz.frantovo.xmlWebGenerator;
5.5 +
5.6 +import java.io.File;
5.7 +import java.util.Date;
5.8 +import java.net.URI;
5.9 +import java.net.URISyntaxException;
5.10 +
5.11 +public class Funkce {
5.12 + public static Date posledníZměna(String soubor) throws URISyntaxException {
5.13 + return new Date(new File(new URI(soubor)).lastModified());
5.14 + }
5.15 +}
5.16 +
6.1 --- a/šablona/stránka.xsl Sun Apr 03 02:39:06 2011 +0200
6.2 +++ b/šablona/stránka.xsl Sun Apr 03 16:34:42 2011 +0200
6.3 @@ -18,7 +18,9 @@
6.4 <xsl:template match="/">
6.5 <html>
6.6 <head>
6.7 - <title><xsl:value-of select="g:stránka/g:nadpis"/></title>
6.8 + <title><xsl:value-of select="g:stránka/g:nadpis"/></title>
6.9 + <link title="Novinky (Atom)" href="atom.xml" type="application/atom+xml" rel="alternate" />
6.10 + <link title="Novinky (RSS)" href="rss.xml" type="application/atom+xml" rel="alternate" />
6.11 </head>
6.12 <body>
6.13 <xsl:apply-templates select="document(fn:encode-for-uri('../vstup/záhlaví.inc'))/g:stránka/h:text/node()"/>