Vaig tenir aquest problema en crear un Strage XSL avui. Va buscar respostes en tota la xarxa, però no podia trobar cap .... En realitat, suposo! Jo sé quina és la meva força problema era, llavors, què he de buscar?
De tota manera! Només en cas de tenir aquest mateix problema també i d'alguna manera pel poder de la força que va aconseguir aterrar en aquesta pàgina ... que m'ho agrairia tones ... I si alguna vegada ha accidentalment va aterrar en aquesta pàgina per alguna estranya sort i passar a ser un desenvolupador XSL, NO FACI UNA NOTA D'AQUESTA ARA, PER AL FUTUR causa, Si algun dia, s'enfronta a aquest problema, llavors la força no podria estar amb vostès.
Enunciat del problema:
Tinc aquest XML, on hi ha dos nodes amb diversos elements en ell i els elements entre aquests dos nodes tenen una correspondència un a un. En el següent exemple, cada element en el node <array name="PLAYURL" /> es refereix (posició corresponent) a un element en el node de <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>
Ara, tinc un bucle, en el qual recórrer <array name="SITENAME">, i vull aconseguir l'article relacionat (en la posició corresponent) en <array name="PLAYURL">,
El que normaly tractaria de fer és ...
<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>
EM SAP GREU! Això funcionarà ... Ah!! Gratament ...
Ara és probable que li agradaria provar, alguna cosa com això ...
<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>
I De nou, això no funcionarà ... Ara que rascar el cap, tractant de posar-se en contacte amb tots els que vostè pensa que sap alguna cosa de XSL i podria ser d'alguna ajuda ... intentar totes les opcions d'altres ... i encara funciona costum ... Bé! Això és el que em va passar el atleast ...
EXCLOURE LA DESESPERACIÓ! LA PROVA
<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 per què funciona. Perquè no tinc una raó ben ... si ho fas! Si us plau deixa un comentari. Pot ser molt útil. També! si vostè té un millor títol per aquest post, el mándenme una línia de 