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

  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XML] Modification dynamique de page xml

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XML] Modification dynamique de page xml

n°734532
-Jc-
Posté le 22-05-2004 à 10:37:02  profilanswer
 

Bonjour a tous!
Voila je vous explique mon pb...
alors voila ce que je voudrais faire c'est de la modification dynamique de mes pages xml via xsl
Voila la structure de mes pages :  
- j'ai une page html dans laquelle je rentre le mot que je veux supprimer ou ajouter
 
- j'ai un fichier auquel je fais appel qui est du javascript pour dire que je fais une modif
 
- j'ai un fichier xml qui me cherche le mot (dans le cas de la suppression) et qui normalement devrait faire le traitement necessaire pour la modification
 
Bon en fait je pense qu'il faudrait que je re-crée ma page xml grace a une autre page xml qui elle meme est appellée par mon fichier javascript. Et en fait je sais pas le faire... :sweat:  
Peut etre que vous connaissez des moyens plus facile pour faire cette modification dynamique. Ou peut etre tout simplement vous savez resoudre mon pb... :D
En tous les cas merci d'avance.
 
P.S. si j'ai pas été clair hésitez pas a la dire j'essaierai de l'etre plus :D

mood
Publicité
Posté le 22-05-2004 à 10:37:02  profilanswer
 

n°737297
Eugt
Posté le 25-05-2004 à 10:26:46  profilanswer
 

euh...
 
Je ne comprends pas ca :
 
"j'ai un fichier xml qui me cherche le mot (dans le cas de la suppression) et qui normalement devrait faire le traitement necessaire pour la modification "
 
Mais si j'ai compris l'emsemble, tu aimerais modifier un fichier XML a partir de code JS ?


Message édité par Eugt le 25-05-2004 à 10:27:32
n°739641
-Jc-
Posté le 26-05-2004 à 12:40:41  profilanswer
 

Eugt a écrit :

euh...
 
Je ne comprends pas ca :
 
"j'ai un fichier xml qui me cherche le mot (dans le cas de la suppression) et qui normalement devrait faire le traitement necessaire pour la modification "
 
Mais si j'ai compris l'emsemble, tu aimerais modifier un fichier XML a partir de code JS ?


 
en gros oui.
 
pour la phrase que tu comprends pas, en fait je veux dire que mon js fait appel a un fichier xml qui, lui, cherche dans le fichier à modifier le mot que je veux modifier. (J'espere que c'est plus clair mais j'ai des doutes  :sweat: )

n°742019
ucl-madcow
LE Totophe du Net.
Posté le 27-05-2004 à 17:26:26  profilanswer
 

C'est pas spécialement plus clair : Le XML, il fait rien du tout, c'est un fichier qui contient des données...
 
Par contre, si tu veux dire que ton JavaScript effectue une recherche sur un mot contenu dans un des champs de ton fichier xml, et que tu veux modifier le contenu de ce champ, alors, plusieurs possibilités s'offrent à toi, donc celles-ci :
 
1. Tu créer un XSLT qui va te générer un nouveau fichier XML à partir de l'ancien, fichier identique en tout point sauf pour le champ que tu veux modifier.
 
ou
 
2. Tu créer un script qui modifie directement ton fichier XML, style un script en php.


Message édité par ucl-madcow le 27-05-2004 à 17:27:10
n°742565
-Jc-
Posté le 28-05-2004 à 08:41:17  profilanswer
 

ucl-madcow a écrit :

C'est pas spécialement plus clair : Le XML, il fait rien du tout, c'est un fichier qui contient des données...
 
Par contre, si tu veux dire que ton JavaScript effectue une recherche sur un mot contenu dans un des champs de ton fichier xml, et que tu veux modifier le contenu de ce champ, alors, plusieurs possibilités s'offrent à toi, donc celles-ci :
 
1. Tu créer un XSLT qui va te générer un nouveau fichier XML à partir de l'ancien, fichier identique en tout point sauf pour le champ que tu veux modifier.
 
ou
 
2. Tu créer un script qui modifie directement ton fichier XML, style un script en php.


 
Héhé je me rend compte que j'ai pas été clair du tout :D
En fait c'est le 1èrement que je souhaite faire... mais la j'ai un pb... Pour etre plus clair, je vais mettre mon code : ça c'est mon fichier javascript :  
 
 var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument" );
 var xmlDoc = new ActiveXObject("Msxml2.DOMDocument" );
 xslDoc.async = false;
 xslDoc.load("liste.xsl" );  
 xmlDoc.validateOnParse = false;
 xmlDoc.load("page_moteur_recherche.xml" );
 var xslt = new ActiveXObject("Msxml2.XSLTemplate" );
 xslt.stylesheet = xslDoc;
 var xslProc = xslt.createProcessor();
 xslProc.input = xmlDoc;
 
   function recherche()  
   {
     xslProc.addParameter("ref", form1.code.value);
     xslProc.transform();
     nfig.innerHTML = xslProc.output;
   }
 
 
et il fait donc appel a mon fichier xml qui lui des qu'il trouve le mot tapé en entrée serait cencé recréer le xml initial... Mais en fait c la ou y a le pb... parce que j'arrive a trouver le mot que je cherche mais pas a recréer le fichier xml...
 
P.S. le code javascript est pas de moi...  :whistle:  :sweat:  
 
P.P.S. en fait pour le 2ement, je connais pas du tout le php (grave erreur  :(  :pfff: ) donc je peux pas faire ça de cette façon... sinon d'apres ce que j'ai pu en lire, ça aurait été plus facile :sweat:
 
 
EDIT : nan en fait c'est directement le fichier xml qui serait cencé modifier l'autre fichier xml qui ne fonctionne pas... vous auriez pas un squelette de fichier xml qui saurait faire ça?


Message édité par -Jc- le 28-05-2004 à 08:44:13
n°742985
ucl-madcow
LE Totophe du Net.
Posté le 28-05-2004 à 12:17:39  profilanswer
 

Pas un fichier XML ! Un fichier XSL...
 
Résumons :  
- Un fichier XML contient des données...
- Un fichier XSL contient des informations pour transformer ton fichier XML en un autre fichier (xml, html, pdf, rtf, wap, ...)
 
Donc, ce qu'il te faut, c'est un fichier XSLT qui réécrive ton fichier XML tel quel, sauf pour l'entrée qui correspond au mot que tu veux remplacer, où, dans cette condition, il remplace l'ancienne valeur par la nouvelle.  
 
Et comme il n'est pas possible (ou pas idéal ?) d'écrire directement le fichier xml de sortie sur celui qui te sert d'entrée (le serpent qui se mange la queue), tu dois donc faire un script qui :  
 
1. Execute une XSLT sur ton fichier XML, avec les paramètres adéquats.
2. Ecrase l'ancien fichier XML (source) avec le fichier XML généré.
 
Maintenant, c'est dit dans le cadre de AFAIK. Ptet qu'il y a de meilleurs solutions, je n'ai pas les meilleurs connaissances du monde en XML/XSLT..

n°742992
ucl-madcow
LE Totophe du Net.
Posté le 28-05-2004 à 12:18:46  profilanswer
 

Maintenant, si tu veux, tu peux considérer que ton fichier XSLT est XML compliant, mais bon, te mélanges pas les pinceaux. La phylosophie de nommage, c'est quand tu comprendras mieux... :D

n°743000
ucl-madcow
LE Totophe du Net.
Posté le 28-05-2004 à 12:20:24  profilanswer
 

Et pour le Php, c'est pas compliqué à comprendre. Mais l'approche est différente..

n°744496
-Jc-
Posté le 29-05-2004 à 10:37:24  profilanswer
 

ucl-madcow a écrit :

Pas un fichier XML ! Un fichier XSL...
 
Résumons :  
- Un fichier XML contient des données...
- Un fichier XSL contient des informations pour transformer ton fichier XML en un autre fichier (xml, html, pdf, rtf, wap, ...)
 
Donc, ce qu'il te faut, c'est un fichier XSLT qui réécrive ton fichier XML tel quel, sauf pour l'entrée qui correspond au mot que tu veux remplacer, où, dans cette condition, il remplace l'ancienne valeur par la nouvelle.  
 
Et comme il n'est pas possible (ou pas idéal ?) d'écrire directement le fichier xml de sortie sur celui qui te sert d'entrée (le serpent qui se mange la queue), tu dois donc faire un script qui :  
 
1. Execute une XSLT sur ton fichier XML, avec les paramètres adéquats.
2. Ecrase l'ancien fichier XML (source) avec le fichier XML généré.
 
Maintenant, c'est dit dans le cadre de AFAIK. Ptet qu'il y a de meilleurs solutions, je n'ai pas les meilleurs connaissances du monde en XML/XSLT..


 
oué pardon c'est ce que je voulais dire... mon pb se situe au niveau de mon fichier xsl...
En voila un bout :
 
<xsl:template match="racine">
 
 <xsl:variable name="nombre">
           <xsl:value-of select="count(//motscles[@ref=$ref])"/>
 </xsl:variable>
 
  <xsl:choose>
  <xsl:when test="$nombre>=1">
     <xsl:apply-templates select="//motscles[@ref=$ref]"/>
  </xsl:when>
  <xsl: otherwise>
  <div>il n'y a pas de page contenant ce mot-clés</div>
  </xsl: otherwise>
  </xsl:choose>
 
</xsl:template>
 
 
<xsl:template match="motscles">
 <xsl:if test="@ref=$ref">
  <xsl:value-of select="."/>
 </xsl:if>
</xsl:template>
</xsl:template>
 
en fait ce dont je ne suis pas sur c'est ce qu'il faut faire apres avoir matcher le mot... En bref ici si j'entre dans cette balise : <xsl:if test="@ref=$ref"> je lui fait faire un copy-of mais il va rien me sortir... comment je peux lui dire tu me fais le copy-of dans un nouveau fichier xml qui se nomme toto.xml... (sachant que l'ancien fihier que je voulais modifier s'appelle toto.xml)


Message édité par -Jc- le 29-05-2004 à 10:37:58
n°747005
ucl-madcow
LE Totophe du Net.
Posté le 01-06-2004 à 09:39:17  profilanswer
 

Bon, à premiere vue, dans ton code, il y a deux choses qui m'intriguent :
 
1. Il y a deux fois </xsl:template> à la fin, pour une seule ouverture. (Théoriquement, il devrait te sortir une erreur, j'en déduis que c'est une faute de frappe...)
2. Pourquoi tu fais encore un test sur la référence puisque ta template n'est exécuté que dans le cas où ce test est vrai ?  
 
En gros ce que tu lui dis c'est :  
- S'il y a des noeuds où l'attribut 'ref' est égal à $ref (tiré d'où la valeur de $ref ? Je ne vois pas dans ton script d'où elle vient...)
- Alors tu appliques la template motscles pour tous les cas où 'ref' = $ref
- Et dans cette template tu lui reprécises : N'affiches la valeur que si 'ref'=$ref ce qui est vrai dans tous les cas, vu ta condition d'entrée.
 
Ensuite, je ne comprends pas bien le but de ton histoire. Ce que tu m'affiches comme script n'as pas comme résultat de sortir un fichier xml identique à l'entrée.
Pour faire quelque chose comme ca, tu dois faire un script qui utilise la récursivité pour réécrire ton arbre de départ...
Si tu veux plus d'infos, je te conseil d'aller demander des infos sur www.developpez.net, il y a un forum traitant du XML/XSLT...


Message édité par ucl-madcow le 01-06-2004 à 10:37:57
mood
Publicité
Posté le 01-06-2004 à 09:39:17  profilanswer
 

n°747009
ucl-madcow
LE Totophe du Net.
Posté le 01-06-2004 à 09:42:13  profilanswer
 

D'ailleur, tu ferais mieux de remplacer ton when par un if, de sortir "apply-templates" de ta condition, et d'utiliser ton if de maniere inverse ("Dans le cas où il n'y a pas de résultats ==> Fait ca : Afficher "Il n'y a pas de mots clefs" ).
 
Parce que, de nouveau, tu retestes plusieurs fois les memes conditions, c'est pas très optimisé...

n°748046
-Jc-
Posté le 01-06-2004 à 21:10:12  profilanswer
 

ucl-madcow a écrit :

Bon, à premiere vue, dans ton code, il y a deux choses qui m'intriguent :
 
1. Il y a deux fois </xsl:template> à la fin, pour une seule ouverture. (Théoriquement, il devrait te sortir une erreur, j'en déduis que c'est une faute de frappe...)
2. Pourquoi tu fais encore un test sur la référence puisque ta template n'est exécuté que dans le cas où ce test est vrai ?  
 
En gros ce que tu lui dis c'est :  
- S'il y a des noeuds où l'attribut 'ref' est égal à $ref (tiré d'où la valeur de $ref ? Je ne vois pas dans ton script d'où elle vient...)
- Alors tu appliques la template motscles pour tous les cas où 'ref' = $ref
- Et dans cette template tu lui reprécises : N'affiches la valeur que si 'ref'=$ref ce qui est vrai dans tous les cas, vu ta condition d'entrée.
 
Ensuite, je ne comprends pas bien le but de ton histoire. Ce que tu m'affiches comme script n'as pas comme résultat de sortir un fichier xml identique à l'entrée.
Pour faire quelque chose comme ca, tu dois faire un script qui utilise la récursivité pour réécrire ton arbre de départ...
Si tu veux plus d'infos, je te conseil d'aller demander des infos sur www.developpez.net, il y a un forum traitant du XML/XSLT...


 
Pour le 1, c'est effectivement une faute de frappe :D
et pour le 2 et bien je viens de me rendre compte que tu as tout a fait raison... (suis trop un imbécile :D) bon je vais changer tout ça et voir ce que ça donne... pour ce qui est du forum je te remercie je vais aller y faire un tour, desfois qu'il y ait la reponse a mon script foireux  :sweat:  :D
 
Enfin pour le if (cf ton message suivant), tu as encore raison... :D bon bein je te remercie beaucoup de ton aide!!! je vais changer tout ça!!! Merci encore!!! :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XML] Modification dynamique de page xml

 

Sujets relatifs
Comment affiche une page d'attente pendant l'execution d'un script ?Une page ou l'on affiche des images du site (banier,logo) ca se nomme?
Stockage de donnees , Bdd ? , Xml ? Ini ?récupérer un autre xml dans un xsl pour travailler sur 2 xml
parser un document xml[Python] charset, coding, accents et page html
[C#] Afficher un document word dans une pageEnvois dynamique de formulaire.
[PHP] Modifier un fichier xml avec php/domxmlcreer une page internet qui s'affiche sur un portable
Plus de sujets relatifs à : [XML] Modification dynamique de page xml


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