Un problème avec la position () dans XSL ... ou est-ce?

J'ai eu ce problème strage tout en créant un XSL aujourd'hui. Nous avons cherché des réponses à travers le net, mais nous ne pouvions trouver un .... En fait, je crois! Je sais à force quel était mon problème, alors que dois-je chercher?

Quoi qu'il en soit! Juste au cas où vous avez ce même problème aussi et en quelque sorte par la puissance de la force que vous réussi à atterrir sur cette page ... vous me remercierez ... tonnes Et si vous avez accidentellement atterri sur cette page pour un destin étrange et vous arrive d'être un développeur XSL, font une NOTE DE CE Maintenant, pour la cause de l'avenir, si un jour, vous faites face à cette question, alors la force pourrait ne pas être avec vous.

Énoncé du problème:
J'ai ce code XML, où il ya deux nœuds avec plusieurs éléments en elle et les éléments entre ces deux nœuds ont une correspondance une à une. Dans l'exemple ci-dessous, chaque élément dans le noeud <array name="PLAYURL" /> concerne (position correspondant) d'un élément dans le noeud <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>

Maintenant, j'ai une boucle, où i boucle à travers <array name="SITENAME">, et je veux obtenir le point connexe (à la position correspondante) dans <array name="PLAYURL">,

Qu'est-ce que vous essayez de faire est normalement ...

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

DÉSOLÉ! Cela ne marchera pas ... Ah!! Surpris ...

Maintenant, vous auriez probablement eu envie d'essayer, quelque chose comme ça ...

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

Et Encore une fois cela ne marchera pas ... Maintenant, vous vous gratter la tête, en essayant de communiquer avec tous ceux qui vous pensez sait quelques XSL et pourrait être d'aucun secours ... vous essayez toutes les autres options ... et encore cela ne fonctionnera pas ... Eh bien! Thats ce qui m'est arrivé ... atleast

EXCLURE DÉSESPOIR! 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>

NE ME DEMANDEZ POURQUOI ÇA MARCHE. Parce que je n'ai pas de bonne raison ... si vous le faites! S'il vous plaît ne déposer un commentaire. Il pourrait être assez utile. Aussi! si vous avez un meilleur titre pour ce poste, envoyez-moi faire une ligne :)


Laisser un commentaire

NDK la maison | Exprimant IT | Bouche Exprimant | Penmenship Exprimant | Awe Exprimant | m'exprimer