Newsgroup: it.comp.lang.javascript
Titolo: [OT] - XSLT - Aiuto...

Ciao a tutti,
Ho bisogno di trasformare un documento xml da un formato ad un altro.
Il mio doc. XML sorgente ha un tag, il cui valore e' una lista di
codici separati da virgole:
<mytag>1,2,33,44,55,6,7,88,99,...,nn</mytag>
Quello che vorrei ottenere e' un formato cosi':
<MyNewTags>
 <MyNewTag>1</MyNewTag>
 <MyNewTag>2</MyNewTag>
 <MyNewTag>33</MyNewTag>
 <MyNewTag>44</MyNewTag>
 <MyNewTag>55</MyNewTag>
 <MyNewTag>6/MyNewTag>
 <MyNewTag>7</MyNewTag>
 <MyNewTag>88</MyNewTag>
 <MyNewTag>99</MyNewTag>
...
 <MyNewTag>nn</MyNewTag>
</MyNewTags>
Come si fa con XSLT?
Sapete dove posso remperire info dettagliate?
Non ho trovato nulla sul tutorial del W3C!!!
Ciao e grazie a tutti, Himgi.

 Come si fa con XSLT?
Premesso che è mattina, e che sicuramente può essere ampiamente
migliorabile, la prima cosa che mi è venuta in mente è la seguente:
<xsl:template match="mytag">
	<MyNewTags>
		<xsl:call-template name="add-newtag">
			<xsl:with-param name="string" select="text()" />
		</xsl:call-template>
	</MyNewTags>
</xsl:template>
<xsl:template name="add-newtag">
    <xsl:param name="string"/>
 
    <xsl:choose>
        <xsl:when test="contains($string,',')">
        	<MyNewTag>
            	<xsl:value-of select="substring-before($string,',')"/>            
            </MyNewTag>
            <xsl:call-template name="add-newtag">
                <xsl:with-param name="string"
select="substring-after($string,',')"/>
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <MyNewTag>
            	<xsl:value-of select="$string"/>
            </MyNewTag>
        </xsl:otherwise>
    </xsl:choose>
 
</xsl:template>
-- 
~ "When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 Come si fa con XSLT?
purtroppo sono anni che non tocco XSLT e non mi ricordo di preciso la
sintassi corretta, però si fa. C'era una funzionina che prendeva i
valori separati da un qualsiasi carattere (tu separi la virgola), la
combini con il xsl:for-each ed il gioco è fatto.
Mi dispiace non ricordarmi i passaggi precisi, ma spero di essere stato
d'auito, se non altro per confermarti che si può fare...

ZER0 ha scritto:

Meno male che è mattina!
Ma tu sei un genio!
Grazie 0
P.S. Cmq senza ZERO e Cristiano Larghi... il NG sarebbe morto!

 P.S. Cmq senza ZERO e Cristiano Larghi... il NG sarebbe morto!
Zombie, siamo tutti zombie.
-- 
Nando [?]
Apostolo della Prova

 Non ho trovato nulla sul tutorial del W3C!!!
Qualcosa tipo questo:
<xsl:template name="tokenizer">
  <xsl:param name="string" />
  <xsl:param name="delimiter" select="' '" />
  <xsl:choose>
   <xsl:when test="$delimiter and contains($string, $delimiter)">
           <token>  <xsl:value-of
select="substring-before($string,$delimiter)" /> </token>
           <xsl:call-template name="tokenizer">
           <xsl:with-param name="string"
select="substring-after($string,$delimiter)" />
           <xsl:with-param name="delimiter"     select="$delimiter" />
           </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
    <token>  <xsl:value-of select="$string" /></token>
    </xsl:otherwise>
 </xsl:choose>
 </xsl:template>
(trovato su 
http://www.xslt.com/html/xsl-list/2005-04/msg00031.html
)
ciao, U.

UC ha scritto:

Grazie a tutti per le risposte!