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 :

paramètre en XSLT


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut paramètre en XSLT
    Salut;

    J'aimerais savoir si on pouvait entrer des paramètres à une feuille de style XSLT depuis un code java exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:result-document href="file:///C:\{@name}.java">
    et ce que je veux faire c'est d'avoir un paramètre qui indique le chemin de destination à la balise "result-document".

    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut
    Apparemment on peut écrire qq chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:stylesheet ... >
      <xsl:parameter name="image_dir"/>
    ...
    Mais je ne sais pas comment les injecter depuis Java ; peut-être avec des propriétés système ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut
    From JAXP, pass this parameter via the Transformer instance. The code is simple enough:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    javax.xml.transform.Transformer trans =
            transFact.newTransformer(xsltSource);
    trans.setParameter("image_dir", "graphics");
    You can set as many parameters as you like, and these parameters will be saved and reused for every transformation you make with this Transformer instance. If you wish to remove a parameter, you must call clearParameters( ), which clears all parameters for this Transformer instance. Parameters work similarly to a java.util.Map; if you set the same parameter twice, the second value overwrites the first value.

    http://www.ling.helsinki.fi/kit/2004...XSLT/Ch05.html

  4. #4
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java org.apache.xalan.xslt.Process -in scores.xml -xsl scores.xsl -out results.html -param image_dir graphics
    http://www.ibm.com/developerworks/xm...run/index.html

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut
    Bonjour;
    Moi j'utilise saxon, comment je peux modifier mon code. Voici mon code java:
    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
    public static void myTransformer (String xml_path, String xsl_path)
    	throws TransformerException, TransformerConfigurationException {
    System.setProperty("javax.xml.transform.TransformerFactory",
    	 "net.sf.saxon.TransformerFactoryImpl");
    String sourceID=xml_path;
     
    String xslID=xsl_path;
     
    TransformerFactory tfactory = TransformerFactory.newInstance();
     
    Transformer transformer = tfactory.newTransformer(new StreamSource(new File(xslID)));
     
    transformer.transform(new StreamSource(new File(sourceID)),
    	    new StreamResult(System.out));
     
      }
    Merci pour votre aide

  6. #6
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut
    Y'a pas un petit setParameter des familles, dans le transformer ?
    Il y a qd même un MINIMUM que les autres ne pourront pas faire à votre place... Comme RTFM !

  7. #7
    Membre averti
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut
    Bonjour;

    Excusez moi mais j'ai pas réussi à faire pourtant j'ai bien fais comme vous m'avez dis :
    Voila ce que j'ai ajouté en java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    transformer.setParameter("url", "D:/DBA");
    Ensuite j'ai ajouter aussi ça à mon XSLT:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:param name="url" ></xsl:param>
    <xsl:template match="/">
    <xsl:for-each select="classess/classes">
     
    <xsl:result-document href="concat('file:///',{$url},{@name}.java">
    Merci pour votre aide

  8. #8
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut
    NON, vous n'avez pas fait comme j'ai dit !
    Mais comme c'est le WE, je répète :
    xsl:parameter PAS xsl:param

  9. #9
    Membre averti
    Inscrit en
    Février 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 34
    Par défaut
    Lorsque je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:parameter name="image_dir"/>
    ça ne compile pas il me met une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cvc-complex-type.2.4.a: Invalid content was found starting with element 'xsl:parameter'. One of '{"http://www.w3.org/1999/XSL/Transform":param, "http://www.w3.org/
     1999/XSL/Transform":variable, "http://www.w3.org/1999/XSL/Transform":instruction, "http://www.w3.org/1999/XSL/Transform":literal-result-element, WC
     [##other:"http://www.w3.org/1999/XSL/Transform"], WC[""]}' is expected.

  10. #10
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut idée
    Peut-être déclarez-vous une feuille de style XSLT 1.0 au lieu de 2.0 ??
    Saxon gère le XSLT 2.0 (aussi) et cette syntaxe est peut-être différente d'une version à l'autre.

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Non, <xsl:parameter> n'existe ni en 1.0 ni en 2.0, c'est <xsl:param>, point.

    Le problème rencontré n'est pas là. Le problème rencontré est que ce n'est pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href="concat('file:///',{$url},{@name}.java"
    mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href="{concat('file:///', $url, @name, '.java')}"
    Toutefois je ne peux pas lancer ce code et vérifier son bon fonctionnement, car la création de fichiers avec <xsl:result-document> ne fonctionne pas chez moi, pour des raisons que j'ignore.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre éclairé
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Par défaut
    Ouf ! Bien vu !

Discussions similaires

  1. Passage de paramètre à un XSLT
    Par Willthelegend dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/07/2008, 14h37
  2. [XSLT JS] Passage de paramètre
    Par GwiGwi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/04/2006, 21h24
  3. [XSLT] template paramétré et XPATH
    Par 242 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 30/11/2005, 09h39
  4. [XSLT][Saxon]passage de paramètres à une template
    Par RB Greg dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 12/05/2005, 16h29
  5. [XSLT] Tri en fonction d'un paramètre
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 21/04/2005, 10h29

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