Boucle particulière

Boucle particulière - XML/XSL - Programmation

Marsh Posté le 24-08-2007 à 14:30:52    

Bonjour.
 
Je voudrais afficher des tags dans un input text (à la suite, séparé par un espace).
Je récupère ces tags de mon xml evidement, et je dois donc les afficher dans le value="les tags" de mon input.
for-each n'est pas utilisable dans ce cas la.
 
Esque quelqu'un aurait une idée pour faire ça ?


Message édité par SauCiSSoN13 le 24-08-2007 à 14:31:11
Reply

Marsh Posté le 24-08-2007 à 14:30:52   

Reply

Marsh Posté le 24-08-2007 à 14:52:59    

Si je comprends bien, en entrée tu as un fichier xml que tu processes avec du xsl.
Tu veux afficher quelque chose comme ça :

Code :
  1. <input type="text" value="les tags" />
 

Je suppose que la collection dont tu parles est la collection des tags, que tu voudrais parser avec le for-each.
Pourquoi ne pas faire quelque chose comme suit? (grosso modo hein, à l'erreur de syntaxe près):

 
Code :
  1. <xsl:text>&lt;input type="text" value="</xsl:text> <!--La tu affiches le debut de la balise-->
  2. <xsl:for-each select="tags">
  3. <xs:value-of select="."/><!--Ici tu affiches les tags-->
  4. </xsl:for-each>
  5. <xsl:text>" /&gt;</xsl:text> <!--Ici tu affiches la fin de la balise-->


Message édité par durkheim le 24-08-2007 à 14:53:07
Reply

Marsh Posté le 24-08-2007 à 15:09:25    

Je dirais plutôt qu'il a un fichier XML :

Code :
  1. <root>
  2.  <line id="1">plop</line>
  3.  <line id="2">prout</prout>
  4. </root>


Et qu'il veut générer ça :

Code :
  1. <input type="text" value="&lt;line id=&guil;1&guil;&gt;plop&lt;/line&gt;,&lt;line id=&guil;2&guil;&gt;prout&lt;/line&gt;"/>


Si c'est ça, bon courrage :D
 
Ca se fait très simplement avec un JS ou autre langage de programmation, mais en XSL...

Reply

Marsh Posté le 24-08-2007 à 15:15:21    

J'ai pas trop compris ce que tu décris MagicBuzz :s
J'ai simplement dans mon xml ça :
<tag>nomdutag</tag>
<tag>nomdutag2</tag>
etc...
 
et avec xsl je veux que dans mon input text s'affiche "nomdutag1 nomdutag2 etc.."
 
 
Je vais tester ta proposition durkheim.


Message édité par SauCiSSoN13 le 24-08-2007 à 15:15:46
Reply

Marsh Posté le 24-08-2007 à 15:23:10    

ah, tu veux juste le contenu ?
 
ben c'est facile ça par contre...
et c'est bien un foreach qui te permettra de le faire.
 
le seul piège, c'est pour ne pas mettre une virgule en trop au début ou à la fin, mais c'est vraiment peanuts...
 
ça fais un moment que j'ai pas fait de XSL et ça me saoule de chercher, mais clairement ça se faire vraiment facilement.
 
http://www.w3schools.com/

Reply

Marsh Posté le 24-08-2007 à 15:32:06    

Si je post ici c'est que je n'arrive pas a trouver tous seul :/

Reply

Marsh Posté le 24-08-2007 à 15:33:56    

A propos de la virgule en trop, un test sur la propriété position() suffit.

Reply

Marsh Posté le 24-08-2007 à 15:49:54    

d'où le lien que je t'ai filé, qui détaille chaque élément de XSL, avec des exemple plutôt parlants...

Reply

Marsh Posté le 24-08-2007 à 15:59:10    

Bon, relourdage de voir des gens sans volonté (vendredi trolly, et magicbuzz qui se fait chier et est de mauvaise humeur car il veut aller en we)

Code :
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <?xml-stylesheet type="text/xsl" href="tags.xsl"?>
  3. <tags>
  4.  <tag>toto</tag>
  5.  <tag>titi</tag>
  6.  <tag>tata</tag>
  7. </tags>


 

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.  <xsl:template match="/">
  4.    <html>
  5.      <head>
  6.        <title>Test de transformation XSL</title>
  7.      </head>
  8.      <body>
  9.        <h1>Test de rendu des tags</h1>
  10.        <form name="form1" method="post" action=".">
  11.          <label for="textbox1">Liste des tags</label>
  12.          <input type="text" id="textbox1">
  13.            <xsl:attribute name="value">
  14.              <xsl:for-each select="/tags/tag">
  15.                <xsl:if test="position() &gt; 1">,</xsl:if>
  16.                <xsl:value-of select="."/>
  17.              </xsl:for-each>
  18.            </xsl:attribute>
  19.          </input>
  20.        </form>
  21.      </body>
  22.    </html>
  23.  </xsl:template>
  24. </xsl:stylesheet>


Message édité par MagicBuzz le 24-08-2007 à 16:05:48
Reply

Marsh Posté le 24-08-2007 à 16:02:50    

BAh oui mais lui il le voulait dans l'attribut value de la balise input.

Reply

Marsh Posté le 24-08-2007 à 16:02:50   

Reply

Marsh Posté le 24-08-2007 à 16:05:24    

et là il est où à ton avis :o
 
<xsl:attribute name="value"> c'est du boudin à la fraise ? ;)


Message édité par MagicBuzz le 24-08-2007 à 16:06:46
Reply

Marsh Posté le 24-08-2007 à 17:29:51    

Ahhhhh en effet, c'est plus propre comme ça. Avais pas compris, excuz.

Reply

Marsh Posté le 27-08-2007 à 11:26:36    

Merci beaucoup ça marche impec.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed