Insertion de caractère dans un nom de mes champs XML - XML/XSL - Programmation
Marsh Posté le 27-06-2012 à 21:34:40
http://geekswithblogs.net/Erik/arc [...] 20915.aspx
A+,
Marsh Posté le 28-06-2012 à 10:01:44
Code :
|
Voici ceux qu'ils donnent okay. Donc à la place de "by" "replace" et "text", je dois mettre mes vrais caractères à moi ?
Quelle est la différence entre $by et by ?
Merci de votre aide
Marsh Posté le 28-06-2012 à 11:11:30
Citation : Voici ceux qu'ils donnent okay. Donc à la place de "by" "replace" et "text", je dois mettre mes vrais caractères à moi ? |
non. C'est pas le template qu'il faut modifier, c'est son appel avec un xsl:call-template ou vous passerez les bonnes valeurs aux paramètres.
Citation : Quelle est la différence entre $by et by ? |
Manifestement, il faudrait d'abord apprendre d'abord un peu le XSLT avant de vouloir l'utiliser, parce que poser une question aussi basique montre que vous ne possédez pas les bases.
A+,
Marsh Posté le 28-06-2012 à 12:50:30
<xsl:param name="text" />
<xsl:param name="replace" />
<xsl:param name="by" />
Ca définit les paramètres du template (ici = fonction) nommé string-replace-all. En gros, c'est pareil que dans un langage de programmation tu définis une fonction avec ses paramètres. Donc là, on nomme les paramètre. Dans la suite du code xsl, $by indique qu'on utilise la variable (donc le contenu) nommée "by".
Marsh Posté le 28-06-2012 à 15:06:10
Etant donné que je ne comprend pas le code que je vous ai filé.
J'ai essayé de remplacer via mon script Php, qui lui, exploite le XML et XSLT.
Cependant, il m'ajoute plusieurs "\" avant mes tirets, mais le soucis c'est que ça fausse mes clauses "where".
si je remplace "a-elle" dans ma creation par "a\-elle",
Et que par la suite je fais : where table='a\-elle'
Cela ne fonctionnera pas, car dans ma base SOURCE, je ne modifie par les avant tirets...
Marsh Posté le 28-06-2012 à 15:07:08
Et pour faire ce tu voulais juste sur les valeurs d'attribut (pas clair si c'était désiré ailleurs), ceci convient à priori:
Code :
|
Testé avec Saxon sur ce fichier test:
<toto ID="Bonjour-LaLA-LILO"> |
ça donne en sortie:
<toto ID="Bonjour\-LaLA\-LILO"> |
A+,
Marsh Posté le 28-06-2012 à 15:35:07
Je vous remercie pour cette précieuse aide. Mais je n'arrive pas à la fonctionner.
Mon fichier XSLT se présente ainsi :
Code :
|
Et c'est le @id de chaque CHAMP que je veux modifier, comment faire
Marsh Posté le 28-06-2012 à 15:52:49
Il suffit de transposer bêtement l'appel au template
Code :
|
A+,
Marsh Posté le 12-07-2012 à 16:07:28
Wahouuu !!!! Merci beaucoup Gillou !!!
Mais j'ai essayais ça, pour échapper les quotes :
Code :
|
Cependant, ça ne marche pas, il me laisse les quotes , est ce normal ?
Marsh Posté le 12-07-2012 à 20:34:11
Ceci devrait faire l'affaire:
Code :
|
En principe, c'est 'tail-recursive', donc optimisé par un bon compilo XSLT.
A+,
Marsh Posté le 13-07-2012 à 10:12:02
Merci, mais comment faire pour appeler ma fonction au sein de mon code :
est ce comme ceci ?
Code :
|
Marsh Posté le 13-07-2012 à 12:32:42
Pour remplacer quoi? trois blancs par \ suivi de deux blancs dans une valeur d'attribut?
il manque un ' en fin de valeur du paramêtre by:
Code :
|
Par contre, si c'est pour remplacer un ' par un \' dans le contexte d'une valeur d'attribut id, il faut passer la valeur de l'attribut comme paramètre, par exemple avec un appel (a adapter selon ton contexte d'appel) comme
Code :
|
A+,
Marsh Posté le 17-07-2012 à 16:22:08
hannn, désolée mais j'ai une autre petite question !!
Alors,
sachant que j'utilise une fonction pour retirer les tirets à mes variables qui s'écrit de cette maniere :
Code :
|
Je voudrai aussi l'utiliser pour traiter les guillemets pour mes variables!
comment faire?
Marsh Posté le 17-07-2012 à 18:29:11
Ben je vois pas ou est le pb:
on positionne le parametre replace avec le guillemet ouvrant, «, et le parametre by avec le texte de remplacement, \«, par exemple ici,
Code :
|
Et idem pour le guillemet fermant.
A+,
Marsh Posté le 18-07-2012 à 10:15:31
Oui merci beaucoup.
Mais je vous dire, comment faire pour appliquer la fonction 2 fois à une même variable.
Sauf que je ne veux pas qu'il me l'écrive 2 fois, mais une seule fois sans les guillemets et sans l'apos !!!
Marsh Posté le 18-07-2012 à 12:23:32
Une technique standard est de mettre le resultat d'un premier call-template dans une variable et passer la variable comme parametre d'entrée du call template suivant:
Un exemple qui va mettre un \ devant les apostrophes puis les tirets du texte:
Code :
|
Tu peux aussi aller voir cette page, pour la même technique de base (mettre le résultat intermédiaire dans une variable en XSLT 1) mais avec une syntaxe un peu différente.
A+,
Marsh Posté le 18-07-2012 à 14:59:02
Okay, merci de votre réponse. Je teste ça et je vous redis !!!!
Marsh Posté le 27-06-2012 à 15:11:20
Bonjour,
J'ai un fichier XML construit comme ceci :
Et je voudrai faire un template en XSLT, qui à chaque fois que je l'appelle, il me mette un "\" devant chaque tiret. En effet, ces tirets ne passent pas dans ma base données que je crée par la suite!!
Une idée ?