STIC Discussion:STIC II (R2D2)
QUESTION 1 - saut de ligne dans fichier xml
- Est-ce que quelqu'un sait comment on fait un saut de ligne dans un fichier xml?? y'a un truc à faire dans xsl?? (ou dites-moi si la question a déjà été posée en me mettant le lien de la réponse... ) Merci. Choï
Réponse
Oui priori la notion de saut de ligne n'est pas dans la logique XML. S'il s'agit de faire encoder un saut de ligne dans un texte par exemple, il faudrait définir une balise "saut" (comme le <br> en HTML) et ensuite avec XSLT (ou autre mécanisme) traduire en saut: <br> pour HTML, <br/> pour XHTML, control-J pour un fichier texte etc.
Réponse compliquée: Maintenant il existe des situations où il faut gérer des données déjà produites et on peut le faire, mais c'est pas du XSLT pour débutants: Quand un analyseur XML lit des données, les sauts de lignes (control-M suivi de control-J sous Windows et control-J sous Unix) sont traduits en \n. Maintenant, on peut écrire un template qui remplace le \n en br par exemple. C.f. la XSLT FAQ:
- http://www.dpawson.co.uk/xsl/sect2/replace.html
- Sinon: http://lists.zvon.org/l/showmsg.xp?ln=zvon&mid=2622
Réflexion
Intrigué par cette réponse (j'adore, la solution est d'un complexe), je me demandais en regardant le contenu du flux de ce wiki (lien rss). Et on remarque que les sauts de lignes (et tous le code html) sont écrites en dur. A la différence que les caractères d'ouverture et de fermeture de balises ( < et > ) sont écrites avec leur code ASCII ( < et > ).
Le xml ne traite pas les caractères ASCII comme des balises donc le traite "normalement" (ou plutôt ne les traitent pas) et les navigateurs (IE, Firefox, etc.) traitent les balises qu'elles soient écrites en clair ou non et les traitent normalement...
Donc, (j'ai aucune idée de ce que tu veux en faire....) mais dans ton cas, tu pourrais essayée de mettre <br /> à l'endroit où tu veux mettre ton saut de ligne.. La question est en fait, qui va traiter ton XML ? C'est une solution viable à votre avis grand manitou ?--Davidc 18 mars 2008 à 19:10 (CET)
Pas viable je pense
RSS est un monde pleins de hacks avec des fortes incompatibilités, donc pas forcément une bonne source d'inspiration. Ils n'arrivaient même pas à publier une DTD avant la toute dernière version ....
D'un point de vue "système d'information" la solution est vraiment à chercher dans ma première réponse. Une DTD ou autre schéma doit être faite pour encoder TOUTE information nécessaire. Donc si Choi détaille une entrée en paragraphe et liste à puces, faudrait idéalement qu'elle adopte sa DTD à la tâche. La solution de mettre des <br> n'est pas trop différente de celle qui consiste à interpréter les caractères de fin de ligne. Va aussi falloir écrire du code XSLT assez compliqué pour le rendering.
Maintenant il faudrait simplement qu'elle refasse la DTD sans casser les anciens fichiers XML faits. Donc ajouter les fonctionalités supp. comme option
Avant: <!ELEMENT DEMARCHE (#PCDATA) Après: <!ELEMENT DEMARCHE (#PCDATA|P|ITEM)
(Donc Choi a fait une DTD pour écrire des rapports et les affiche avec XSLT).