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] Tester si la valeur est un entier dans un xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Points : 46
    Points
    46
    Par défaut [XSL] Tester si la valeur est un entier dans un xml
    salut a tous !
    je viens de mettre au xml et au xsl et g un probleme qui m'a lir assez compliqué :
    g un xml qui ressemble a ca :

    <object ID="0900097880002550">
    <r_object_id>0900097880002550</r_object_id>
    <r_version_label>
    <r_version_label-value index="0">passage à la version 2</r_version_label-value>
    <r_version_label-value index="1">2.0</r_version_label-value>
    </r_version_label>
    <r_modify_date>17/07/2003 11:04:47</r_modify_date>
    <log_entry>Version 2</log_entry>
    </object>

    et j'aimerai n'afficher que la valeur "2.0" du r_version_label" donc je m'etais dit qu'il fallait tester le type d'objet mais je ne c pas comment faire merci de m'aider

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    tu as en XSL la fonction number() que tu peux utiliser puisqu'elle renvoie NaN (Not a Number) si tu lui passe en paramètre qquechose qui n'est pas un nombre, comme une chaîne de caractères par exemple.

  3. #3
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Ton XML a une drôle de structure. Je proposerai plutôt le format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <object>
      <id>0900097880002550</id>
      <r_version_label>
        <value>passage à la version 2</value>
        <value>2.0</value>
      </r_version_label>
      <r_modify_date>
        <date>17/07/2003</date>
        <heureu>11:04:47</heureu>
      </r_modify_date>
      <log_entry>Version 2</log_entry>
    </object>
    - Mettre des attributs à l'élément père (object) n'est pas très courant. Je me demande d'ailleurs si c'est autorisé (je pense quand même que oui).
    - Comme <r_version_label-value> descend de <r_version_label>, pas besoin d'utiliser un nom à ralonge ! Rappele-toi que le XML est un grand arbre ...
    - Pour la date, ce n'est pas le format "parfait", mais c'est déjà plus simple à traiter que ton format brut ... Ok, je fais comme toi. Mais si un jour tu veux trier par date, le format devra être compréhensible à XSL !!! Je ne connais pas la meilleure solution là.

    Bon, passons du XML au XSL. Déjà, je te conseille de lire une bonne doc sur XPATH. C'est l'outil qui permet d'accéder à un noeud précis selon de très nombreux critères. Donc ton cas : "/object/r_version_label/value[position()=2]" te permettra d'accéder au noeud value qui est à la deuxième position (dans la branche r_version_label).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      <xsl:value-of select="/object/r_version_label/value[position()=2]" />
    Si tu veux obtenir l'index dans XSL, tu peux utiliser xsl:number :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xsl:for-each select="/object/r_version_label/value">
      <xsl:number value="position()" format="I." />
      <xsl:value-of select="." />
    </xsl:for-each>
    Ici la position sera affiché dans le format Romain : I, II, III, IV, ... suivi de ". ".

    @+ Haypo

Discussions similaires

  1. Comment tester si une valeur de type entier est nulle ?
    Par kikidrome dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/07/2009, 00h53
  2. Tester si une chaine est un entier
    Par Tomimie dans le forum Delphi
    Réponses: 2
    Dernier message: 11/05/2007, 23h42
  3. Tester si un nombre est un entier ou un décimal
    Par sab_etudianteBTS dans le forum ASP
    Réponses: 5
    Dernier message: 20/02/2007, 16h52
  4. Réponses: 9
    Dernier message: 16/11/2006, 14h08
  5. [Math]Tester si un nombre est un entier positif
    Par billy67 dans le forum Général Java
    Réponses: 9
    Dernier message: 28/12/2005, 09h14

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