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 :

Problème dans Xpath avec Xerces ou Xalan mais pas XMLSpy


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Problème dans Xpath avec Xerces ou Xalan mais pas XMLSpy
    Bonjour,
    j'ai réessayé mais je me heurte à une erreur dans Xpath.
    Sous XMLSpy, la transformation se passe sans problème, mais via Xerces Ou Xalan 2_7_0 ça joue pas.

    Il semblerait que c'est le mm problème :
    la résolution du choose avec le test < ....qui pose problème :
    SI quelqu'un peut m'aider , merci. beaucoup.
    Car après ça j'aimerai bien aller vers XSL-FO....
    Bon WE à tous

    <xsl:choose>
    <xsl:when test="substring($etapeprec/ALTITUDE,1,4) &lt; substring($etape/ALTITUDE,1,4)">
    <xsl:value-of select="$cumul + substring($etape/ALTITUDE,1,4) - substring($etapeprec/ALTITUDE,1,4)"></xsl:value-of>
    </xsl:when>
    <xsl:otherwise>
    <xsl:value-of select="$cumul"></xsl:value-of>
    </xsl:otherwise>
    </xsl:choose>


    Erreur Xalan :
    ------------------
    file:/c:/temp/temp2.xsl; N░ de ligne41; N░ de colonne-1; Erreur XSLT (javax.xml. transform.TransformerException): Erreur inconnue dans XPath.

    Erreur xerces-2_6_2 : du style "Node ne peut etre converti... "
    -----------------


    XML :
    <?xml version="1.0" encoding="windows-1252"?>
    <RANDONNEE>
    <ETAPE>
    <POSITION>44.755566,6.792111</POSITION>
    <ALTITUDE>1360.000000</ALTITUDE>
    </ETAPE>
    <ETAPE>
    <POSITION>44.754704,6.792648</POSITION>
    <ALTITUDE>1374.687988</ALTITUDE>
    </ETAPE>
    <ETAPE>
    <POSITION>44.754021,6.793101</POSITION>
    <ALTITUDE>1401.425537</ALTITUDE>
    </ETAPE>
    <ETAPE>
    <POSITION>44.753437,6.792865</POSITION>
    <ALTITUDE>1424.439941</ALTITUDE>
    </ETAPE>
    <ETAPE>
    <POSITION>44.753113,6.791966</POSITION>
    <ALTITUDE>1432.319946</ALTITUDE>
    </ETAPE>
    <ETAPE>
    <POSITION>44.752747,6.791520</POSITION>
    <ALTITUDE>1444.740845</ALTITUDE>
    </ETAPE>
    <ETAPE>
    <POSITION>44.752060,6.791415</POSITION>
    <ALTITUDE>1451.968018</ALTITUDE>
    </ETAPE>
    </RANDONNEE>

    XSL :
    <?xml version="1.0"?>
    <xsl:stylesheet xmlnssl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

    <xsl:output method="xml"/>

    <xsl:template match="/RANDONNEE">

    <xsl:element name="RANDO">
    <xsl:call-template name="CALCUL">
    <xsl:with-param name="etape" select="//ETAPE[1]"> </xsl:with-param>
    </xsl:call-template>
    </xsl:element>
    </xsl:template>

    <xsl:template name="CALCUL">
    <xsl:param name="etapeprec"></xsl:param>
    <xsl:param name="etape"> </xsl:param>
    <xsl:param name="cumul">0</xsl:param>
    <xsl:if test="$etapeprec">
    <xsl:element name="CUMINTER">
    <xsl:value-of select="$cumul"></xsl:value-of>
    </xsl:element>
    </xsl:if>
    <xsl:text>
    </xsl:text>

    <xsl:if test="$etape">
    <xsl:element name="ETAPE">
    <xsl:value-of select="substring($etape/ALTITUDE, 1,4)"></xsl:value-of>
    </xsl:element>
    </xsl:if>

    <xsl:choose>
    <xsl:when test="$etape">
    <xsl:call-template name="CALCUL">
    <xsl:with-param name="etapeprec" select="$etape"></xsl:with-param>
    <xsl:with-param name="etape" select="$etape/following-sibling::ETAPE[1]"></xsl:with-param>
    <xsl:with-param name="cumul">
    <xsl:choose>
    <xsl:when test="substring($etapeprec/ALTITUDE,1,4) &lt; substring($etape/ALTITUDE,1,4)">
    <xsl:value-of select="$cumul + substring($etape/ALTITUDE,1,4) - substring($etapeprec/ALTITUDE,1,4)"></xsl:value-of>
    </xsl:when>
    <xsl:otherwise>
    <xsl:value-of select="$cumul"></xsl:value-of>
    </xsl:otherwise>
    </xsl:choose>
    </xsl:with-param>
    </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
    <xsl:element name="CUMUL">
    <xsl:value-of select="$cumul"></xsl:value-of>
    </xsl:element>

    </xsl:otherwise>
    </xsl:choose>

    </xsl:template>

    </xsl:stylesheet>

  2. #2
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    c'est plus facile à lire ton code comme ca

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Points : 349
    Points
    349
    Par défaut
    D'apres http://xml.apache.org/xalan-c/extens...b.html#nodeset, il faut utiliser la fonction nodeset pour faire reconnaitre ta variable comme un fragment XML dans xalan :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:stylesheet ... xmlns:xalan="http://xml.apache.org/xalan">
      ...
      <xsl:value-of select="xalan:nodeset($etape)/ALTITUDE" />
    ou peut-etre mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <xsl:stylesheet ... xmlns:xalan="http://xml.apache.org/xalan">
      ...
      <xsl:param name="etape">
      <xsl:variable name="VEtape" select="xalan:nodeset($etape)"/>
      ...
      <xsl:value-of select="$VEtape/ALTITUDE" />
    Nicolas

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Suite
    Merci ,
    mais je ne comprend rien du tout à ce que vous vous dites,
    ou vous n'avez pas saisi le problème.
    car il me semble que le problème se passe dans : le call-template CALCUL

    <xsl:with-param name="etape" select="$etape/following-sibling::ETAPE[1]"></xsl:with-param>

    et non pas dans le template lui-meme.
    Aussi ce qui suit ne devrait pas servir à grand chose.
    en plus j'obtiens : fonction inconnu, meme en déclarant le namespaces XALAN avec ce que vous me proposez ci-dessous.

    <xsl:param name="etape">
    <xsl:variable name="VEtape" select="xalan:nodeset($etape)"/>
    ???????????

    Pouvez vous m'éclaircir ?
    merci d'avance.

Discussions similaires

  1. Problème dans boucle avec matrice et vecteur
    Par lilyla dans le forum MATLAB
    Réponses: 9
    Dernier message: 26/11/2007, 19h45
  2. Problème dans requête avec clause MAX
    Par tonio-lille dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/10/2007, 17h00
  3. Réponses: 3
    Dernier message: 05/03/2007, 11h13
  4. Problème dans requête avec la fonction Right
    Par Mariboo dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/08/2006, 10h27
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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