Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
781 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [XSLT] remplacer les retours chariots par des <br />

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XSLT] remplacer les retours chariots par des <br />

n°245169
lorill
Posté le 14-11-2002 à 15:11:23  profilanswer
 

bon, ca a l'air tout con, mais j'ai rien trouvé :/
y'a bien translate la dedans http://www.zvon.org/xxl/XSLTrefere [...] -Functions
 
mais ca marche caractère par caractère :/
 
sur google j'ai trouvé 2/3 trucs, mais c'est les mecs qui font un template de 100 lignes juste pour ca, ca peut pas être la meilleure solution  :non:

mood
Publicité
Posté le 14-11-2002 à 15:11:23  profilanswer
 

n°245291
lorill
Posté le 14-11-2002 à 16:50:40  profilanswer
 

si peu de lectures ?

n°245298
kadreg
profil: Utilisateur
Posté le 14-11-2002 à 17:03:10  profilanswer
 

lorill a écrit a écrit :

 
sur google j'ai trouvé 2/3 trucs, mais c'est les mecs qui font un template de 100 lignes juste pour ca, ca peut pas être la meilleure solution  :non:  




 
Malheureusement si. J'ai eut le cas aussi (faire une substitution d'un caractère par plusieurs) et ça s'est fini en monstre.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°245305
lorill
Posté le 14-11-2002 à 17:13:14  profilanswer
 

kadreg a écrit a écrit :

 
Malheureusement si. J'ai eut le cas aussi (faire une substitution d'un caractère par plusieurs) et ça s'est fini en monstre.




 
argh !
je vais patcher xalan et rajouter un replace dedans, ca ira plus vite  :na:  
 
mais ils ont pensé a quoi les mecs qui on écrit cette norme ?

n°245308
kadreg
profil: Utilisateur
Posté le 14-11-2002 à 17:14:47  profilanswer
 

lorill a écrit a écrit :

 
mais ils ont pensé a quoi les mecs qui on écrit cette norme ?




 
Ils l'ont fait le replace, mais un caractère par un caractère :D


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°245355
avander
Posté le 14-11-2002 à 18:03:08  profilanswer
 

Salut,  
 
Il faut s'y prendre de façon récursive comme dans le stylesheet suivant (j'espère que ce sera lisible :-):  
 


<?xml version="1.0" encoding="ISO-8859-1"?>
 
<!-- substitute CR in xml code with <BR /> markup -->
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
<!-- general settings -->
  <xsl:output method="xml" omit-xml-declaration="no" encoding="ISO-8859-1"/>
 
<!-- global variables -->
  <xsl:variable name="gReplace"><!-- c'est ton CR (retour chariot) -->
    <xsl:text>
</xsl:text></xsl:variable>
 
<!-- transformations -->
 
  <xsl:template match="*">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
 
 
  <xsl:template match="//code/text()"><!-- remplace le match par l'élément ad hoc -->
    <xsl:call-template name="doReplace">
      <xsl:with-param name="text" select="."/>
    </xsl:call-template>
 
  </xsl:template>
 
 
  <xsl:template name="doReplace">
    <xsl:param name="text"/>
 
    <xsl:choose>
      <xsl:when test="contains( $text, $gReplace)">
        <xsl:value-of select="substring-before( $text, $gReplace)"/>
        <!-- substitue gReplace occurence with <BR /> string -->
        <xsl:element name="br"/>
        <xsl:call-template name="doReplace"><!-- recurse -->
          <xsl:with-param name="text" select="substring-after( $text, $gReplace)"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$text"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
 
</xsl:stylesheet>
<!-- eof -->

 
 
Bonne continuation et a demain! Avander
 
PS: Désolé, les smilies j'y suis pour rien!


Message édité par avander le 15-11-2002 à 09:12:49

---------------
A thing of beauty is a joy forever (John Keats)
n°245458
lorill
Posté le 14-11-2002 à 18:43:32  profilanswer
 

c'est quand même un peu lourd, mais merci  :jap:  
 
et le caractère \n, y'a une entité pour ca ?

n°245478
gm_superst​ar
Appelez-moi Super
Posté le 14-11-2002 à 18:56:43  profilanswer
 

lorill a écrit a écrit :

c'est quand même un peu lourd, mais merci  :jap:  
 
et le caractère \n, y'a une entité pour ca ?



&x0A; ? (et &x0D; pour son copain \r)


Message édité par gm_superstar le 14-11-2002 à 18:56:56

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
n°245481
gm_superst​ar
Appelez-moi Super
Posté le 14-11-2002 à 18:58:11  profilanswer
 

Avander a écrit a écrit :

PS: Désolé, les smilies j'y suis pour rien!



> Tu peux éditer ton message et le mettre entre des balises [ fixed] [/ fixed]
 
> Sinon il y a l'option "Désactiver les smilies" lorsqu'on rédige le message une première fois.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
n°245485
lorill
Posté le 14-11-2002 à 19:00:14  profilanswer
 

gm_superstar a écrit a écrit :

 
&x0A; ? (et &x0D; pour son copain \r)




 
ah merde ouais, j'avais pas pensé a l'unicode  :)

mood
Publicité
Posté le 14-11-2002 à 19:00:14  profilanswer
 

n°245718
avander
Posté le 15-11-2002 à 09:23:24  profilanswer
 

Pour gm_superstar :  
- Merci pour les balises [fixed] et les entités ! (En fait je viens de comprendre les icones dans l'éditeur des messages :-O)
 
Pour lorill:
- C'est un stylesheet basique qu'il faut toujours avoir sous la main, si tu le modifie pour qu'il accepte en paramètre le string à remplacer et le string remplaçant tu obtient une fonction find/replace que tu peux lancer avant ou après d'autres transformations.  
 
Un autre stylesheet du même genre serait un transformation qui s'occupe de formater convenablement n'importe quel fichier xml (indentation) ou qui remplace certains elements par d'autres.  
 
Bye. Avander


Message édité par avander le 15-11-2002 à 09:24:44

---------------
A thing of beauty is a joy forever (John Keats)
n°258900
lorill
Posté le 02-12-2002 à 14:42:01  profilanswer
 

gm_superstar a écrit a écrit :

 
&x0A; ? (et &x0D; pour son copain \r)




marche pas :(
 
Référence a une entité non définie qu'il me dit. Ce qui est plutôt logique, mais je vois pas comment je peux la définir...

n°258915
lorill
Posté le 02-12-2002 à 14:56:53  profilanswer
 

par contre le coup de faire une variable passe.
 

Code :
  1. <xsl:variable name="gReplace">
  2. <xsl:text>
  3. </xsl:text></xsl:variable>

n°259144
chocoboy
Posté le 02-12-2002 à 17:52:19  profilanswer
 

Si c'est pour inscrire les données saisies dans un textarea dans ta BD en conservant les sauts de ligne et que tu peux faire du javascript :
 
function replaceN(thisElement)
{
thisElement.value=thisElement.value.replace(/\n/g, "<br />" );  
}

n°259147
lorill
Posté le 02-12-2002 à 17:55:42  profilanswer
 

chocoboy a écrit a écrit :

Si c'est pour inscrire les données saisies dans un textarea dans ta BD en conservant les sauts de ligne et que tu peux faire du javascript :
 
function replaceN(thisElement)
{
thisElement.value=thisElement.value.replace(/\n/g, "<br />" );  
}




Bien tenté mais non. Sans conter que c'est hyper crade de stocker du html en base de données.
 
De toutes façon c'est bon maintenant (merci Avander)

n°259166
chocoboy
Posté le 02-12-2002 à 18:04:56  profilanswer
 

lorill a écrit a écrit :

 
Bien tenté mais non. Sans conter que c'est hyper crade de stocker du html en base de données.
 
De toutes façon c'est bon maintenant (merci Avander)




 
ah bon pourquoi ? moi je stocke du XML en BD...

n°259167
kadreg
profil: Utilisateur
Posté le 02-12-2002 à 18:06:02  profilanswer
 

chocoboy a écrit a écrit :

 
ah bon pourquoi ? moi je stocke du XML en BD...




 
 :heink:


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°259173
lorill
Posté le 02-12-2002 à 18:08:19  profilanswer
 

chocoboy a écrit a écrit :

 
ah bon pourquoi ? moi je stocke du XML en BD...




c'est déja moins pire.
tu as déja entendu parler de séparation présentation/contenu ?
mes bases, elles en servent pas que pour le web  [:sinclaire]

n°259176
chocoboy
Posté le 02-12-2002 à 18:10:08  profilanswer
 

lorill a écrit a écrit :

 
c'est déja moins pire.
tu as déja entendu parler de séparation présentation/contenu ?
mes bases, elles en servent pas que pour le web  [:sinclaire]  




 
c'est quoi la séparation présentation/contenu ???

n°259177
chocoboy
Posté le 02-12-2002 à 18:11:14  profilanswer
 

kadreg a écrit a écrit :

 
 
 :heink:  




vas y , développe, je serais moins bête ce soir en me couchant...

n°259184
kadreg
profil: Utilisateur
Posté le 02-12-2002 à 18:17:03  profilanswer
 

chocoboy a écrit a écrit :

 
vas y , développe, je serais moins bête ce soir en me couchant...




 
Soit un morceau de XML :
 
<personne>
    <nom>toto</nom>
    <prenom>titi</prenom>
    <addresse>DTC</addresse>
</personne>
 
On a ici une information structurée. N'as-tu pas l'impression que ce type de structure peut se retrouver au niveau de la structure de la base ? Genre une table personne, avec des champs noms, prenoms et addresse ?
 
Mettre du XML en base me donne l'impression qu'on a fait un vilain mélange au niveau de la structure de données. Maintenant, on peut avoir réellement besoin de mettre du XML en base (je peux t'en trouver des cas), mais ça ne me semble pas dans l'ordre naturel des choses.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°259186
lorill
Posté le 02-12-2002 à 18:18:50  profilanswer
 

kadreg a écrit a écrit :

 
Mettre du XML en base me donne l'impression qu'on a fait un vilain mélange au niveau de la structure de données. Maintenant, on peut avoir réellement besoin de mettre du XML en base (je peux t'en trouver des cas), mais ça ne me semble pas dans l'ordre naturel des choses.




ben déja si on utilise pas une base relationnelle...
mais perso si je dois avoir du xml sorti d'une base, je préfère le générer en fonctions des données dans la base

n°259189
chocoboy
Posté le 02-12-2002 à 18:25:29  profilanswer
 

voilà pourquoi j'utilise une structure hybride relationnel/XML (voir le pavé XML et les bases de données chez Wrox) : je développe un outil de gestion de contenu... dans ce cas précis, l'insertion d'XML dans une BD relationnel t'évite de complexifier ta base et donc des centaines de jointures inutiles : c'est très classique dans le domaine de l'édition de document... imagines un truc genre :
 
<document>
  <paragraph>
    <element type="text">Mon texte</element>
    <element type="image" src="image.jgp" path="http://..." mode="portrait">  
  etc...
  </paragraph>
</document>
 
bref, un truc susceptible de te traduire toutes les possibilités d'édition propre au HTMl tout en dissociant contenu et présentation (donc je génère du XML à partir de plusieurs base, puis j'aggrège avant transformation vers XHTML)... la je vois pas trop comment faire sans inclue des Blob XML dans ta base...  :??:  

n°259191
chocoboy
Posté le 02-12-2002 à 18:30:28  profilanswer
 

en fait au départ, j'était parti sur du tout relationnel... je me suis vite rendu compte que ce serait impossible (MCD incomplet faisant 10m sur 5 !)
L'insert d'XML en remplacement de certaines colonnes t'offre une simplification et une évolutivité de ta base extraordinaire  :love:
 
d'ailleurs, c'est comme ça que font la plupart des providers de contenu et la plupart des gros sites nécessitant une mise à jour très fréquente et aggrégeant des sources très hétérogènes...


Message édité par chocoboy le 02-12-2002 à 18:32:48
n°259199
chocoboy
Posté le 02-12-2002 à 18:38:50  profilanswer
 

lorill a écrit a écrit :

 
Bien tenté mais non. Sans conter que c'est hyper crade de stocker du html en base de données.
 
De toutes façon c'est bon maintenant (merci Avander)




 
pour en revenir à ton problème : comme dans mon système, je génère le XML à la volée et je fais la transformation XSLT côté seveur, je préfère effectuer les conversions de caractères en javascript avant d'insérer dans la base : ca m'évite d'alourdir avec une transformation systématique via XSLT... c'est plus court et plus rapide.

n°259200
lorill
Posté le 02-12-2002 à 18:47:50  profilanswer
 

chocoboy a écrit a écrit :

 
pour en revenir à ton problème : comme dans mon système, je génère le XML à la volée et je fais la transformation XSLT côté seveur, je préfère effectuer les conversions de caractères en javascript avant d'insérer dans la base : ca m'évite d'alourdir avec une transformation systématique via XSLT... c'est plus court et plus rapide.




j'aurais du expliquer mon "non" :
- je stocke le resultat de la saisie dans des fichiers xml
- ca m'emmerde de modifier ma dtd pour accepter des <br/> n'importe ou
- une grosse partie des fichiers xml existent déja (donc pas de saisie)

n°259205
chocoboy
Posté le 02-12-2002 à 19:16:12  profilanswer
 

lorill a écrit a écrit :

 
j'aurais du expliquer mon "non" :
- je stocke le resultat de la saisie dans des fichiers xml
- ca m'emmerde de modifier ma dtd pour accepter des <br/> n'importe ou
- une grosse partie des fichiers xml existent déja (donc pas de saisie)




 
Dans ma structure, le <br /> est reconnu comme texte et non noeud (pas besoin de modifier la DTD).
Au fait, une question, j'aimerai savoir comment tu indexes tes fichiers XML dans ton système, est ce que tu en gère beaucoup, les utilisateurs peuvent ils les modifier ...etc ?
Qu'en est_il chez toi de la vitesse d'aggrégation sur un grand nombre de documents ?

n°259208
lorill
Posté le 02-12-2002 à 19:22:47  profilanswer
 

chocoboy a écrit a écrit :

 
Au fait, une question, j'aimerai savoir comment tu indexes tes fichiers XML dans ton système



je les indexe pas, ils me servent a générer des pages web semi-statiques (mises a jour tous les 3/4 mois)
 

chocoboy a écrit a écrit :

 
est ce que tu en gère beaucoup




pas trop.. Un peu moins de 200 je pense
 

chocoboy a écrit a écrit :

 
les utilisateurs peuvent ils les modifier




j'ai un xslt qui transforme le xml en formulaire html, mais ils ne le modifient pas, le formulaire génère une copie et l'envoie par mail a la personne chargée de valider le contenu.
 
 

chocoboy a écrit a écrit :

 
Qu'en est_il chez toi de la vitesse d'aggrégation sur un grand nombre de documents ?




mes transformations sont lentes, mais vu mon contexte, je m'en fous un peu.

n°259211
chocoboy
Posté le 02-12-2002 à 19:26:36  profilanswer
 

ok merci

n°259272
Mara's dad
Yes I can !
Posté le 02-12-2002 à 21:47:00  profilanswer
 

Avander a écrit a écrit :

 
Un autre stylesheet du même genre serait un transformation qui s'occupe de formater convenablement n'importe quel fichier xml (indentation) ou qui remplace certains elements par d'autres.  
Bye. Avander




Pour l'indentation, XSLT s'en occupe tout seul :
 
<xsl:output indent = "yes">
 
http://www.w3.org/TR/xslt#stylesheet-element
 


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [XSLT] remplacer les retours chariots par des <br />

 

Sujets relatifs
RegExp: remplacer le groupe matché par sa longueurAfficher une image à l'aide d'une feuille XSLT
Remplacer <table> par des <div> --> gasp, 2 colonnes ?![XSLT] aide précise SVP! variables etc...
[PHP] remplacer une chaine de caractères dans un .ini [resolu]remplacer une URL par son lien !?
[xslt / xml] cherche un soft[CSS] peut on remplacer la valeur de background par une variable ?
[PHP] Afficher du text avec les retours à la ligne ???Accents à remplacer par caractères US correspondant
Plus de sujets relatifs à : [XSLT] remplacer les retours chariots par des <br />


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR