IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSL-FO][FOP] Pb avec les includes


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Points : 178
    Points
    178
    Par défaut [XSL-FO][FOP] Pb avec les includes
    Bonjour,

    Alors j'ai bien suivi tout ce qui était expliqué (ou du moins il me semble) et j'ai une erreur lors de l'inclusion d'une feuille de style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ID système inconnu; Ligne #10; Colonne #35; Exception d'E-S avec le fichier de la feuille de style : commons.xsl
    Ci-dessous mon fichier inclus 'commons.xsl':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
     
    <xsl:stylesheet version="1.1"
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    	xmlns:fo="http://www.w3.org/1999/XSL/Format"
    	exclude-result-prefixes="fo">
    	<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes" />
    	<xsl:param name="versionParam" select="'1.0'"/>
     
    	<xsl:template name="my_template">
    ...
    Et voici le fichier appelant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
     
    <xsl:stylesheet version="1.1"
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    	xmlns:fo="http://www.w3.org/1999/XSL/Format"
    	exclude-result-prefixes="fo">
    	<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes" />
    	<xsl:param name="versionParam" select="'1.0'"/>
     
    	<xsl:include href="commons.xsl"/>...
    Pour info j'utilise fop 0.94.
    Mes templates fonctionnent correctement quand ils sont inclus "directement" dans le document xsl mais dans le cas ou ils sont placés dans le fichier externe, le document final est généré (erreur non "bloquante") mais sans les templates présents dans commons.xsl.
    A noter que ces 2 fichiers sont dans le même répertoire et que je déploie mon application sur Tomcat (je ne sais pas si ça a une importance mais au moins vous savez tout!!)

    Merci d'avance

    Manu

  2. #2
    Membre habitué Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Points : 178
    Points
    178
    Par défaut
    J'ai résolu mon problème, voici donc la solution :

    Il m'a fallu définir le URIResolver (de javax.xml.transform.TransformerFactory) qui retourne les ressources associées aux noms de fichiers définis dans les documents xsl parsés (balises <xsl:include> ou <xsl import>). Jonglant entre exécution locale et sur Tomcat, je l'ai défini comme suit et ça marche bien (je ne l'ai testé que pour des fichiers se trouvant tous dans le même répertoire) :
    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
    TransformerFactory factory = TransformerFactory.newInstance();
    factory.setURIResolver(new URIResolver() {
    	public Source resolve ( String href, String base ) {
    		StreamSource streamSource = null;
    		try 
    		{
    			streamSource = new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream("/"+href));
    		} 
    		catch (Exception e)
    		{
    			Log.error(e.getMessage(), e);
    		}
    		if(streamSource == null || streamSource.getInputStream() == null)
    		{
    			try
    			{
    				streamSource = new StreamSource(ClassLoader.getSystemResourceAsStream(href));
    			}
    			catch(Exception e)
    			{
    				Log.error(e.getMessage(), e);
    			}
    		}
    		if(streamSource==null)
    			throw new UnsupportedOperationException("Unable to find the xslt :"+href);
    		return streamSource;
    }});
    Bon courage à tous

    Manu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSL-FO][FOP] Problème avec <xsl:apply-template/>
    Par citizen87 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/04/2008, 12h00
  2. Problème avec les include Ogre + Kdevelop
    Par Synopfab dans le forum Ogre
    Réponses: 7
    Dernier message: 08/11/2007, 13h12
  3. [PDF] Probleme avec les include
    Par Delphy113 dans le forum Bibliothèques et frameworks
    Réponses: 13
    Dernier message: 25/08/2006, 09h29
  4. [FOP] Problème avec les exemples fournis
    Par Androrion dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 22/08/2006, 14h54
  5. Réponses: 9
    Dernier message: 16/07/2006, 00h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo