Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Trivial ? Générer un retour chariot (< BR >) avec XSL

57 views
Skip to first unread message

David Molinier

unread,
May 23, 2001, 8:06:01 AM5/23/01
to
La question peut paraître triviale, mais je n'en vois pas l'issue !

Voici l'exposé du problème : ayant en entrée un document XML contenant l
a description d'une liste de lignes :

<texte>
<ligne>première ligne</ligne>
<ligne>deuxième ligne</ligne>
</texte>

(Pour information, ces données sont extraites depuis une base de données
mysql)

Je souhaite faire afficher par un browser HTML le résultat suivant :

..
première ligne
deuxième ligne
..

Il me faut donc générer les 2 lignes séparées par un tag HTML BR. Le pro
blème est que ce tag a la particularité de ne pas posséder de balise équ
ivalente /BR, ce qui rend sa génération plus délicate au sein d'une feui
lle XSL. Néanmoins, il est possible de décrire dans la feuille XSL une b
alise vide BR/, et c'est d'ailleurs le seul moyen que j'ai pu trouver.

Malheureusement, si Internet Explorer 5 affiche bien le résultat escompt
é avec les 2 lignes affichées l'une au-dessus de l'autre, Netscape (en t
ous cas ma version 4.5) néglige totalement la balise et m'affiche un vil
ain :

première ligne deuxième ligne

Comment puis-je résoudre mon problème, et faire en sorte que le HTML gén
éré soit compatible avec une majorité de browsers ?

Merci de me sortir de ce bien mauvais pas :-(

PS: j'utilise Xalan couplé à Xerces, et ma transformation s'opère dans u
ne servlet fonctionnant sous Tomcat.

--
David

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Article poste via Voila News - http://www.news.voila.fr
Le : Wed May 23 14:06:01 2001 depuis l'IP : 194.51.20.121 [VIP 6240697]

Thomas Broyer

unread,
May 23, 2001, 8:17:13 AM5/23/01
to
In <9eg939$nf9$1...@news.x-echo.com>, David Molinier wrote:
> Néanmoins, il est possible de décrire dans la feuille XSL une balise vide

> BR/, et c'est d'ailleurs le seul moyen que j'ai pu trouver.
>
> Malheureusement, si Internet Explorer 5 affiche bien le résultat escompt
> é avec les 2 lignes affichées l'une au-dessus de l'autre, Netscape (en t
> ous cas ma version 4.5) néglige totalement la balise et m'affiche un vil
> ain :
>
> première ligne deuxième ligne
>
> Comment puis-je résoudre mon problème, et faire en sorte que le HTML gén
> éré soit compatible avec une majorité de browsers ?

Produire du HTML, pas du XML.
<xsl:output method="html"/>
cf. spec XSLT, 16.2 HTML Output Method

Tom.

Paul GABORIT

unread,
May 23, 2001, 10:28:28 AM5/23/01
to

> In <9eg939$nf9$1...@news.x-echo.com>, David Molinier wrote:
> > Néanmoins, il est possible de décrire dans la feuille XSL une balise vide
> > BR/, et c'est d'ailleurs le seul moyen que j'ai pu trouver.
> >
> > Malheureusement, si Internet Explorer 5 affiche bien le résultat escompt
> > é avec les 2 lignes affichées l'une au-dessus de l'autre, Netscape (en t
> > ous cas ma version 4.5) néglige totalement la balise et m'affiche un vil
> > ain :
> >
> > première ligne deuxième ligne
> >
> > Comment puis-je résoudre mon problème, et faire en sorte que le HTML gén
> > éré soit compatible avec une majorité de browsers ?

À (at) Wed, 23 May 2001 12:17:13 GMT,
Thomas Broyer <ptitto...@free.fr> écrivait (wrote):


>
> Produire du HTML, pas du XML.
> <xsl:output method="html"/>
> cf. spec XSLT, 16.2 HTML Output Method

Ou peut-être en utilisant <BR /> à la place de <BR/> pour produire du XHTML...

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>

Pierre-Charles David

unread,
May 23, 2001, 10:32:17 AM5/23/01
to
David Molinier wrote:
> Il me faut donc générer les 2 lignes séparées par un tag HTML BR. Le pro
> blème est que ce tag a la particularité de ne pas posséder de balise équ
> ivalente /BR

Si, il en possède une (comme toute balise SGML/HTML), mais elle est
optionelle et
donc rarement (jamais ?) utilisée. Essaye "<br></br>". Sinon la norme
XHTML préconise
d'utiliser la forme "<br />" (avec un espace) pour résoudre ce genre de
cas. C'est du
XML bien formé est c'est correctement interprété par la majorité des
navigateurs.

Thomas Broyer

unread,
May 23, 2001, 3:01:46 PM5/23/01
to
In <r7itis6...@enstimac.fr>, Paul GABORIT wrote:
>> Produire du HTML, pas du XML.
>> <xsl:output method="html"/>
>> cf. spec XSLT, 16.2 HTML Output Method
>
> Ou peut-être en utilisant <BR /> à la place de <BR/> pour produire du
> XHTML...

Ça fera partie de XSLT 2.0 mais XSLT 1.0 n'a pas à faire cette distinction.
Soit il produit du XML, soit du HTML (soit du texte mais ne nous intéresse
pas ici).
XSLT se base sur une arborescence, pas sur du texte. Tu auras beau écrire
<br /> dans ta feuille de style, si la sortie est en XML, le processeur
sera libre de produire <br/>, <br></br> ou <br />, tant que ça représente
un élément br vide. Si la sortie est HTML, il devra produire <br>.
XSLT2.0 aura une sortie XHTML (certains processeurs, comme Xalan,
l'implémentent déjà) prenant en compte ces cas de "compatibilité
ascendante" de XHTML sur HTML4.

Tom.

Paul GABORIT

unread,
May 25, 2001, 3:38:23 AM5/25/01
to

À (at) Wed, 23 May 2001 19:01:46 GMT,

Thomas Broyer <ptitto...@free.fr> écrivait (wrote):
> Ça fera partie de XSLT 2.0 mais XSLT 1.0 n'a pas à faire cette distinction.
> Soit il produit du XML, soit du HTML (soit du texte mais ne nous intéresse
> pas ici).
> XSLT se base sur une arborescence, pas sur du texte. Tu auras beau écrire
> <br /> dans ta feuille de style, si la sortie est en XML, le processeur
> sera libre de produire <br/>, <br></br> ou <br />, tant que ça représente
> un élément br vide. Si la sortie est HTML, il devra produire <br>.

Dans l'absolu, c'est sûrement vrai. Ceci étant, les processeurs XSLT que j'ai
testés (ceux utilisables en Perl) m'ont toujours permis de produire du XHTML
comme je le voulais (et ils respectaient à la lettre ce que j'avais indiqué
dans ma feuille de style). Mais ce n'est peut-être qu'un coup de chance.

> XSLT2.0 aura une sortie XHTML (certains processeurs, comme Xalan,
> l'implémentent déjà) prenant en compte ces cas de "compatibilité
> ascendante" de XHTML sur HTML4.

Heureusement car cette «compatibilité» est l'une des raisons majeures de
l'existence de XHTML ;-)

0 new messages