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 :

Transformation XSL (attribut + date)


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Transformation XSL (attribut + date)
    Bonjour.

    1) Je cherche à transformer un xml en un autre pour l'utiliser dans un html. (la page va chercher des données dans le xml).

    Je transforme avec xsl 2 parce que j'ai appris cell-ci, mais si la 1 est mieux je peux changer.

    Les fichiers xml :
    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
    <!--	code de départ	-->
    <?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet type="text/xsl" href="fichierxml.xsl"?>
     
    <Individuals>
      <Individual ID="ind00002">
        <Name>prénom nom
          <Display>prénom nom</Display>
          <First>prénom</First>
          <Last>nom</Last>
        </Name>
        <Pictures Primary="pic00003">pic00003</Pictures>
        <Birth>
          <Date>16 Apr 1987</Date>
        </Birth>
      </Individual>
    </Individuals>
     
    <!--	code souhaité	-->
    <data>
      <event 
        start="16 Apr 1987" 
        isDuration="false" 
        title="Naissance" 
        image="images/DSC02912.JPG">
      </event>
    </data>
    Mais quand je charge la page, j'ai un message d'erreur : D is null (comme quoi il n'y aurait pas de données).

    le fichier xsl :
    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
    <xsl:stylesheet version="2.0"
    				xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
      <xsl:output
        encoding="UTF-8"
        indent="yes"
        method="xml"
        omit-xml-declaration="yes"/>
     
      <xsl:template match="Individuals">
        <xsl:element name="data">
          <xsl:apply-templates select="Individual"/>
        </xsl:element>
      </xsl:template>
     
      <xsl:attribute-set name="event-details">
        <xsl:attribute name="start">
          <xsl:value-of select="Birth/Date"/>
        </xsl:attribute>
        <xsl:attribute name="title">
          <xsl:value-of select="Name/Display"/>
        </xsl:attribute>
      </xsl:attribute-set>
     
      <xsl:template match="Individual">
        <xsl:element name="event" xsl:use-attribute-sets="event-details">
          <xsl:apply-templates/>
        </xsl:element>
      </xsl:template>
     
    </xsl:stylesheet>
    2) Je souhaiterai également modifié le format de la date pour avoir :Apr 16 1987 00:00:00 GMT. Je dois donc insérer ces lignes de codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      <xsl:template match="Date">
        <xsl:value-of select="substring(., 4, 4)"/> 
        <xsl:value-of select="substring(., 1, 3)"/>        
        <xsl:value-of select="substring(., 8, 4)"/> 
        <xsl:text> 00:00:00 GMT</xsl:text>
      </xsl:template >
    mais où ?

    merci

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Seule la version 1.0 de XSLT est supportée par les navigateurs, PHP, .Net,...
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour l'info !

    Cependant ça ne règle pas mon problème ...
    Le use-attribute-sets semble être reconnu que par la version 2, j'ai donc changé mon code :

    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
    <xsl:stylesheet version="1.0"
    				xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:output
    	  encoding="UTF-8"
    	  indent="yes"
    	  method="xml"/>
     
    	<xsl:template match="*">
    		<data>
    			<xsl:apply-templates select="//Individual"/>
    		</data>
    	</xsl:template>
     
    	<xsl:template match="Individual">
    		<event>
    			<xsl:attribute name="start"><xsl:value-of select="//Birth/Date"/></xsl:attribute>
    			<xsl:attribute name="title"><xsl:value-of select="//Name/Display"/></xsl:attribute>
    		</event>
    	</xsl:template>
     
    </xsl:stylesheet>
    Mais j'ai toujours le message d'erreur :
    "Caught exception: undefined
    Details: TypeError: D is null"

    J'ai également essayé avec des for-each, mais pareil ...

    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
    <xsl:stylesheet version="1.0"
    				xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:output
    	  encoding="UTF-8"
    	  indent="yes"
    	  method="xml"/>
     
     
    	<xsl:template match="/">
    		<xsl:element name="data">
    			<xsl:for-each select="Individuals/Individual">
    				<xsl:element name="event">
    					<xsl:attribute name="start">
    						<xsl:value-of select="Birth/Date"/>
    					</xsl:attribute>
    					<xsl:attribute name="title">
    						<xsl:value-of select="Name/Display"/>
    					</xsl:attribute>
    				</xsl:element>
    			</xsl:for-each>
    		</xsl:element>
    	</xsl:template>
     
    </xsl:stylesheet>

Discussions similaires

  1. [Crystal] transformation d'une date en numéro de semaine
    Par barna dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/03/2017, 09h41
  2. Réponses: 3
    Dernier message: 11/02/2014, 10h12
  3. [Transformation XSL] Attributs xmlns:xsi ?
    Par hobotalker dans le forum C#
    Réponses: 0
    Dernier message: 09/11/2011, 10h40
  4. Réponses: 1
    Dernier message: 30/05/2011, 00h40
  5. Transformation XSL et caractères spéciaux
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 4
    Dernier message: 28/04/2003, 10h38

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