Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2835 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  xsl/xml la feuille de style n'affiche pas la valeur souhaité

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

xsl/xml la feuille de style n'affiche pas la valeur souhaité

n°1510812
injall2
profil : bas
Posté le 05-02-2007 à 10:32:54  profilanswer
 

bonjour, j'ai donc un problème je veux faire un tableau en html a partire d'un fichier xml pour cela je fais une feuille de style xsl (je vais avoir beaucoup de mal a expliquer si vous voulez de plus ample informations dite le moi :sweat:  ) je n'arrive pas a afficher la valeur souhaité voici un extrait mon fichier xml :
 
- <Report>
- <Page>
  <Title>Rapport</Title>  
  <Icon>112</Icon>  
- <Item>
  <Title>Version</Title>  
  <Icon>112</Icon>  
  <Value>AIDA32 v3.94.2</Value>  
  </Item>
- <Item>
  <Title>Auteur</Title>  
  <Icon>112</Icon>  
  <Value>tamas.miklos@aida32.hu</Value>  
  </Item>
- <Item>
  <Title>Site web</Title>  
  <Icon>116</Icon>  
  <Value>http://www.aida32.hu</Value>  
  </Item>
- <Item>
  <Title>Type de rapport</Title>  
  <Icon>91</Icon>  
  <Value>Générateur de rapports</Value>  
  </Item>
- <Item>
  <Title>Ordinateur</Title>  
  <Icon>46</Icon>  
  <Value>EXPLOIT1</Value>  
 
je veux afficher la valeur en gras voici la ligne que j'ai mis (naïvement) dans ma feuille de style :
 
<td><xsl:value-of select="Report/Page/Item/Title"/></td>
 
mon problème est que c'est la valeur en italique qui s'affiche comment ciblé donc la valeur en gras?
 
merci d'avance


Message édité par injall2 le 05-02-2007 à 14:26:36
mood
Publicité
Posté le 05-02-2007 à 10:32:54  profilanswer
 

n°1510957
injall2
profil : bas
Posté le 05-02-2007 à 15:44:41  profilanswer
 

est-ce que mon problème est le même que arnobase? si oui que faut-il que je tape je ne trouve pas...

n°1511213
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-02-2007 à 02:19:48  profilanswer
 

Déjà, dans ton xpath tu demandes d'afficher la valeur d'une node "Title" et non "Value". Donc ça ne risque pas de marcher...
 
Sinon, naïvement je dirais :
 


<xsl:value-of select="Report/Page/Item[Title='Ordinateur']/Value"/>


 
PS : avec un code indenté, c'est mieux, parceque là c'est imbittable !

n°1511215
amiss18
Posté le 06-02-2007 à 02:37:32  profilanswer
 

D'abord tu ne peux pas faire appliquer value-of...,elle s'utile pour la valeur d'un attribut "
 
 
 
 <xsl:value-of select="Report/Page/Item/Title"/>  (A ne jamais écrire car expression Xpath avec un chemin rélatif)
 
 
<xsl:template match="/">
  <html><head><title> le titre du tableau</title></head>
A la place de ça tu dois écrire <td><i><xsl:apply-templates select="Report/Page/Item/Title"/></i></td>
</html></xsl:template>
 
Tu essaies ce code je me suis basé sur le chemin que t'as proposé en faisant fie du xml proposé.
 
 
 
 
 
 
 
 
 
 


---------------
amiss18
n°1511229
injall2
profil : bas
Posté le 06-02-2007 à 08:43:37  profilanswer
 

merci Arjuna. Amiss18 je ne comprend la subtilité de ce que tu m'a proposé étant débutant je ne voit pas se que tu appelle un "attribut", merci de ta réponse chaque aide est très utiles

n°1511293
MagicBuzz
Posté le 06-02-2007 à 11:35:02  profilanswer
 

Amiss18 te recommande d'écrire ta feuille XML proprement de façon modularisée à l'aide de templates.
Si je partage son avis, je le trouve un peu radical dans ses propos.
 
Mais il a raison, une fois que t'as réussi à faire un truc qui marchouille, change-le immédiatement en template afin de le rendre réutilisable.

n°1511302
injall2
profil : bas
Posté le 06-02-2007 à 11:39:48  profilanswer
 

ah okay enfaite le XML c'est pas moi qui l'ai fait il a été généré automatiquement part aida32 donc je fait avec mais je saurais si je me met en faire un de mes propres mimines merci


---------------
quoi qu'il arrive va falloir que je m'excuse --- "ne faite pas d'affirmation inverse à la vérité"
n°1511391
amiss18
Posté le 06-02-2007 à 14:49:04  profilanswer
 

Déjà au niveau de ton fichier xml il y'a problème(ton document n'est ni valide, ni bien formé) car la balise <Page> et la dernière balise <Item> ne sont pas fermées.Le code que je t'ai passée c'est pas une solution définitive,je t'ai seulement signifié qu'il faut toujours matcher sur noeud avant d'appeler un templates:je m'explique
<xsl:template match="un noeud">
<!--toujours suisivie de:-->
<xsl:apply-templates select="un noeud"/>
ou <xsl:value-of select="valeur de l'attribut/>
Si tu ne comprends toujours pas tu me signales et je te file le bon chemin XPath qu'il te faut avec les commentaires.
Bon courage

n°1511397
injall2
profil : bas
Posté le 06-02-2007 à 15:07:14  profilanswer
 

ce n'est que un extrait j'ai pris seulement se qui m'interressais a vous montré et comme je l'ai dis se fichier xml a été généré automatiquement par un logiciel (aida32) je ne peut donc pas le modifier, j'ai bien compris ton explication merci et merci de ton aide qui me permet de mieu comprendre se que je fais car j'apprend par les petit tutoriel sur le net il y a encore 2semaine je savais pas se qu'était le xml je te recontacterai pour des infos ;) merci encore


---------------
quoi qu'il arrive va falloir que je m'excuse --- "ne faite pas d'affirmation inverse à la vérité"
n°1511582
rx__
Paint It Black
Posté le 06-02-2007 à 21:44:14  profilanswer
 

amiss18 a écrit :

D'abord tu ne peux pas faire appliquer value-of...,elle s'utile pour la valeur d'un attribut "


:non:
Value-of peut être utilisée pour aller chercher la valeur de n'importe quel noeud, que ce soit du texte ou un attribut... La solution que tu donnes avec apply-template ne fonctionne que parce qu'il existe une builtin rule  

Code :
  1. <xsl:template match="text()|@*">
  2.     <xsl:value-of select="."/>
  3. </xsl:template>


Je recommanderais donc fortement de ne PAS utiliser le apply-template pour cet usage, à moins d'avoir un <template match=""> pour le noeud en question et de faire un <value-of select="text()" /> dedans. Et ceci afin d'éviter tout effet de bord en cas de redéfinition de la builtin rule.

mood
Publicité
Posté le 06-02-2007 à 21:44:14  profilanswer
 

n°1511682
injall2
profil : bas
Posté le 07-02-2007 à 09:33:21  profilanswer
 

enfète tout se complique je ne doit pas seulement faire aparraître que le nom d'un ordinateur mais tout un résumé de aida32... si je tape : <xsl:value-of select="Report/Page[Title='Résumé']/> est-ce que tout se qui suit derrière "group, item" et otre vont safficher?
 


Message édité par injall2 le 07-02-2007 à 09:54:49

---------------
quoi qu'il arrive va falloir que je m'excuse --- "ne faite pas d'affirmation inverse à la vérité"
n°1511815
injall2
profil : bas
Posté le 07-02-2007 à 14:21:32  profilanswer
 

puis-je vous demander de me corriger, une erreure m'ai trouver mais je ne la trouve pas... :  
 
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns="http://www.w3.org/TR/xhtml1/strict">
<xsl:template match="/">  
<html>
<body>
<title>rapport pc</title>
<TABLE BORDER=4  rules=cols cellpadding=5 STYLE="background-color: #FFCC99" >
<COLGROUP>
   <COL SPAN="2" WIDTH="100" STYLE="background: #66FFFF">
</COLGROUP>
<COLGROUP>
   <COL SPAN="7" WIDTH=60 STYLE="background: #66FFFF">
</COLGROUP>
 
 
 
 
      <TR>
<TD colspan="2"  style="COLOR: blue">Résumé</TD>
<TD  style="COLOR: blue">Nom du système </TD>
<TD  style="COLOR: blue">Système d'exploitation</TD>
<TD  style="COLOR: blue">Partage </TD>
<TD  style="COLOR: blue">Disque logique</TD>
<TD  style="COLOR: blue">Réseau windows</TD>
<TD  style="COLOR: blue">Démarrage automatique</TD>
<TD  style="COLOR: blue">Tâches programmées</TD>
      </TR>
      <TR>
 
 
 
  <TD colSPAN="2" align=center style="COLOR: black"><xsl:value-of select="Report/Page[Title='Résumé']/Group"></td>
 
  <TD><xsl:value-of select="Report/Page[Title='Nom du système']/Device></TD>
  <TD><xsl:value-of select="Report/Page[Title='Système d'exploitation']/Group></TD>
  <TD>xsl:value-of select="Report/Page[Title='Partages']/Device></TD>
  <TD>xsl:value-of select="Report/Page[Title='Disques logiques']/Device></TD>
  <TD>xsl:value-of select="Report/Page[Title='Réseau Windows']/Device></TD>
  <TD>xsl:value-of select="Report/Page[Title='Démarrage automatique']/Device></TD>
  <TD>xsl:value-of select="Report/Page[Title='Tâches programmées']/Device></TD>
      </TR>
   
     
     
   
</TABLE>
 
 
 
 
 
 
 
 
</body>
</html>
</xsl:template>  
</xsl:stylesheet>


Message édité par injall2 le 07-02-2007 à 14:21:55

---------------
quoi qu'il arrive va falloir que je m'excuse --- "ne faite pas d'affirmation inverse à la vérité"
n°1512428
amiss18
Posté le 09-02-2007 à 03:41:11  profilanswer
 

Tu dois pouvoir cerner dans ton propre code qu'est ce qui ne marche comme ça sera plus facile de repondre aisement à la question.Autrement je te propose une solution parmi tant d'autres à toi de l'améliorer:
 
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
 <xsl:template match="/">
 <html>
  <head>
   <title></title>
  </head>
  <body>
 
  <table border="1" mode="liste">
  <tr>
   <td><b>Title</b></td>
   <td><b>Icon</b></td>
   <td>Value</td>
   </tr>
  <xsl:for-each select="/Report/Page/Item">
  <tr>
  <td><xsl:value-of select="Title"/></td><br/>
  <td><xsl:value-of select="Icon"/></td><br/>
  <td><xsl:value-of select="Value"/></td><br/>
  </tr>
  </xsl:for-each>
  </table>
  </body>
 </html>
 </xsl:template>
 
 
</xsl:stylesheet>

n°1512445
injall2
profil : bas
Posté le 09-02-2007 à 08:47:06  profilanswer
 

merci amiss ke vai tenter sa mais j'ai énormément de mal a faire un code juste alors défois que des erreur vous sautes au visage ;).


---------------
quoi qu'il arrive va falloir que je m'excuse --- "ne faite pas d'affirmation inverse à la vérité"
n°1512814
rx__
Paint It Black
Posté le 09-02-2007 à 18:45:07  profilanswer
 

Il manque des guillemets sur plusieurs attributes de la table et des td. J'ai bon? :D
Attention ausi, ton namespace indique que c'est de l'xhtml strict mais en xhtml tout les noms d"éléments et des attributs sont en minuscules. Mais ça ne doit pas empêcher la transformation, c'est juste incorrect vis-à-vis du browser.


Message édité par rx__ le 09-02-2007 à 18:48:49
n°1513453
injall2
profil : bas
Posté le 12-02-2007 à 08:38:51  profilanswer
 

et non rx je les ai toute rajoutés mais l'erreur persiste ":4: caracter not allowed"


---------------
quoi qu'il arrive va falloir que je m'excuse --- "ne faite pas d'affirmation inverse à la vérité"
n°1513786
rx__
Paint It Black
Posté le 12-02-2007 à 18:22:12  profilanswer
 

Erreur difficile à voir sur le forum... Tu as sans doute des voyelles accentuées dans ton fichier alors que tu n'as pas défini son encodage (qui est alors par défaut UTF-8). Tu dois donc mettre au début du fichier:

Code :
  1. <?xml version='1.0' encoding="ISO-8859-1"?>

n°1513891
injall2
profil : bas
Posté le 12-02-2007 à 23:25:05  profilanswer
 

merci ;)


---------------
quoi qu'il arrive va falloir que je m'excuse --- "ne faite pas d'affirmation inverse à la vérité"

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  xsl/xml la feuille de style n'affiche pas la valeur souhaité

 

Sujets relatifs
fixer un fond d'écran en html sans feuille de stylerecupérer derniere valeur enregister
pbleme pour recuperer valeur d'un champcomparer des valeur dans un tableau
Recherhce d'une valeur dan un fichier texteStyle avec POI
[PHP] Recherche d'un module pour création de tableau du style Excelpb ouverture feuille excel ( VBA Excel )
pb scipt shell comparer un argument a une valeur dan un fichier 
Plus de sujets relatifs à : xsl/xml la feuille de style n'affiche pas la valeur souhaité


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR