Mal som tento problém strage pri vytváraní XSL dnes. Hľadali odpovede na celom internete, ale couldnt nájsť žiadne .... Vlastne myslím, že! Ja viem, čo dint môj problém bol, tak čo mám hľadať?
Každopádne! Len v prípade, že máte tento istý problém taky a nejako o moc síl sa vám podarilo pristáť na tejto stránke ... ďakujem by ste mi veľa ... A ak ste náhodou pristál na tejto stránke nejakú podivnú osudom a sa stalo, že developer XSL, DO MAKE A túto skutočnosť na vedomie TERAZ do budúcna príčiny, ak je nejaký deň, budete čeliť tomuto problému, potom sila nemusí byť s vami.
Problém vyhlásenie:
Mám tento XML, kde sú dva uzly s viac položiek v ňom a tovaru medzi týmito dvoma uzlami majú jeden na jedného korešpondenciu. V nižšie uvedenom príklade, každá položka v uzle <array name="PLAYURL" /> týka (zodpovedajúcej pozície) na položku v uzle <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>
Teraz mám slučku, kde aj cez slučku <array name="SITENAME">, a chcem sa dostať súvisiace položky (na zodpovedajúcu pozíciu) v <array name="PLAYURL">,
Čo by ste normálne snažiť urobiť, je ...
<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! TENTO zvyknutý fungovať ... Ach! Surpised ...
Teraz by ste asi chceli vyskúšať, niečo také ...
<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>
A opäť to zvyknutý pracovať ... Teraz ste poškriabaniu vašej hlave, snaží sa obrátiť každý, kto si myslíte, že pozná nejaký XSL a mohla by byť žiadny zmysel ... pokusu každú inú možnosť ... a ešte to nebude fungovať ... No! To je čo sa mi stalo aspon ...
Dont Zúfalstvo! Skúste to
<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ýtaj sa ma prečo to funguje. Príčina i dont mať správny dôvod ... ak nechcete! Prosím, Drop komentár. To by mohlo byť celkom užitočné. Tiež! Ak máte lepší názov pre tento post, to ma vysadil riadku 