Jump to content


Photo

Loop Com Xsl


  • Faça o login para participar
4 replies to this topic

#1 tpezzi

tpezzi

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre - RS

Posted 31/10/2007, 14:55

Oi pessoal!

Pois é, sou eu de novo apanhando do XSL... faz parte.
Meu problema agora é o seguinte, no código abaixo a variável $total vai receber uma string com os valores separados por espaços em branco (ex: "valor01 valor02 valor03"). Eu preciso devolver estes valores separados e um de cada vez, ou seja, preciso fazer um loop para que repita tudo que estiver dentro da tag <xsl:element> e assim ir devolvendo um valor por vez.
Eu gostaria de resolver isso só com XSL e XPath, tem como? Já pensei em utilizar 'substring-before', 'tokenize', mas não consegui fazer um loop. Alguém sabe como ajudar?

<xsl:template match="output">	<xsl:variable name="total" select="valores"/>	<xsl:element name="titulos">		<xsl:value-of select="$total"/>      	</xsl:element>  </xsl:template>


Valeu!

#2 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 01/11/2007, 00:54

<xsl:for-each select="/">

  <xsl:value-of select="$total"/>

</xsl:for-each>

WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#3 tpezzi

tpezzi

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre - RS

Posted 01/11/2007, 08:18

Não entendi.
Posso fazer um loop com isso?
E como eu faria ele parar?

#4 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 01/11/2007, 09:10

Sim, use isso para faer um loop, e ele para quando acabar os registros.

XML:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="application/xml" href="foreach.xsl"?>
<table>
	<row><entry>A1</entry><entry>A2</entry></row>
	<row><entry>B1</entry><entry>B2</entry></row>
	<row><entry>C1</entry><entry>C2</entry></row>
</table>

XSL:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>

	<xsl:template match="table">
		<table>
			<xsl:for-each select="row">
				<tr>
					<xsl:for-each select="entry">
						<td><xsl:apply-templates/></td>
					</xsl:for-each>
				</tr>
			</xsl:for-each>
		</table>
	</xsl:template>
	
</xsl:stylesheet>

Tem um lugar com uma boa referência de uso do XSL: http://www.worldofwa...yout/layout.xsl
Pegou essa ?! :blink:

Edição feita por: bimonti, 01/11/2007, 09:16.

WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#5 tpezzi

tpezzi

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre - RS

Posted 06/11/2007, 16:50

Bom, para o meu caso ficou assim:

[codebox]
<xsl:template match="/">
<xsl:variable name="total" select="valores"/>
<xsl:variable name="total" select="tokenize($total,' ')"/>
<xsl:for-each select="$total">
<xsl:element name="titulos">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:template>
[/codebox]

Valeu!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq