Проблема с позиции () в XSL ... или нет?
У меня была эта проблема strage при создании XSL сегодня. Посмотрел ответы всей сети, но не мог найти .... На самом деле я думаю! Я знаю, что вмятина моя проблема была, так что мне искать?
Во всяком случае! Только в случае, если у вас есть эта же проблема и как-то слишком силой заставить вас удалось посадить на этой странице ... Вы меня благодарить тонн ... И если вы случайно приземлился на этой странице, по непонятной судьба и вы будете Разработчик XSL, DO Запишите это сейчас, НА БУДУЩЕЕ причина, если в один прекрасный день, вы сталкиваетесь с этой проблемой, то сила не может быть с вами.
Постановка задачи:
У меня есть XML, где есть два узла с несколькими элементами в нем и элементы между этими двумя узлами имеют взаимно однозначное соответствие. В приведенном ниже примере, каждый элемент в узле <array name="PLAYURL" /> относится (соответствующее положение) элемент в узле <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>
Теперь у меня есть цикл, где я цикле <array name="SITENAME">, и я хочу, чтобы получить соответствующий пункт (на соответствующую позицию) в <array name="PLAYURL">,
Что бы вы normaly попытаться сделать, это ...
<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>
ИЗВИНИТЕ! Это не подходит ... Ах! Surpised ...
Теперь вы, вероятно, хотите попробовать, что-то вроде этого ...
<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>
И снова это не будет работать ... Теперь вас чесать затылок, пытаясь связаться с каждого, кто вы думаете, знает несколько XSL и может быть любой помощи ... Вы пытаетесь любой другой вариант ... и все же это не будет работать ... Ну! Вот что случилось со мной, по крайней мере ...
DONT отчаивайтесь!! Попробуйте это
<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>
Не спрашивайте меня, почему это РАБОТАЕТ. Потому что я не имею права причина ... если вы делаете! Пожалуйста удалить комментарий. Это может быть очень полезным. Кроме того! если у вас есть лучшее название для этой должности, сделать напишите мне ![]()










































