Bonjour,

J'ai un fichier XML en entrée. J'utilise un méchanisme XSLT pour générer un fichier XSL-FO de manière à pouvoir ensuite générer un PDF avec ApacheFOP.

J'ai besoin d'ajouter une fonctionnalité supplémentaire : au moment de la transformation XSLT, suivant la valeur d'une de mes données, j'aurais besoin d'aller me connecter à une base de données pour aller récupérer juste une valeur.

Malgré mes recherches sur Internet, je n'arrive pas à voir quel est l'outil standard pour ce genre de chose.

J'ai fait des essais, infructueux, avec Saxon. Ce qui me déçoit, c'est que je n'arrive pas à savoir ce qui coince...

problème sur ma sql:connection ?? sur ma sql:query ?? rien aucune info ... la génération se passe sans soulever de problème, mais là où je devrais avoir ma donnée récupérée dans la base, je n'ai rien ...

Aucune trace dans les logs Apache non plus ...

Mon bout de code est exactement similaire à ce qui est décrit ici :
http://ajwelch.blogspot.com/2007/09/...from-xslt.html

... autrement dit, rien d'extraordinaire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="2.0"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:sql="/net.sf.saxon.sql.SQLElementFactory">
 
	<xsl:output method="xml" encoding="utf-8"/>
	<xsl:param name="driver" select="'oracle.jdbc.driver.OracleDriver'" as="xs:string"/>
	<xsl:param name="database" select="'jdbc:oracle:thin:@<SERVER>:<BD>'" as="xs:string"/>
 
	<xsl:param name="user" select="toto" as="xs:string"/>
	<xsl:param name="password" select="tutu" as="xs:string"/>
 
 
 
(...)
	<xsl:choose>
		<xsl:when (...)
		</xsl:when>
		<xsl:otherwise>
		<xsl:variable name="connection" as="java:java.sql.Connection" xmlns:java="http://saxon.sf.net/java-type">
		<sql:connect driver="{$driver}" database="{$database}" user="{$user}" password="{$password}"/>
			<xsl:fallback>
				<fo:inline font-weight="bold">SQL extensions are not installed</fo:inline>
			</xsl:fallback>
		</xsl:variable>
	<xsl:variable name="resultNico" as="xs:string">
	<sql:query connection="$connection" 
		table="ARTICLE" 
		column="DESIGNATION"
		where="NUM_ARTICLE='12527'"/>
	</xsl:variable>
	<fo:inline font-weight="bold">Des :<xsl:value-of select="$resultNico"/></fo:inline>
(...)