Jag hade lever i en märklig problem när du skapar en XSL idag. Tittade efter svar hela nätet, men kunde inte hitta några .... Egentligen Jag antar! Jag uppkomsten vet vad mitt problem var, så vad ser jag för?
Ändå! Bara om du har detta mycket samma problem också och på något sätt genom kraften i kraft du lyckats landa på denna sida ... du skulle tacka mig massor ... Och om du har råkat hamnat på denna sida av någon underlig öde och du råkar vara en XSL utvecklare, GÖR En anteckning om NU, för framtiden orsak, om en dag, du möter det här problemet, då FORCE kanske inte med dig.
Problem uttalande:
Jag har denna XML, där det finns två noder med flera objekt i den och de poster mellan dessa två noder har en 1-1 korrespondens. I exemplet nedan varje post i noden <array name="PLAYURL" /> avser (motsvarande position) till ett objekt i 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>
Nu har jag en slinga, där jag loop through <array name="SITENAME">, och jag vill få den relaterade posten (vid motsvarande position) i <array name="PLAYURL">,
Vad du skulle Normalt försöker göra är ...
<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! DENNA brukar fungera ... Ah!! Surpised ...
Nu skulle du förmodligen vill prova, ungefär så här ...
<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>
Och Återigen brukar fungera ... Nu kliar huvudet, försöker kontakta alla som du tror känner till några XSL och kan vara till någon hjälp ... du försöker alla andra alternativ ... och ändå brukar fungera ... Tja! Thats vad som hände mig iallafall ...
DONT förtvivlan!! Try This
<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 frågar mig varför det fungerar. För jag dont har en rätt anledning ... om du gör! Var snäll och släppa en kommentar. Det kan vara ganska användbar. Också! om du har bättre rätt för det här inlägget, gör släpp mig en linje 