Un problema con la posizione () in XSL ... o è?
Ho avuto questo problema strage, mentre la creazione di un XSL oggi. Cercato delle risposte in tutta la rete, ma couldnt trovare .... In realtà credo! I furia so qual è il mio problema era, quindi cosa devo cercare?
In ogni caso! Solo nel caso in cui si verifica questo problema stesso troppo e in qualche modo dal potere della Forza è riuscito ad atterrare su questa pagina ... tu mi avrebbe ringraziato tonnellate ... E se avete accidentalmente atterrato su questa pagina per qualche strano destino e vi capita di essere uno sviluppatore XSL, FARE UNA NOTA DI QUESTO ORA, PER IL FUTURO causa, se un giorno, è necessario affrontare questo problema, allora la forza potrebbe non essere con voi.
Problema dichiarazione:
Ho questa XML, dove ci sono due nodi con più elementi in esso e gli elementi tra questi due nodi hanno una corrispondenza uno ad uno. Nell'esempio riportato di seguito, ogni elemento nel nodo <array name="PLAYURL" /> si riferisce (posizione corrispondente) a un elemento in <array nodo name="SITENAME" />
<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>
Ora, ho un ciclo in cui i loop through <array name="SITENAME">, e voglio ottenere l 'articolo correlato (nella posizione corrispondente) in <array name="PLAYURL">,
Che cosa si dovrebbe normalmente fare è provare ...
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
SORRY!! QUESTO non funzionerà ... Ah!! Mi sorprende ...
Ora probabilmente provare, qualcosa di simile ...
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
E Anche in questo caso non funzionerà ... Ora è grattarsi la testa, cercando di contattare tutti quelli che si pensa un po 'conosce XSL e potrebbe essere di alcun aiuto ... si tenta ogni altra opzione ... e ancora non funzionerà ... Beh! Questo è quello che è successo a me atleast ...
DONT DISPERAZIONE! PROVATE QUESTO
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
Dont ask ME PERCHE 'FUNZIONA. Perchè non ho una retta ragione ... se lo fate! Si prega di far cadere un commento. Potrebbe essere molto utile. Anche! se avete una migliore titolo per questo post, fare mi mandi due righe










































