Jeg havde denne strage problem mens du opretter en XSL dag. Søgte efter svarene i hele nettet, men kunne ikke finde nogen .... Faktisk tror jeg! Jeg fordybning ved, hvad mit problem var, så hvad skal jeg kigge efter?
Anyway! Bare i tilfælde af at du har dette meget samme problem også, og en eller anden måde ved magt FORCE du formåede at lande på denne side ... du vil takke mig tons ... Og hvis du ved et uheld er landet på denne side for nogle mærkelige skæbne og du tilfældigvis til at være en XSL udvikler, DO gøre et notat om dette nu, TIL FREMTIDEN årsag, hvis en dag, du står overfor dette problem, så FORCE måske ikke være sammen med dig.
Problem erklæring:
Jeg har denne XML, hvor der er to noder med flere elementer i det, og de elementer mellem disse to knudepunkter har en 1-1 korrespondance. I eksemplet nedenfor, hvert element i det knudepunkt <array name="PLAYURL" /> vedrører (tilsvarende position) til et element i det knudepunkt <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>
Nu har jeg en løkke, hvor jeg løkken gennem <array name="SITENAME">, og jeg ønsker at få den tilhørende post (ved den tilsvarende position) i <array name="PLAYURL">,
Hvad ville du den normalt forsøge gø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>
DESVÆRRE! DETTE wont arbejde ... Ak! Surpised ...
Nu ville du sikkert lyst til at prøve, noget 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 Igen wont arbejde ... Nu kan du skrabe dit hoved, forsøger at kontakte alle, som du tror, kender nogle XSL og kunne være til nogen hjælp ... du forsøger hver anden løsning ... og alligevel wont arbejde ... Nå! Thats hvad der skete med mig atleast ...
DONT Fortvivlelse! Prøv det
<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 hvorfor det virker. Årsag jeg dont have ret til grund ... hvis du gør! Undlad venligst at smide en kommentar. Det kan være temmelig nyttigt. Også! hvis du har en bedre titel til dette indlæg, så send mig en linje 