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] For-each dans template avec format XML (row)


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 20
    Points : 15
    Points
    15
    Par défaut [xslt] For-each dans template avec format XML (row)
    Bonjour a tous,
    Je ne suis pas un expert en XSL et je rencontre un probleme que je n'arrive pas a résoudre depuis hier ...

    La solution doit etre toute bête mais je m'enfonce a chaque essai ...

    Mon XMl est de la forme: (cela a peut etre un rôle important mais je ne peut pas l'avoir autrement)
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
    <VFPData>
    	<xsd:schema id="VFPData" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    		<xsd:element name="VFPData" msdata:IsDataSet="true">
    			<xsd:complexType>
    				<xsd:choice maxOccurs="unbounded">
    					<xsd:element name="row" minOccurs="0" maxOccurs="unbounded">
    						<xsd:complexType>
    							<xsd:attribute name="l1" use="required">
    								<xsd:simpleType>
    									<xsd:restriction base="xsd:string">
    										<xsd:maxLength value="15"/>
    									</xsd:restriction>
    								</xsd:simpleType>
    							</xsd:attribute>
     
    					(....)
    					<xsd:attribute name="new_ligne" type="xsd:boolean" use="required"/>
    							<xsd:attribute name="numsem" use="required">
    								<xsd:simpleType>
    									<xsd:restriction base="xsd:decimal">
    										<xsd:totalDigits value="2"/>
    										<xsd:fractionDigits value="0"/>
    									</xsd:restriction>
    								</xsd:simpleType>
    							</xsd:attribute></xsd:complexType>
    					</xsd:element>
    				</xsd:choice>
    				<xsd:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"/>
    			</xsd:complexType>
    		</xsd:element>
    	</xsd:schema>
    	<row l1="Azerty Gazerty9" new_ligne="true" numsem="49" />
    	<row l1="Azerty Gazerty9" new_ligne="false" numsem="49" />
    		(....)
     
    </VFPData>
    Et voici le XSL correspondant appelé depuis une page HTML.
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<!-- Affichage appliqué a partir de la base des enregistrements -->
    	<xsl:template match="/">
    		<!-- Tableau en HTML centré-->
     
    		<table class="tab_planning">
    				(....)
    			<xsl:apply-templates/>
    		</table>
    	</xsl:template>
     
     
    	<!-- Template pour les lignes -->
    	<xsl:template match="VFPData/row">	<!-- Ici on utilise VFPData/row -->
    		<!-- variable -->
    		<xsl:variable name="Xnumsem">
    			<xsl:value-of select="numsem|@numsem"/>
    		</xsl:variable>
     
    		<!-- si la semaine n'est pas vide (00) -->
    		<xsl:if test="not($Xnumsem=00)">		
    			<xsl:choose>
    				<xsl:when test="new_ligne|@new_ligne='true'">
    					<!-- Nouvelle ligne -->
    					<tr class="tr_planning">
    						<!-- 1ere cellule d'entete -->
    						<td class="td_semaine">Semaine <xsl:value-of select="format-number(numsem|@numsem,'00')"/><br/>
    							Du <xsl:value-of select="du|@du"/><br/>
    							Au <xsl:value-of select="au|@au"/>
    						</td>
    						<!-- pas de problème pour cette premiere partie ! -->
     
    						<!-- cellule suivante ( Ceci pose problème ! )-->
     
    						<xsl:for-each select="@*"> <!-- @* pour désigner tout attribut car VFPData/row ne marche pas :/ ...-->
     
    							<xsl:if test="format-number($Xnumsem,'00')=(numsem|@numsem)">
    								<td class="td_planning">
    									<xsl:value-of select="l1|@l1"/>
    								</td>
    							</xsl:if>
    							<!-- rien n'est affiché alors que la condition est forcement vérifiée a un moement donné !  -->
    						</xsl:for-each>
    					</tr>
    				</xsl:when>
    			</xsl:choose>
    		</xsl:if>
    	</xsl:template>
     
    </xsl:stylesheet>
    Je pense que le problème vien de la ligne :
    <xsl:for-each select="@*">

    Avec d'autres valeur dans le select il ne se passe rien . C'est comme si le "pointeur" XSL etait perdu et n'accedait pas aux element !

    Pouvez-vous me venir en aide s'il vous plait??

    Ya t'il une autre methode pour faire grossierement le meme déroulement (template pour toutes les lignes avec une boucle sur toutes les lignes a l'intérieur)

    Si vous avez besoin d'explication je reste dispo.

    Merci d'avance.

  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


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="@*"> <!-- @* pour désigner tout attribut car VFPData/row ne marche pas :/ ...-->
    Tu es deja sur une row a cause de ton template normal que cela ne te donne rien de le reutiliser.
    Tu es sur de bien comprend la notion d'element courant ?
    http://erwy.developpez.com/boucle/#L1.2

  3. #3
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Erwy


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="@*"> <!-- @* pour désigner tout attribut car VFPData/row ne marche pas :/ ...-->
    Tu es deja sur une row a cause de ton template normal que cela ne te donne rien de le reutiliser.
    oui je sais mais j'ai essayé dans un 1er temps un for-each sans clause select, ca ne marche pas , avec select="", marche pas ... enfin plusieurs combinaisons mais tjrs sans résultat.

    en attendant ton avis je vais réviser avec ton lien

    Edit: Merci pour le lien . En fait il fallait mettre : for-each select="//row"

    merci !

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

Discussions similaires

  1. [AC-2003] problème avec 'For each ' dans un état
    Par Jean-Luc80 dans le forum IHM
    Réponses: 2
    Dernier message: 05/06/2011, 05h51
  2. [XSLT] for-each imbriqué
    Par mouna201 dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 28/09/2010, 02h00
  3. [XSLT] For-each avec variable multidimensionelle
    Par pourloineus dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 05/08/2009, 10h04
  4. [XSLT]for-each imbiqués
    Par Capt. Flame dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 24/10/2005, 12h57

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