un<br/> dans le fichier XML, comment avoir <br> en html ? [XML/XSL] - Programmation
Marsh Posté le 10-06-2001 à 03:48:01
à la place de ton xsl:value-of, utilises xsl:copy-of qui lui fait une copie brute.
<xsl:copy-of select="." />
question : il marche vraiment ton xsl ? tu matches "/a", et dans cette sélection tu demandes value-of "a" ... ce qui donne un xpath /a/a. tu t'es planté en recopiant ou c'est ton parseur qui bugge ?
Marsh Posté le 10-06-2001 à 04:47:22
ouah !!! merci tu viens de me sauver ma nuit là ... (encore qu'il est ouh là là 5h30 !)
pour l'erreur c'est pas mon parseur, je me suis gourré en réduisant mon .xsl de 200 lignes pour faire plus simple
j'avais pas testé l'exemple fourni, sorry
et encore merci !
Marsh Posté le 10-06-2001 à 04:49:02
merde il etait 4h30, faudrait jamais devoir coder à ces heures, apres on s'etonnes de faire plein de conneries, j'espere que j'arriverai à relire mon code demain
a+
Marsh Posté le 10-06-2001 à 06:06:41
aille, le :
<p><xsl:copy-of select="A"/></p>
me donne :
<p>
<A>
blabla<br>blabla
</A>
</p>
tout mon texte est en couleur anchor !!
et apparement y a pas d'option à xsl:copy-of pour lui dire de ne pas inclure tout le node mais seulement le contenu de ce node
pour avoir :
<p>
blabla<br>blabla
</p>
bon je vais me coucher, si qqun a une idée, je prends
A+
Marsh Posté le 10-06-2001 à 06:40:15
mauvaise heure pour coder ... ?
tu peux sélectionner les nodes et afficher leur contenu : tu sélectionnes le chemin (a/) et affiches le contenu avec "."
avec un foreach ...
<xsl:for-each select="A">
<xsl:copy-of select="." />
</xsl:for-each>
... ou par templates : tu mettras un <xsl:apply-templates /> ... je sais pas où, vu ton exemple.
<xsl:template match="A">
<xsl:copy-of select="." />
</xsl:template>
Marsh Posté le 10-06-2001 à 13:56:41
arghh ! pareil, le xsl:copy-of ajoute le nom du node
(j'ai essayé la methode du template, je pense que le for-each va donner pareil )
bon je donne une partie du xml et le xsl, si ça interesse qqun de jeter un coup d'oeil pour m'aider (c'est pas pour moi ni pour mon boulot, j'aide pour le site de la team Folding@Home)
xml :
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="FAQ.xsl"?>
<FAQ Name="La FAQ">
<Section Name="Généralités sur le projet" Link="WHATIS">
<SubSection Link="WHATIS0" ToPrev="WHATIS" ToNext="WHATIS1">
<Q>Folding ? ça veut dire quoi ça ?</Q>
<A>On peut traduire le terme "folding" par repliement, du verbe "to fold" : plier.
</A>
</SubSection>
<SubSection Link="WHATIS1" ToPrev="WHATIS0" ToNext="TOP">
<Q>Le but du projet Folding@Home</Q>
<A>Le but du projet Folding@Home est de resoudre le probleme du repliement des protéines. <br/><br/>
Ce probleme est le saint graal de la biophysique moléculaire moderne, mais sa résolution
implique d'enormes quantités de calculs.<br/><br/>
Le projet lancé par l'université de Stanford se sert de la technologie des ordinateurs distribué
pour arriver à résoudre ce probleme.
</A>
</SubSection>
</Section>
</FAQ>
xsl : (y a un <!--c est ici que ça chie grave--> où ça chie grave )
<?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"/>
<xsl:template match="/">
<html>
<head>
<title><xsl:value-of select="FAQ/@Name"/></title>
<link rel="stylesheet" type="text/css" href="./Sheet.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
</head>
<body bgcolor="White" topmargin="0">
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="/FAQ">
<a name="TOP"></a>
<p align="center"><img src="./title3.jpg" WIDTH="304" HEIGHT="73"/></p>
<h1><xsl:value-of select="@Name"/></h1>
<!-- start menu -->
<ul>
<xsl:for-each select="Section">
<p>
<li>
<a href="#{@Link}"><xsl:value-of select="@Name"/></a>
</li>
<ul>
<xsl:for-each select="SubSection">
<li>
<a href="#{@Link}"><xsl:value-of select="Q"/></a>
</li>
</xsl:for-each>
</ul>
</p>
</xsl:for-each>
</ul>
<!-- end menu -->
<br/><br/>
<xsl:for-each select="Section">
<!-- start section -->
<a name="#{@Link}"></a>
<br/><br/>
<H1><xsl:value-of select="@Name"/></H1>
<!-- end section -->
<br/>
<xsl:for-each select="SubSection">
<!-- start subsection -->
<p>
<table border="0" width="100%">
<tr>
<td width="90%">
<a name="#{@Link}"></a>
<H2><xsl:value-of select="Q"/></H2>
</td>
<td width="9%" valign="top">
<a href="#TOP"><img alt="Top" src="./top.gif" border="0" WIDTH="17" HEIGHT="17"/></a>
<a href="/"><img alt="Accueil" src="./home.gif" border="0" WIDTH="17" HEIGHT="17"/></a>
<a href="#{@ToPrev}"><img alt="Précédant" src="./previous.gif" border="0" WIDTH="17" HEIGHT="17"/></a>
<a href="#{@ToNext}"><img alt="Suivant" src="./next.gif" border="0" WIDTH="17" HEIGHT="17"/></a>
</td>
</tr>
</table>
<!--c est ici que ça chie grave-->
<p><xsl:apply-templates select="./A" /></p>
<!--<p><xsl:copy-of select="A"/></p>-->
</p>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template match="A">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
oui je sais c'est le pire .xsl que vous ayez vu, mais ...
[edit]--Message édité par rotoutou--[/edit]
Marsh Posté le 10-06-2001 à 16:49:16
bon j'ai mis une grosse rustine :
<xsl:template match="A">
<xsl:for-each select="*|text()">
<xsl:choose>
<xsl:when test="not(node())">
</xsl:when>
<xsl:otherwise >
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
si le node A est déclaré comme ça : <A><p> textes avec balises html</p></A> ça marche
bizarrement si y a pas les <p></p> (<A>textes avec balises html</A> ) ça marche pas
merci quand meme pour l'aide
Marsh Posté le 10-06-2001 à 17:22:12
au temps pour moi ... je teste avec ie, donc je n'ai pas la source générée ...
essaye avec cette template, ça devrait être bon :
<xsl:template match="A">
<xsl:for-each select="node()">
<xsl:copy-of select=".">
</xsl:for-each>
</xsl:template>
Marsh Posté le 10-06-2001 à 23:42:29
youdontcare a écrit a écrit : au temps pour moi ... je teste avec ie, donc je n'ai pas la source générée ... essaye avec cette template, ça devrait être bon : <xsl:template match="A"> <xsl:for-each select="node()"> <xsl:copy-of select="."> </xsl:for-each> </xsl:template> |
yes ça a l'air de marcher, plus besoin du <p> juste apres le <A> et tout cas ...
merci beaucoup !
tu as pas les extension du shell "xml validator" et "view xsl output" ?
INDISPENSABLE !
http://msdn.microsoft.com/msdn-fil [...] xmltls.exe
tu installes dans un repertoire bidon, clic droit sur les deux .inf, installer et zou ça te rajoute un des extensions dans ton clic droit pour voir l'html produit par ton xsl et de valider le xml
a+
Marsh Posté le 11-06-2001 à 00:59:50
excellent ! à mon tour de te remercier
j'avais tenté des générateurs xsl->html comme lotusxsl, mais c'était un merdier incroyable.
bon je vais moins galérer maintenant
Marsh Posté le 11-06-2001 à 01:13:36
youdontcare a écrit a écrit : excellent ! à mon tour de te remercier j'avais tenté des générateurs xsl->html comme lotusxsl, mais c'était un merdier incroyable. bon je vais moins galérer maintenant |
c clair que sans voir ta sortie HTML produite par le xsl tu es pas dans la merde, surtout quand tu est mauvais comme moi, ça permet de mettre des petits trucs de débogage dans la xsl pour savoir par où tu passe dans l'arbre par exemple, ou de reperer les <p></p> vides qui trainent partout à cause d'un mauvais apply-templates
j'avais fait pas mal de XML/XSL etc y a un an, mais j'avais preque tout oublié et y a eu pas mal de changements durant cette periode
le site Folding@Home sera bientot en ligne, un petit peu (beaucoup de mon point de vue) grace à toi, merci beaucoup encore une fois
a+
Marsh Posté le 11-06-2001 à 01:52:16
clair c'est le bonheur de voir la source générée ! jusqu'à maintenant j'avançais à tatons ... d'un autre côté ça m'a permis d'apprendre à la dure
tu fileras l'adresse du site lorsqu'il sera prêt ? dans ce thread par ex ...
si tu veux qq très bon tutorials xsl pour te rafraîchir les idées (j'ai appris grâce à ceux-ci) :
http://www.w3schools.com/xsl/default.asp
http://zvon.org/xxl/XSLTutorial/Books/Book1/index.html
http://zvon.org/xxl/XPathTutorial/ [...] mples.html
Marsh Posté le 11-06-2001 à 02:19:48
youdontcare>
rotoutou>
vous me simplifiez la vie, messieurs ... c'est du bonheur que de travailler avec vous...
Marsh Posté le 11-06-2001 à 02:21:28
merci pour les links, les miens d'il y a un an c'etait presque toujours "error 404"
les liens encore valides c'etait ceux de mes dernieres experiences en xml, quand je bossais sur apache-cocoon, un mix asp-xml avec ilots de données etc, tres cool mais je suis passé sur du developpement visual C++ alors ...
je poste dans le thread l'adresse du site dés que c'est online
par contre le merge du XML+XSL sera server-side (bah oui y a encore 50% des gens qui ont ie4.0 alors ...)
a+
Marsh Posté le 11-06-2001 à 02:24:12
>youdontcare : JWhy est le responsable de l'assemblage du site
Marsh Posté le 11-06-2001 à 10:28:35
petite question bête au passage, vous utiliser quoi pour le "merge XML/XSL" côté serveur?
Moi j'utilise php sur un serveur apache mais c'est un peu galère.
Marsh Posté le 10-06-2001 à 01:42:51
salut j'ai ça :
dans a.XML :
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="a.xsl"?>
<a>
coucou<br/>
les gars
</a>
dans a.xsl :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/a">
<html>
<head>
<xsl:value-of select="a"/>
</head>
</html>
</xsl:template>
</xsl:stylesheet>
et j'obtiens
<html>
<head>
coucou les gars
</head>
</html>
à la place de :
<html>
<head>
coucou <br> les gars
</head>
</html>
j'ai pensé mettre un <xsl:apply-templates/> au debut du fichier XSL et ça dans la liste des templates :
<xsl:template match="br">
<br><xsl:apply-templates/></br>
</xsl:template>
mais ça marche pas
qqun a une idée ?
pareil pour les <ul></li>
a+
---------------
Reckless inferior depraved repentant ruinous foul-mouthed revered master Rotoutou the great.