petit problème de débutant [XSL] - Programmation
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>
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)
Marsh Posté le 31-05-2001 à 11:48:12
je ne comprends vraiement pas pourquoi il me réclame la dtd dans le .xsl.
[edit]--Message édité par prettysmile--[/edit]
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?
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 :
|
Il faudrait que tu écrives:
Code :
|
Avec un petit:
Code :
|
après ton template principal.
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!!!!
[edit]--Message édité par prettysmile--[/edit]
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
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>
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.
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"
qqu'un peut il m'aider?