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] copy - xsl:element ou tag manuel


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 253
    Points
    28 253
    Par défaut [XSLT] copy - xsl:element ou tag manuel
    Bonjour,

    Voici la question bête du jour

    Imaginons un nodeset du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <toto>
      blabla
    </tata>
    à partir de ca, je veux créer un nodeset toto mais avec un différent blabla.
    Qu'est ce qui est le plus propre? le plus optimisé? et surtout est-ce qu'il y a une différence dans les trois codes suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:foreach  select="toto">
    <xsl:copy>
      bleh
    </xsl:copy>
    </xsl:for-each
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:foreach  select="toto">
    <toto>
      bleh
    </toto>
    </xsl:for-each
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:foreach  select="toto">
    <xsl:element name="toto">
      bleh
    </xsl:element>
    </xsl:for-each
    Les trois me donneront le meme affichage mais lequel convient-il d'utiliser dans ce cas?

    et dans le cas où je crée un nouvel element (une page html par exemple)
    faut mieux utiliser <body> ou <xsl:element name="body">???

    oui, je me pose des questions existentielles tous les jours

  2. #2
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    perso j'utilise xsl:element quand le nom de l'élément est dynamique sinon cela n'a peu d'intérêt a mon avis

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 253
    Points
    28 253
    Par défaut
    merci. c'est justement parce que je ne vois pas la différence entre que je pose la question.

    tout comme current() et .
    là par contre, il y a une différence il me semble mais j'ai pas encore trouvé la subtilité

  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
    Salut,

    Citation Envoyé par Louis-Guillaume Morand
    Les trois me donneront le meme affichage mais lequel convient-il d'utiliser dans ce cas?
    Il n'existe pas de questions bêtes, par contre les réponses peuvent parfois l'être...

    1ère possibilité : le xsl:copy est généralement utilisé pour un traitement générique sur des éléments non déterminés à l'avance (par exemple dans un template avec match égal à *) ; dans ce cas précis, on sait qu'il s'agit d'éléments 'toto', donc aucun intérêt. Le nom de l'élément créé est identique à celui de l'élément contextuel.

    2ème possibilité : dans ce contexte, la meilleure solution. Pas de traitement inutile en plus, le processeur XSLT crée directement l'élément dans le document de sortie

    3ème possibilité : création d'un élément dont le nom est défini dynamiquement (+1 avec fraoustin), et qui peut être différent de celui de l'élément contextuel

    Sur le plan des performances, la méthode la plus coûteuse doit être celle du xsl:element.

  5. #5
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    là il existe un exemple dans la faq ou bien dans un tutorial qui explique bien la différence entre . et current ici

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

Discussions similaires

  1. [XSLT] Copie d'un XML avec balisage des elements text()
    Par boooob dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 26/11/2010, 15h59
  2. [XSLT] renseignements sur xsl:element name et xsl:attribute name
    Par borkipreiz dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 30/12/2009, 23h26
  3. [XSLT] xsl:element et IE7
    Par Wells dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 07/05/2008, 14h18
  4. [XSLT] <xsl:element name="$text" >
    Par DrDam dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/04/2008, 10h29
  5. [XSLT] Probleme <xsl:if test=" element = $param "> !
    Par billynirvana dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/03/2007, 14h49

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