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 :

[XSLT] Différences entre xalan et saxon


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [XSLT] Différences entre xalan et saxon
    Bonjour tout le monde,
    J'ai un stylesheet qui faire fusionner les éléments au même nom et avec les même valeurs d'attributs. Le xslt marche bien en saxon, mais ne marche pas en xalan qu'en donnant "<test/>" en sortie. J'aimerais le faire fonctionner sous xalan. Merci d'avance pour tous vos conseilles.

    xml source:
    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
    <test>
    <A x="0">
    <B>1</B>
    </A>
    <A x="0">
    <C>2</C>
    </A>
    <A x="0">
    <D x="0">
    <E>3</E>
    </D>
    </A>
    <A x="0">
    <D x="0">
    <E>3</E>
    </D>
    </A>
    <A x="0">
    <D x="1">
    <E>5</E>
    </D>
    </A>
    <A x="1">
    <B>4</B>
    </A>
    </test>
    xml en sortie que je veux (obtenu sous saxon, mais pas sous xalan1.x):
    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
    <test>
    <A x="0">
    <B>1</B>
    <C>2</C>
    <D x="0">
    <E>3</E>
    </D>
    <D x="1">
    <E>5</E>
    </D>
    </A>
    <A x="1">
    <B>4</B>
    </A>
    </test>
    Le stylesheet xslt utilisé:

    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
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0" xmlns:exsl="http://exslt.org/common"
    extension-element-prefixes="exsl">
     
    <xsl:output method="xml" indent="yes"/>
     
    <xsl:strip-space elements="*"/>
    <xsl:key name="element" match="*" use="concat(local-name(),@*)"/>
     
    <xsl:template match="*">
    <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:variable name="set">
    <xsl:copy-of select="key('element',concat(local-name(),@*))/*"/>
    </xsl:variable>
    <xsl:apply-templates select="text()"/>
    <xsl:apply-templates
    select="exsl:node-set($set)/*[generate-id()=generate-id(key('element',concat(local-name(),@*)))]"/>
    </xsl:copy>
    </xsl:template>
     
    </xsl:stylesheet>

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut, ton exemple fonctionne très bien sur mon poste, avec XALAN-JAVA 2.7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    C:\xalan\xalan-j_2_7_1>java org.apache.xalan.xslt.Process -in in.xml -xsl transfo.xsl -out test.xml -v
    >>>>>>> Version de Xalan Xalan Java 2.7.1, <<<<<<<
    J'obtiens bien ce que tu attends:

    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
    <?xml version="1.0" encoding="UTF-8"?><test>
    <A x="0">
    <B>1</B>
    <C>2</C>
    <D x="0">
    <E>3</E>
    </D>
    <D x="1">
    <E>5</E>
    </D>
    </A>
    <A x="1">
    <B>4</B>
    </A>
    </test>

    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réponse. En fait, c'est un processor xalan intégré dans un outil de ETL(datastage EE). Mais je ne sais pas quelle version il est, ni qu'il est en java ou en C. Il se peut qu'il y a des comportements différents entre les différentes version de xalan? Est-ce qu'il y a un moyen de savoir la version exacte du processor par xslt? Merci encore une fois.

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    En java, le dernier paramètre -v donne la version
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java org.apache.xalan.xslt.Process -in in.xml -xsl transfo.xsl -out test.xml -v
    Bonne continuation,

    ERE
    Quand une tête pense seule, elle devient folle.

Discussions similaires

  1. Différence entre un "bidouilleur" et un Pro ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 290
    Dernier message: 28/11/2011, 10h53
  2. [XSLT] Différence entre match="node()" et match="/"
    Par jeanbabi dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 16/05/2008, 17h44
  3. Différence entre XSLT et XSD
    Par GDMINFO dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/04/2007, 12h00
  4. [XSLT] Différence entre apply-templates et call-template
    Par Cpt.FLAM dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/04/2005, 18h47
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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