Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tpezzi

xsl + xml

Recommended Posts

Olá Pessoal!

 

Estou tentando pegar os valores de um XML e inlcuir em um outro XML utilizando XSL.

O processo de inclusão ocorre mais de uma vez durante a utilização do sistema, porém o XSL inclui o valor sempre dentro da mesma tag e não em uma tag nova.

 

XML (lido):

<F021:taskOutput>
<F021:FormModel>
<Texto>
<Texto0>VALOR</Texto0>
</Texto>
<Historico>
<Historico0></Historico0>
</Historico>
</F021:FormModel>
</F021:taskOutput>

 

XSL:

<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

<xsl:output method="xml"/>

<xsl:template match="FormModel">
<xsl:element name="Historico">
<xsl:value-of select="Texto"/>
</xsl:element>
</xsl:template>

<xsl:template match="taskOutput">
<xsl:element name="Historico">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

 

XML (resultado):

<Historico>
<Historico>VALOR</Historico>
</Historico>

Até aqui tudo bem, porém, quando o sistema tiver que fazer isso novamente eu gostaria que ficasse assim:

<Historico>
<Historico>VALOR</Historico>
<Historico>OUTRO VALOR</Historico>
</Historico>

Como faço para que ele inclua em um nova tag e não sempre dentro da mesma?

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai ter que usar:

<xsl:for-each select="[SEU NÓ]">

Tente estudar o link:

http://forum.imasters.com.br/index.php?showtopic=293324

 

Atenciosamente Silverfox.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Silverfox,

 

Primeiro, obrigado pela resposta!

Cheguei ao seguinte código:

 

<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
 
  <xsl:output method="xml"/>
  <xsl:template match="FormModel">  
	  <xsl:for-each select="Texto">	
		<xsl:element name="Historico">		
				<xsl:value-of select="Texto0"/>	
		  </xsl:element>				
	</xsl:for-each>
  </xsl:template>
  
  <xsl:template match="taskOutput">
	<xsl:element name="Historico">
			  <xsl:apply-templates/>
	</xsl:element>
  </xsl:template>
</xsl:stylesheet>

Com o for-each eu determinei que a cada tag Texto do meu XML eu deveria criar uma tag Historico com o valor da tag Texto0 dentro, perfeito.

O resultado foi esse:

<Historico>
<Historico>VALOR</Historico>
<Historico>OUTRO VALOR</Historico>
</Historico>

Porém, em outro ponto da execução do sistema, quando preciso fazer isso novamente ele altera o XML e não inserindo uma nova tag.

 

<Historico>
<Historico>MAIS OUTRO VALOR</Historico>
</Historico>

Acredito que o problema esteja ocorrendo por isso. O fato de eu chamar em momentos diferentes o XSL.

 

Alguém sabe como me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.