<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:doc="http://www.CraneSoftwrights.com/ns/xslstyle"
	xmlns:docv="http://www.CraneSoftwrights.com/ns/xslstyle/vocabulary"
	xmlns:xlink="http://www.w3.org/1999/xlink"
	exclude-result-prefixes="doc docv"
	xmlns:test="something"
	
	xmlns:java-hbfw="java:org.expedimentum.example.java.HexBinaryFileWriter"
	xmlns:java-file="java:java.io.File"
	xmlns:java-uri="java:java.net.URI"
	
	version="2.0">
	<!--  -->
	<!--  -->
	<!--  -->
	<doc:doc filename="binaerdaten-ausgabe_java_extern.xsl" internal-ns="docv" global-ns="doc test" vocabulary="DocBook" info="$Revision: 111 $, $Date: 2010-07-10 00:45:43 +0200 (Sa, 10 Jul 2010) $">
		<doc:title>Binärdatenausgabe mit externer Java-Klasse</doc:title>
		<para>Dieses Stylesheet ist ein Beispiel für die Ausgabe eines Binärdatenstroms mit einer externen Java-Klasse.</para>
		<para>Erläuterungen dazu finden sich unter <link xlink:href="http://blog.expedimentum.com/2010/java-in-xslt-verwenden/">http://blog.expedimentum.com/2010/java-in-xslt-verwenden/</link>.</para>
		<para><emphasis role="bold">Achtung:</emphasis> Der eingesetzte XSLT-Prozessor muss Java unterstützen. Diese Stylesheet wurde erfolgreich mit
			Saxon-B 8.9.0.4, Saxon-B 9.1.0.7, Saxon-PE/EE 9.2.0.6 (Oxygen build), AltovaXML (Build 2009-10-23) und AltovaXML2010_rel3sp1 getestet.</para>
		<para>Autor: <author>
			<firstname>Stefan</firstname>
			<surname>Krause</surname>
		</author>
		</para>
		<para>Homepage: <link xlink:href="http://www.expedimentum.org/">http://www.expedimentum.org/</link></para>
		<para>Lizenz: Dieses Stylesheet ist unter einer einer Creative Commons-Lizenz (<link xlink:href="http://creativecommons.org/licenses/by/3.0/">CC-BY&#160;3.0</link>) lizenziert. Die Weiternutzung ist bei Namensnennung erlaubt.</para>
		<revhistory>
			<revision>
				<revnumber>0.110</revnumber>
				<date>2010-07-07</date>
				<authorinitials>Stf</authorinitials>
				<revremark>initiale Version</revremark>
			</revision>
		</revhistory>
	</doc:doc>
	<!--  -->
	<!--  -->
	<!-- __________     test:write-hexBinary-to-file()     __________ -->
	<doc:function>
		<doc:param name="hexBin"><para>HexBinary-String, der ausgegeben werden soll.</para></doc:param>
		<doc:param name="OutputFileURI"><para>absolute URI (Pfad) zur Ausgabe-Datei.</para></doc:param>
		<para>Diese Funktion gibt einen HexBinary-codierten String unter Verwendung der externen Java-Klasse
			<link xlink:href="http://www.expedimentum.org/example/Java/src/HexBinaryFileWriter.java">
				<code>org.expedimentum.example.java.HexBinaryFileWriter</code></link> als Binärdatei aus.</para>
	</doc:function>
	<!--  -->
	<!--  -->
	<!--  -->
	<!-- erfolgreich getestet mit AltovaXML (Build 2009-10-23), saxon8.9.0.4.jar, saxon9.1.0.7.jar, Saxon PE/HE 9.2.0.6 (Oxygen build) -->
	<!--  -->
	<!-- Saxon: jar-File muss im classpath von Oxygen liegen oder explizit übergeben werden, vgl. http://xsl.markmail.org/message/r3vnddtqgv6cds6h -->
	<!-- AltovaXML: classpath muss als query im Namespace übergeben  werden,
		z.B. xmlns:java-hbfw="java:org.expedimentum.example.java.HexBinaryFileWriter?path=jar:file:///C:/temp/expedimentum/org/www/example/Java/dist/Beispiele.jar!/"
		vgl. http://manual.altova.com/AltovaXML/index.html?xextjava_udefjarfiles.htm-->
	<!--  -->
	<!--  -->
	<!--  -->
	<xsl:function name="test:write-hexBinary-to-file">
		<xsl:param name="hexBin" as="xs:hexBinary?"/>
		<xsl:param name="OutputFileURI" as="xs:anyURI"/>
		<xsl:variable name="HexBinaryFileWriter" select="java-hbfw:new()"/>
		<!-- das Objekt für die Methode wird als erster Parameter übergeben. -->
		<xsl:value-of select="java-hbfw:write($HexBinaryFileWriter, string($hexBin), java-file:new(java-uri:new($OutputFileURI) ) )"/>
	</xsl:function>
	<!--  -->
	<!--  -->
	<!-- __________     nur zum Test     __________ -->
	<doc:template>
		<para>Diese Template gibt testweise eine PNG-Datei aus.</para>
	</doc:template>
	<xsl:template match="/">
		<xsl:variable name="image" as="xs:hexBinary">89504E470D0A1A0A0000000D494844520000000D0000000F0403000000CD0D5844000000017352474200AECE1CE900000018504C544562129D80418A8851829E7972B09266DCD946F4FF39FEFFFC482C1765000000564944415408D725CD2B12C0200C04D030133C0A5D55DD2354A1A3D069A17BFF237403316FF217AC70190ABCD905A5E36ED4CE2FB18EA14F0E51AEB6B484AD6E0F6ED0A95643AB53B1EF94EEC2842517363912F3EBDF0F99462041E4FA77630000000049454E44AE426082</xsl:variable>
		<xsl:message><xsl:value-of select="test:write-hexBinary-to-file($image, xs:anyURI('file:/c:/temp/trash/test.png') )"/></xsl:message>
	</xsl:template>
	<!--  -->
	<!--  -->
	<!--  -->
</xsl:stylesheet>
