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 - Recherche de frères


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut XSLT - Recherche de frères
    Bonjour

    J'ai un problème avec preceding-sibling
    Fichier XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <chapter>
    <title>vvvvvvvv</title>
    </chapter>
    <chapter>
    <title>sssssss</title>
    </chapter>
    Fichier XSLT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:template match="chapter">
      <xsl:choose>
          <xsl:when test="preceding-sibling::*">
               <xsl:text>:</xsl:text>
          </xsl:when>
      </xsl:choose>
    </xsl:template>
    Le problème : même sur le premier noeud 'chapter' je génére :

    merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Je ne sais pas pourquoi ça ne fonctionne pas avec preceding-sibling mais le plus simple pour ce que tu veux faire est d'utiliser position() > 1.

  3. #3
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut
    merci pour la réponse,

    mais je code position() > 1

    merci

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Avec ce document :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <chapters>
      <chapter>
        <title>a</title>
      </chapter>
      <chapter>
        <title>b</title>
      </chapter>
      <chapter>
        <title>c</title>
      </chapter>
    </chapters>
    Et en passant ce XSLT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="chapter">
        <xsl:choose>
          <xsl:when test="preceding-sibling::*">:</xsl:when>
        </xsl:choose>
        <xsl:value-of select="title"/>
      </xsl:template>
     
      <xsl:template match="text()"/>
    </xsl:stylesheet>
    J'obtiens :

    Comme demandé.

    Je pense que ça ne fonctionnerait pas avec position() > 1, à cause du whitespace entre <chapters> et la première balise <chapter> : c'est ce whitespace qui est en position 1. Par conséquent la balise est en position 2, supérieure à 1. Mais on ne peut pas compter dessus, il pourrait ne pas y avoir de whitespace.

  5. #5
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut
    je n'ai pas le même résultat, même avec to code j'obtiens toujours : en tête de chaîne ?

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Mon code et mon fichier d'entrée ?
    Dans ce cas, nous avons prouvé que le moteur XSLT que tu utilises a un bug.

  7. #7
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut
    j'ai utilisé ant et les lib de DITA open Toolkit

    Et toi comment fais tu la transformation ?

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Mon code et mon fichier d'entrée ?
    Cette question peut se répondre par oui ou par non.

    Citation Envoyé par henri93
    j'ai utilisé ant et les lib de DITA open Toolkit

    Et toi comment fais tu la transformation ?
    Le transformateur XSLT intégré à Java (version modifiée de Xalan,) ou bien Saxon Home Edition, ou bien Firefox, ou bien Shell Tools Online.
    (De toute façon, le résultat correct est seul et unique. Il se trouve que tout ce que j'ai cité au-dessus donne ce résultat correct, pour l'exemple fourni.)

    Je ne connais strictement rien à DITA, il y a peut-être des choses en plus qui interviennent et qu'on ignore.

  9. #9
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut
    Oui pour ta question précédente,

    Merci des infos

    Je vais essayer avec un autre parseur

Discussions similaires

  1. [XSLT] recherche de noeud
    Par jimmeu dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 20/02/2008, 12h12
  2. Réponses: 7
    Dernier message: 09/08/2007, 14h07
  3. [XSLT] recherche de la clé précédente ?
    Par newguy dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/03/2007, 15h23
  4. [XSLT] recherche du nombre le plus petit
    Par ribrok dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/12/2006, 11h28
  5. [XSLT] rechercher un noeud depuis le noeud courant
    Par camboui dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 21/12/2005, 18h47

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