Java funkce pro zjištění poslední úpravy souboru, Atom agregace, konfigurační soubor webu.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 03 Apr 2011 16:34:42 +0200
changeset 6801a8935caf7
parent 5 0a7c6c9357d3
child 7 5b46493979c9
Java funkce pro zjištění poslední úpravy souboru, Atom agregace, konfigurační soubor webu.
analýza/princip.dot
build.xml
vstup/web.conf
šablona/atom.xsl
šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
šablona/stránka.xsl
     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()"/>