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] Problème de liaison XML<->XSLT


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Par défaut [XSLT] Problème de liaison XML<->XSLT
    Bonjour,

    Je suis débutant en XML/XSLT. Après pas mal de recherche j'ai crée un fichier XSLT pour restructurer un fichier XML.
    J'ai travailler avec un éditeur (Editix) pour la création du XSLT. Quand je demande à cet éditeur de me transformer ma source XML avec le XSLT, tout se passe merveilleusement bien. Il m'ouvre Internet Explorer avec la structuration que j'attend.
    J'ai donc voulu lié ma source XML au XSLT mais là ça ne marche plus.

    Voici ma source ( tronquée ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="everest.xsl"?>
    <Report><Lang>it</Lang>
    <Page><Title>Report</Title><Icon>112</Icon>
    <Item><Title>Version</Title><Icon>112</Icon><ID>257</ID><Value>EVEREST v3.50.761/it</Value></Item>
    <Item><Title>Benchmark Module</Title><Icon>112</Icon><ID>266</ID><Value>2.1.169.0</Value></Item>
    <Item><Title>Homepage</Title><Icon>116</Icon><ID>259</ID><Value>http://www.lavalys.com/</Value></Item>
    <Item><Title>Report Type</Title><Icon>91</Icon><ID>260</ID><Value>Report Wizard</Value></Item>
    <Item><Title>Computer</Title><Icon>46</Icon><ID>261</ID><Value>INFP01XXXXXXX1</Value></Item>
    <Item><Title>Generator</Title><Icon>47</Icon><ID>262</ID><Value>Administrator</Value></Item>
    <Item><Title>Operating System</Title><Icon>38</Icon><ID>263</ID><Value>Microsoft Windows 2000 Professional 5.0.2195 (Win2000 Retail)</Value></Item>
    <Item><Title>Date</Title><Icon>64</Icon><ID>264</ID><Value>2007-02-23</Value></Item>
    <Item><Title>Time</Title><Icon>131</Icon><ID>265</ID><Value>14:56</Value></Item>
    </Page>
    Mon XSLT :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
     <xsl:output method="xml" indent="yes" encoding="ISO-8859-1"/>
     
     <!-- Début du programme principal -->
     <!-- Selection de l'ensemble du document XML source -->
    <xsl:template match = "/" >
     
    	<!-- Création de l'élément racine -->
    	<xsl:element name ="Report">
    		<!-- Traitement de chaque élément PAGE -->		
    		<xsl:for-each select="//Page">
      			<!-- Création de l'élément PAGE avec l'élément TITLE en nom -->
    		               <xsl:element name = "{normalize-space(translate(current()/Title,' 0123456789():/\-.,','___________________'))}">
    		               	<!-- Ajout de l'élement VALUE en valeur text -->
    	                    		<xsl:value-of select = "current()/Value" />
     
    				<!-- Traitement de chaque élément ITEM appartenant à un élément PAGE -->          		
       				<xsl:for-each select = "current()/Item" >
       					<!-- Création de l'élément ITEM avec l'élément TITLE en nom -->
    		               		<xsl:element name = "{normalize-space(translate(current()/Title,' 0123456789():/\-.,','___________________'))}">
    		               			<!-- Ajout de l'élement VALUE en valeur text -->
    	                    				<xsl:value-of select = "current()/Value" />
    	               	     		</xsl:element> 
                   	   		</xsl:for-each>
     
    		                  	<!-- Traitement de chaque élément GROUP appartenant à une élément PAGE -->
                   		   	<xsl:for-each select = "current()/Group" >
       					<!-- Création de l'élément GROUP avec l'élément TITLE en nom -->
    		               		<xsl:element name = "{normalize-space(translate(current()/Title,' 0123456789():/\-.,','___________________'))}">                  	
     						<!-- Traitement de chaque élément ITEM à l'interieur de l'élément GROUP -->          		
    	   					<xsl:for-each select = "current()/Item" >
       							<!-- Création de l'élément ITEM avec l'élément TITLE en nom -->
    				               		<xsl:element name = "{normalize-space(translate(current()/Title,' 0123456789():/\-.,','___________________'))}">
    			               				<!-- Ajout de l'élement VALUE en valeur text -->
                        							<xsl:value-of select = "current()/Value" />
    	                    					</xsl:element> 
    	               	   			</xsl:for-each>
                   	   			</xsl:element>
                      			</xsl:for-each>
     
                    			<!-- Traitement de chaque élément DEVICE -->
                   		   	<xsl:for-each select = "current()/Device" >
       					<!-- Création de l'élément DEVICE avec l'élément TITLE en nom -->
       					<!-- ANCIEN CODE <xsl:element name = "{normalize-space(translate(current()/Title,' 0123456789():/\-.,','___________________'))}">-->
       					<xsl:element name = "Device3">
       					<!-- <xsl:element name = "Device"> -->
       						<xsl:element name = "Title">	
       							<xsl:value-of select = "current()/Title" />
       						</xsl:element>	
     		        				<!-- Traitement de chaque élément GROUP appartenant à une élément DEVICE -->
                   		   			<xsl:for-each select = "current()/Group" >
       							<!-- Création de l'élément GROUP avec l'élément TITLE en nom -->
    		               				<xsl:element name = "{normalize-space(translate(current()/Title,' 0123456789():/\-.,','___________________'))}">                  	
     								<!-- Traitement de chaque élément ITEM à l'interieur de l'élément GROUP -->          		
    	   							<xsl:for-each select = "current()/Item" >
       									<!-- Création de l'élément ITEM avec l'élément TITLE en nom -->
    				               				<xsl:element name = "{normalize-space(translate(current()/Title,' 0123456789():/\-.,','___________________'))}">
    			               						<!-- Ajout de l'élement VALUE en valeur text -->
                        									<xsl:value-of select = "current()/Value" />
    	                    							</xsl:element> 
    	               	   					</xsl:for-each>
                   	   					</xsl:element>
                      					</xsl:for-each>
     
    						<!-- Traitement de chaque élément ITEM à l'interieur de l'élément DEVICE -->          		
    	   					<xsl:for-each select = "current()/Item" >
       							<!-- Création de l'élément ITEM avec l'élément TITLE en nom -->
    				               		<xsl:element name = "{normalize-space(translate(current()/Title,' 0123456789():/\-.,','___________________'))}">
    			               				<!-- Ajout de l'élement VALUE en valeur text -->
                        							<xsl:value-of select = "current()/Value" />
    	                    					</xsl:element> 
    	               	   			</xsl:for-each>
                   	   			</xsl:element>
                      			</xsl:for-each>
                      		</xsl:element>
                      	</xsl:for-each>
    	</xsl:element>
     
    </xsl:template>
    </xsl:stylesheet>
    Ce que j'obtiens en passant par l'éditeur (tronqué ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Report>
    <Report>
    <Version>EVEREST v3.50.761/it</Version>
    <Benchmark_Module>2.1.169.0</Benchmark_Module>
    <Homepage>http://www.lavalys.com/</Homepage>
    <Report_Type>Report Wizard</Report_Type>
    <Computer>INFP01XXXXXXX1</Computer>
    <Generator>Administrator</Generator>
    <Operating_System>Microsoft Windows 2000 Professional 5.0.2195 (Win2000 Retail)</Operating_System>
    <Date>2007-02-23</Date>
    <Time>14:56</Time>
    </Report>
    et ce que j'obtiens en utilisant directement IE :
    La page XML ne peut pas être affichée
    Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.


    --------------------------------------------------------------------------------

    Ce nom ne doit pas contenir le caractère '+' : -->+<--____V
    ou

    EVEREST v3.50.761/it 2.1.169.0 http://www.lavalys.com/ Report Wizard INFP01XXXXXXX1 Administrator Microsoft Windows 2000 Professional 5.0.2195 (Win2000 Retail) 2007-02-23 14:56 Advanced Configuration and Power Interface (ACPI) PC (Mobile) Microsoft Windows 2000 Professional Service Pack 4 6.0.2800.1106 (IE 6.0 SP1) 4.07.00.0700 (DirectX 7.0) INFP01XXXXXXX1 Administrator INFP01XXXXXXX1 2007-02-23 / 14:56 Intel Pentium IIIE, 866 MHz (6.5 x 133) Unknown VIA VT8606 ProSavage PN133 247 MB (PC133 SDRAM) Phoenix (08/23/06) Communications Port (COM1) Communications Port (COM2) Printer Port (LPT1) S3 Graphics Twister (8 MB) <_D_Accelerator>S3 Twister (86c380) Plug and Play Monitor [NoDB] VIA Bus Master IDE Controller Floppy disk drive M-SysT5 Dell Memory Key USB Device (109 MB, USB) ST3402111A (40 GB, 7200 RPM, Ultra-ATA/100) TOSHIBA ODD-DVD SD-C2732 (8x/24x DVD-ROM) OK 9114 MB (7282 MB free) 29015 MB (27840 MB free) 37.2 GB (34.3 GB free) Standard 101/102-Key or Microsoft Natural PS/2 Keyboard PS/2 Compatible Mouse 10.4.43.20 00-0E-8C-80-6E-16 Intel(R) 82559 Fast Ethernet LAN on Motherboard (10.4.43.20) VIA PCI-USB Universal Host Controller VIA PCI-USB Universal Host Controller USB Mass Storage Device
    Auriez vous une idée de ce que j'ai pu manqué. J'ai verifié plusieurs tuto, testé avec des exemples, mais je ne trouve pas :/

    Merci

  2. #2
    Membre émérite
    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
    Par défaut
    As tu firefox? car sur firefox cela fonctionne très bien (Debian3.1 + firefox 2.0)
    sinon dans ton xml il manque la balise de fin

  3. #3
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Par défaut
    Sous Firefox ( 2.0 & WinXP SP2) j'ai le même problème. J'ai tout le contenu qui s'affiche mais aucune balise.
    J'ai testé aussi sous excel, car le xml destination est destiné à être importé sous excel, et j'ai l'impression qu'il ne prend même pas en compte le XSLT

    Quant au fait qu'il manque une balise de fin, c'est normal car je n'ai mis qu'une partie du fichier en exemple, mais dans le fichier originel il y a bien la balise de fin.

  4. #4
    Membre émérite
    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
    Par défaut
    Ah!! voila ton problème: tout s'affiche mais pas les balises, et cela est normal.

    En faite tu n'affiches pas un fichier xml pur et dur mais un fichier xml obtenu par transformation xslt du naviguateur et là il part du principe qu'il s'agit d'un fichier html et donc il n'affiche pas les balises.
    Ce que tu peux faire est de faire toi même la transformation xslt puis d'ouvrir le fichier xml obtenu par ton naviguateur

  5. #5
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Par défaut
    ( merci pour l'aide )
    pourtant dans le XSLT j'ai demandé une sortie en XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="xml" indent="yes" encoding="ISO-8859-1"/>
    donc ca devrait pas me le sortir en XML ?
    Et l'autre soucis c'est que la transformation doit être automatique ( pas d'intervention utilisateur sur le fichier source ou autre, tout se fait à partir d'une feuille excel ), donc si c'est normal que la transformation ne se fasse pas, ça vas être ennuyeux arf

    bon au moins j'ai des éléments de réponses et je me torture moins le cerveau. merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/11/2006, 20h22
  2. [XSLT] Liaison implicite d'un XML avec son XSLT
    Par jamulion dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/09/2006, 10h08
  3. Réponses: 3
    Dernier message: 17/07/2006, 08h29
  4. [XSLT] Problème de transformation XML avec un fichier xslt
    Par seb35 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 24/04/2006, 22h02
  5. [XSLT][sablotron]Problème de parser XML
    Par sheura dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/11/2005, 17h39

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