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] pleins de petites questions simples


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut [XSL] pleins de petites questions simples
    d ailleurs il serait interessant je pense de mettre les reponses ds la FAQ:

    1/ quelle est la difference entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="*">
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="node()">
    ???

    2/ comment savoir si un node est de type text()??

    3/ Comment savoir si mon text() est avant ou apres les autres noeuds?

    Question plus perso maintenant
    4/J ai un xsl tout simple dans lequel j ai ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="/">
      <xsl:copy-of select="//body"/>
    </xsl:template>
    qui ne marche pas (ne renvoit rien pourtant g bien un body!)... est ce normal?


  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut Re: [XSL] pleins de petites questions simples
    Citation Envoyé par tiscars

    1/ quelle est la difference entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="*">
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="node()">
    ???
    Il n'y en a pas * est le raccourci de node()
    Citation Envoyé par tiscars

    2/ comment savoir si un node est de type text()??
    Hum je crains que tu comprenne mal les types

    <noeuds/> noeuds est un noeud de type node() vide

    <noeuds>ici</noeuds> noeuds est un noeud de type node() qui contient le noeud ici de type text()
    Citation Envoyé par tiscars
    3/ Comment savoir si mon text() est avant ou apres les autres noeuds?
    Avant quels autres noeuds ? les autres noeuds text ou les autres noeuds de type node() qui peuvent etre dans le node() parent ?


    Citation Envoyé par tiscars
    Question plus perso maintenant
    4/J ai un xsl tout simple dans lequel j ai ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="/">
      <xsl:copy-of select="//body"/>
    </xsl:template>
    qui ne marche pas (ne renvoit rien pourtant g bien un body!)... est ce normal?
    Ca marche tres bien chez moi en tout cas.Peut être ton body est-il en majuscule ?

  3. #3
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    Avant quels autres noeuds ? les autres noeuds text ou les autres noeuds de type node() qui peuvent etre dans le node() parent ?
    g bien compris Erwy c juste ds le cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <racine>
      avant node
      <noeud>dfhgdfg<noeud>
      apres node
    <racine>
    car j ai un template qui parse un xhtml et je fais un copy-of select="text()" or je peux pardre l ordre, en plus je peux perdre tous les autres noeuds de type text() justement.
    Le problème étant que je ne peux pas construire un template juste pour les text() car pour l appeller il faudrait que je fasse un simple apply-templates qui appelera des templates que je ne souhaite pas appeler (ça se bouscule ds mon cerveau là)


    Pour le body, ça marche a condition que je retire les attributs
    bizarre

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut Re: [XSL] pleins de petites questions simples
    Bonjour,

    quelques précisions :

    Citation Envoyé par tiscars
    1/ quelle est la difference entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="*">
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="node()">
    ???
    La première expression sélectionne les éléments fils du noeud courant ; l'étoile peut également servir à sélectionner tous les attributs d'un élément, en spécifiant l'axe attribute (ou @ en notation abrégée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="attribute::*">
    La deuxième expression sélectionne tous les noeuds fils du noeud courant, quel que soit leur type

    Citation Envoyé par tiscars
    2/ comment savoir si un node est de type text()??

    3/ Comment savoir si mon text() est avant ou apres les autres noeuds?
    En principe, il n'est pas nécessaire de se poser ces questions quand on rédige du code XSLT, ou alors c'est qu'on s'y est mal pris en créant ses templates...

    Citation Envoyé par tiscars
    Question plus perso maintenant
    4/J ai un xsl tout simple dans lequel j ai ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="/">
      <xsl:copy-of select="//body"/>
    </xsl:template>
    qui ne marche pas (ne renvoit rien pourtant g bien un body!)... est ce normal?
    S'il s'agit d'un fichier XHTML, il y a de fortes chances que tous tes éléments appartiennent à l'espace de nom XHTML ; en d'autres termes, tu dois avoir un espace de nom par défaut dans ta balise HTML comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html xmlns="http://www.w3.org/1999/xhtml">
    Toutes tes requêtes XPath dans ton code XSLT doivent tenir compte de cet espace de nom.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    pour le xhtml tu avais raison ça fonctionne tres bien désormais


    En principe, il n'est pas nécessaire de se poser ces questions quand on rédige du code XSLT, ou alors c'est qu'on s'y est mal pris en créant ses templates... Wink
    heu...oui certainement, il y a des chances

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/07/2014, 12h40
  2. Réponses: 3
    Dernier message: 22/12/2011, 22h33
  3. qui peut m'aider sur cette petite et simple question
    Par sam102 dans le forum Contrat
    Réponses: 0
    Dernier message: 07/09/2011, 17h42
  4. petite question toute simple sur les boucles
    Par elmcherqui dans le forum C++
    Réponses: 7
    Dernier message: 21/05/2008, 10h15
  5. [CSS] petite question simple
    Par joe206 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 24/05/2006, 17h06

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