Et problem med posisjon () i XSL ... eller er det?
Jeg hadde dette strage problemet mens du oppretter en XSL i dag. Så etter svar i hele nettet, men kunne ikke finne noen .... Egentlig vel! Jeg dint vet hva mitt problem var, så hva ser jeg etter?
Uansett! Bare i tilfelle du har denne samme problemet også og liksom i kraft av den FORCE du klarte å lande på denne siden ... du ville takke meg tonnevis ... Og hvis du har et uhell havnet på denne siden for noen merkelig skjebne, og du tilfeldigvis være en XSL utvikler, gjør en oppmerksom på dette NÅ, FOR FRAMTIDEN årsak, dersom en dag, står du dette problemet, så FORCE ikke kan være sammen med deg.
Problem statement:
Jeg har denne XML, hvor det er to noder med flere elementer i den og de elementer mellom disse to nodene har en 1-1 korrespondanse. I eksempelet nedenfor, hvert element i noden <array name="PLAYURL" /> gjelder (tilsvarende posisjon) til et element i den noden <array 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>
Nå har jeg en løkke, hvor jeg sløyfe <array name="SITENAME">, og jeg ønsker å få den relaterte element (ved tilsvarende posisjon) i <array name="PLAYURL">,
Hva ville du normalt prøve gjøre er ...
<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>
DESSVERRE! DENNE wont arbeide ... Ah!! Surpised ...
Nå ville du sannsynligvis ønske å prøve, noe som dette ...
<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>
Og igjen denne wont arbeide ... Nå skrape hodet, prøver å kontakte alle som du tror vet noe XSL og kunne være til noen hjelp ... du prøver annenhver alternativ ... og fortsatt den wont arbeide ... Vel! Dvs hva som skjedde med meg atleast ...
DONT Fortvilelse! PRØV DETTE
<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 spør meg hvorfor det fungerer. Fordi jeg ikke har en rett grunn ... hvis du gjør! Vennligst slippe en kommentar. Det kan være ganske nyttig. Også! hvis du har bedre tittel for dette innlegget, gjør send meg en linje ![]()










































