Un problema coa posición () en XSL ... ou si?

Eu tiven ese problema ao crear unha Almacenamento en XSL hoxe. Buscaba respostas en toda a rede, pero non podería atopar calquera .... En realidade, eu creo! Sei o que forza o meu problema era, entón o que debo buscar?

En fin! Só no caso de ter ese mesmo problema e tamén dalgunha forma polo poder a forza que conseguiu atinxir esta páxina ... podería me agradecer toneladas ... E se accidentalmente aterrou nesta páxina por algún estraño destino e ten que ser desenrolador XSL, fan unha nota DESTE Agora, para a causa futuro, se algún día, afrontar este problema, entón a forza pode non ser con vostede.

Enunciado do problema:
Eu teño ese XML, onde existen dous nós con varios elementos en que os elementos e entre estes dous nós teñen unha correspondencia un a un. No seguinte exemplo, cada elemento da <arrayname="PLAYURL" /> relaciona (posición correspondente) para un elemento da <arrayname="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>

Agora, eu teño un loop, onde i percorrer <array name="SITENAME">, e quero incorporarse o elemento relacionado (na posición correspondente) en <array name="PLAYURL">,

O que normaly tentar facer é ...

<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>

Sentímolo! Iso non vai funcionar ... Ah! Surpised ...

Agora probablemente quere tratar, algo así ...

<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>

E De novo, isto non vai funcionar ... Agora coçar a cabeza, intentando poñerse en contacto con todos que pensas que sabe algunha XSL e podería ser de axuda ... tentar todas as opcións de outros ... e aínda non vai funcionar ... Ben! Iso é o que aconteceu cando menos ...

Desespero non fai! Proba ESTE

<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>

Non me pregunta por que funciona. Porque eu non teño un motivo correcto ... se fai! Por favor, deixar un comentario. Pode ser moi útil. Tamén! se ten título mellor para este post, facer caer-me unha liña :)


Deixe unha resposta

NDK casa | Expresando IT | Palate expresando | Penmenship expresando | AWE expresando | expresar o meu