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 :

difficult en code XSLT


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Débutant  
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 346
    Points : 86
    Points
    86
    Par défaut difficult en code XSLT
    Salut, tout le monde
    Je suis debutante a XSLT et j ai cherche des cours mais vraiment je n arrive pas de comprendre la diffrerence entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    <xsl:copy-of select= 
    et 
    <xsl:value-of select=
    Aussi j ai une autre question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <xsl:template match="TempPrincipal">
    		<Etudiant>
    		<xsl:variable name="NumEtudiant" select="@NumEtudiant"/>
    		<xsl:variable name="NomEtudiant" select="@NomEtudiant"/>
    		<xsl:copy-of select="@*[adresse()!='ville' and adresse()!='numMaison' "/>
    		<xsl:variable name="NumEtudiant">
    			<xsl:choose>
    				<xsl:when test="(not(@NumEtudiant) ">
    					<xsl:attribute name="NumEtudiant"><xsl:value-of select="Le num n existe          pas"/></xsl:attribute>
    				</xsl:when>
    			</xsl:choose>
    		</xsl:variable>
    			<xsl:attribute adresse="ville"><xsl:value-of select="'ville1')"/></xsl:attribute>
    			<xsl:attribute adresse="numMaison"><xsl:value-of select="'123')"/></xsl:attribute>
    </xsl:template>
    Est ce que le code precedent affiche: ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Etudiant NumEtudiant= 1 NomEtudiant = nom1 ville = ville1 numMaison = 123>
    Est ce que ce code est correct, malgre on declare 2 fois la variable NumEtudiant ?, est ce qu il affiche ce code exactement quand on appel la template dans une transformation en XML.

    Merci pour tes aides et merci d avance

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    [0] C'est difficile de voir exactement ce que vous voulez sortir... j'essaie de vous répondre.

    [1]
    Est ce que ce code est correct, malgre on declare 2 fois la variable NumEtudiant ?
    Pourquoi pas tester vous-même de découvrir tout de suite ? En tout cas, la réponse est non, ce n'est pas correct. Le nom de variable est quelque peu comme une identité identifiant : il doit être unique dedans sa portée pleinement le template. Pourtant, une variable ou un paramètre global peut être remplacé pas une variable ou paramètre local dedans un template de même nom.

    [2]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:copy-of select="@*[adresse()!='ville' and adresse()!='numMaison' "/>
    Ce n'est pas correct et l'intention n'est pas tout à fait claire et je spécule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:copy-of select="@*[name()!='adresse' or ((name()='adresse' and . != 'ville') and (name()='adresse' and . != 'numMaison'))]" />
    [3] Le syntaxe de xsl:attribute est incorrect. Il n'y a pas de place pour adresse. C'est plutôt name ?

    [4] Si vous voulez un traitement spécial pour l'attribut NumEtudiant pour garder contre le cas où il ne présent même pas dans le noeud en contexte et pour l'attribut adresse contre le cas où sa valeur soit ville ou numMaison, vous pouvez faire ça - mais je spécule de beaucoup.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <xsl:template match="TempPrincipal">
    	<Etudiant>
    	<xsl:copy-of select="@*[(name()!='NumEtudiant') and name()!='adresse')]" />
    	<xsl:choose>
    		<xsl:when test="not(@NumEtudiant) ">
    			<xsl:attribute name="NumEtudiant"><xsl:value-of select="'Le num n existe pas'"/></xsl:attribute>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:attribute name="NumEtudiant"><xsl:value-of select="@NumEtudiant" /></xsl:attribute>
    		</xsl:otherwise>
    	</xsl:choose>
    	<xsl:choose>
    		<xsl:when test="@adresse='ville'">
    			<xsl:attribute name="adresse"><xsl:value-of select="'ville1'"/></xsl:attribute>
    		</xsl:when>
    		<xsl:when test="@adresse='numMaison'">
    			<xsl:attribute name="adresse"><xsl:value-of select="'123'"/></xsl:attribute>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:attribute name="adresse"><xsl:value-of select="@adresse" /></xsl:attribute>
    		</xsl:otherwise>
    	</xsl:choose>
    	</Etudiant>
    </xsl:template>

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par sonia5 Voir le message
    Je suis debutante a XSLT et j ai cherche des cours mais vraiment je n arrive pas de comprendre la diffrerence entre: [xsl:copy-of et xsl:value-of]
    - copy-of recopie les nœuds sélectionnés, tels quels.
    - value-of calcule la valeur texte du nœud sélectionné, et l'affiche. Ce qui veut dire, tout le texte contenu dans le nœud, mais pas de balise et pas d'attribut. Et ça n'en prend qu'un seul, le premier sélectionné. S'il y a plusieurs nœuds sélectionnés les autres seront ignorés.

    copy-of et value-of n'ont absolument rien à voir, sauf dans le cas où le nœud sélectionné est un nœud texte, donc sans balise à recopier.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Erreur syntaxe code xslt
    Par kcizth dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/12/2013, 13h38
  2. Ajouter une drop down list en HTML dans du code XSLT
    Par joeyd dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 09/04/2009, 01h06
  3. difficulté à appliquer les classes avec un code css
    Par pharaonline dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 24/02/2006, 15h52
  4. [XSLT ]remplacement d un caractere par son code
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/09/2005, 16h26
  5. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23

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