Um problema com a posição () em XSL ... ou é?
Eu tive esse problema ao criar uma Armazenamento em XSL hoje. Procurava respostas em toda a rede, mas não poderia encontrar qualquer .... Na verdade, eu acho! Eu sei o que força o meu problema era, então o que devo procurar?
Enfim! Apenas no caso de você ter esse mesmo problema e também de alguma forma pelo poder a força que você conseguiu atingir esta página ... você poderia me agradecer toneladas ... E se você acidentalmente aterrou nesta página por algum estranho destino e tiver que ser um desenvolvedor XSL, fazem uma NOTA DESTE Agora, para a causa futuro, se algum dia, você enfrentar esse problema, então a força pode não ser com você.
Enunciado do problema:
Eu tenho esse XML, onde existem dois nós com vários itens em que os itens e entre estes dois nós têm uma correspondência um para um. No exemplo abaixo, cada item da <array nó name="PLAYURL" /> relaciona (posição correspondente) para um item na <array nó 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>
Agora, eu tenho um loop, onde i percorrer <array name="SITENAME">, e eu quero pegar o item relacionado (na posição correspondente) em <array name="PLAYURL">,
O que você normaly tentar fazer é ...
<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>
DESCULPE! Isso não vai funcionar ... Ah!! Surpised ...
Agora você provavelmente quer tentar, algo assim ...
<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 Novamente, isto não vai funcionar ... Agora você coçar a cabeça, tentando entrar em contato com todos que você acha que sabe alguma XSL e poderia ser de alguma ajuda ... você tentar todas as opções de outros ... e ainda não vai funcionar ... Bem! Isso é o que aconteceu comigo pelo menos ...
DESESPERO NÃO FAZ! EXPERIMENTE 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>
Não me pergunte por que funciona. Porque eu não tenho um motivo certo ... se você fizer! Por favor, deixar um comentário. Pode ser muito útil. Também! se você tem título melhor para este post, fazer cair-me uma linha ![]()










































