Tuve este problema al crear un Strage XSL hoy. Buscó respuestas en toda la red, pero no podía encontrar ninguna .... En realidad, supongo! Yo sé cuál es mi fuerza problema era, entonces, ¿qué debo buscar?
De todos modos! Sólo en caso de tener este mismo problema también y de alguna manera por el poder de la fuerza que logró aterrizar en esta página ... que me lo agradecería toneladas ... Y si alguna vez ha accidentalmente aterrizó en esta página por alguna extraña suerte y pasar a ser un desarrollador XSL, NO HAGA UNA NOTA DE ESTA AHORA, PARA EL FUTURO causa, Si algún día, se enfrenta a este problema, entonces la fuerza no podría estar con ustedes.
Enunciado del problema:
Tengo este XML, donde hay dos nodos con varios elementos en él y los elementos entre estos dos nodos tienen una correspondencia uno a uno. En el siguiente ejemplo, cada elemento en el nodo <array name="PLAYURL" /> se refiere (posición correspondiente) a un elemento en el nodo 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>
Ahora, tengo un bucle, en el que recorrer <array name="SITENAME">, y quiero conseguir el artículo relacionado (en la posición correspondiente) en <array name="PLAYURL">,
Lo que normaly trataría de hacer es ...
<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>
LO SIENTO! Esto funcionará ... ¡Ah!! Gratamente ...
Ahora es probable que le gustaría probar, algo como esto ...
<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>
Y De nuevo, esto no funcionará ... Ahora que rascarse la cabeza, tratando de ponerse en contacto con todos los que usted piensa que sabe algo de XSL y podría ser de alguna ayuda ... intentar todas las opciones de otros ... y aún funciona costumbre ... Bueno! Eso es lo que me pasó el atleast ...
EXCLUIR LA DESESPERACIÓN! LA PRUEBA
<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 por qué funciona. Porque no tengo una razón bien ... si lo haces! Por favor deja un comentario. Puede ser muy útil. También! si usted tiene un mejor título para este post, lo mándenme una línea de 