[XSL] petit problème de débutant

petit problème de débutant [XSL] - Programmation

Marsh Posté le 30-05-2001 à 17:18:24    

quand xml edit analyse ce code:
 
 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
 
<html>
    <body>
 
       
       <FONT face="helvetica,arial,sans-serif" color="green" size="+2">PRIMITIVES.</FONT>    
               <xsl:for-each select="primitive" order-by="+ p_name"/>
                    <p>
                          <xsl:value-of select="p_name"/>
                          <xsl:value-of select="list"/>
                   </p>
              </xsl:for-each>
 
     <FONT face="helvetica,arial,sans-serif" color=green size=+2>CLASSES.</FONT>
              <xsl:for-each select="class" order-by="+ c_name" />
                  <p>
                          <xsl:value-of select="c_name"/>
                          <xsl:value-of select="c_desc"/>
                          <xsl:value-of select="subclass"/>
                          <xsl:value-of select="c_att"/>
                          <xsl:value-of select="content"/>
                  </p>
               </xsl:for-each>
 
      <FONT face="helvetica,arial,sans-serif" color=green size=+2>NODES.</FONT>
            <xsl:for-each select="node" order-by = "+ n_name"/>
                  <p>
                       <xsl:value-of select="n_name"/>
                       <xsl:value-of select="n_desc"/>
                        <xsl:value-of select="memberof"/>
                         <xsl:value-of select="in_att"/>
                        <xsl:value-of select="ex_att"/>
                 </p>
           </xsl:for-each>
 
   
</body>
  </html>
 
</xsl:template>
</xsl:stylesheet>
 
il repond:
"this file is not well formed body closing element name expected" :eek2:  
 
qqu'un peut il m'aider?

Reply

Marsh Posté le 30-05-2001 à 17:18:24   

Reply

Marsh Posté le 30-05-2001 à 17:54:34    

Mais tu as du kk dans les yeux ??? non, je deconne,c normal , il y a plusieurs fotes (en tout 5 ou 6 , a toi de voir la difference) !!!!! :))
 
Voici la correction :
---------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
 
<html>
    <body>
 
         
       <FONT face="helvetica,arial,sans-serif" color="green" size="+2">PRIMITIVES.</FONT>    
               <xsl:for-each select="primitive" order-by="+ p_name">
                    <p>
                          <xsl:value-of select="p_name"/>
                          <xsl:value-of select="list"/>
                   </p>
              </xsl:for-each>
 
     <FONT face="helvetica,arial,sans-serif" color="green" size="+2">CLASSES.</FONT>
              <xsl:for-each select="class" order-by="+ c_name" >
                  <p>
                          <xsl:value-of select="c_name"/>
                          <xsl:value-of select="c_desc"/>
                          <xsl:value-of select="subclass"/>
                          <xsl:value-of select="c_att"/>
                          <xsl:value-of select="content"/>
                  </p>
               </xsl:for-each>
 
      <FONT face="helvetica,arial,sans-serif" color="green" size="+2">NODES.</FONT>
            <xsl:for-each select="node" order-by = "+ n_name">
                  <p>
                       <xsl:value-of select="n_name"/>
                       <xsl:value-of select="n_desc"/>
                        <xsl:value-of select="memberof"/>
                         <xsl:value-of select="in_att"/>
                        <xsl:value-of select="ex_att"/>
                 </p>
           </xsl:for-each>
 
   
</body>
  </html>
 
</xsl:template>
</xsl:stylesheet>

Reply

Marsh Posté le 31-05-2001 à 10:30:58    

ok, c'est corrigé,merci.
sans vouloir abuser, comment dans ce document xsl, je fais référence à ma dtd? (référence que réclame xml spy, alors que ma dtd est interne)

Reply

Marsh Posté le 31-05-2001 à 11:48:12    

je ne comprends vraiement pas pourquoi il me réclame la dtd dans le .xsl.
 :crazy:

 

[edit]--Message édité par prettysmile--[/edit]

Reply

Marsh Posté le 05-06-2001 à 14:19:45    

HELP!!!!  :crazy:

Reply

Marsh Posté le 05-06-2001 à 15:13:57    

:) bon, la transfo marche, meme si Spy estime ma feuille xsl non valide.
voici un autre petit pb de débutant:
dans mon doc xml, j'ai un élément <primitive> qui contient 1 <p_name> et plusieurs <list>. quand j'effectue la transo XSL, seul le premier élément est affiché. Comment afficher les autres?

Reply

Marsh Posté le 05-06-2001 à 20:35:55    

C'est normal, dans l'inline template qui traite l'élément primitive, tu n'itères pas sur les éléments enfants.
 
A la place de ton :

Code :
  1. <xsl:value-of select="list"/>


 
Il faudrait que tu écrives:

Code :
  1. <xsl:apply-templates select="list"/>


 
Avec un petit:

Code :
  1. <xsl:template select="list">
  2.   <!-- Traitement d'un élément "list" -->
  3. </xsl:template>


après ton template principal.

Reply

Marsh Posté le 06-06-2001 à 09:03:22    

donc j'écris:
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<html>
 
....blablabla.....
 
</html>
</xsl:template>
 
<xsl:template select="list">
  <!-- Traitement d'un élément "list" -->
<br><xsl:value-of select="list"/></br>
</xsl:template>
 
 
et là : ben ca foire, alors je remplace <xsl:template select="list"> par <xsl:template match="list"> là, spy me fait la transfo mais rien ne s'affiche!!!!
 :crazy:

 

[edit]--Message édité par prettysmile--[/edit]

Reply

Marsh Posté le 06-06-2001 à 10:41:04    

petite précision: rien ne s'affiche mais le bon nombre de ligne à été sauté là où devraient apparaitre les différent éléments list

Reply

Marsh Posté le 06-06-2001 à 10:57:24    

pour ceux que ca interesse, a force de bidouille j'ai trouvé la soluce:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
 
 
<html>
    <body>
       
 <h1>PRIMITIVES</h1>    
        <br/>   <xsl:for-each select="schema/primitive" >
  <p>
                <h2><br><xsl:value-of select="p_name"/></br></h2>
  <br>{</br>  
  <xsl:apply-templates select="list"/>
  <br>}</br>
                </p>
               </FONT>
  </xsl:for-each>
</body>
  </html>
 
</xsl:template>
 
<xsl:template match="schema/primitive/list">
 <br><xsl:value-of select="."/></br>
</xsl:template>
 
</xsl:stylesheet>
 :bounce:

Reply

Marsh Posté le 06-06-2001 à 10:57:24   

Reply

Marsh Posté le 06-06-2001 à 16:56:24    

Les accolades sont la pour faire ressortir une instruction ou appartiennent rellement à ton document ?
 
Sinon Quel parseur utilises tu car il ne devrait pas etre necessaire de donner le XPath entier des elements lists dans le gabarit que tu presentes et au vu d'ou il est appelé ...
 
D'ailleurs l'interpretation du XSL depend bcp du parseur utilise, Microsoft, IBM, ... du fait de la non finalisation de la standardisation.


---------------
Ce qui vaut la peine d'être fait vaut la peine d'être bien fait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed