RE : Re: probleme de traitement

"MAGNA Pascal" <[email protected]>
Newsgroups gmane.text.xml.french.tech
Message-ID <6D1AEC3456FCEE41951B2874053E9B28046F4D84@scmex-clipper.cneti.caisse-epargne.fr>
Bonjour,

Voici le code avec quelques simplifications (chaque template se trouve dans des feuilles de styles différentes lesquelles sont appelées par des includes)
Il y a d'autres feuilles de styles pour d'autres familles d'opération (lect_rub_g***)  mais basé sur le même principe.
Le but est d'afficher une opération bancaire (ensemble de balise s*) avec le template create_rub et dans un deuxieme temps d'afficher l'opération complète avec l'ensemble des champs s*. Le bémol c'est que j'ai x description d'opération bancaire (lect_rub_g***)  et que je ne veux pas créer une balise  <xsl:element name ="concatene"><xsl:value-of select="s1"/><xsl:value-of select="s2"/><xsl:value-of select="s3"/></xsl:element> car cela suppose que je doit coder l'ensemble des description une nouvelle fois.
Choose when ope1 .... When ope2 .... Etc je voudrais quelquechose de générique.

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

<!-- Format de sortie des données -->
<!-- ============================ -->
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" omit-xml-declaration="no"  indent="yes" cdata-section-elements="Valeurs"/> 

		
<!-- Appels successifs des templates -->
<!-- =============================== -->

<xsl:template match="/">

	<xsl:call-template name="GSIT"></xsl:call-template>

</xsl:template>

<xsl:template name="GSIT">

<xsl:element  name="DRK_RESPONSE">


	<xsl:for-each select="/DRK_RESPONSE/DrkHit/DrkDocument">
			
			<xsl:element  name="Opération">
			
					<!--                     OPERATIONS FAMILLE DES VIREMENTs                                  -->
					<!-- ===================================================================================== -->	
					<xsl:call-template name="gs18is"><xsl:with-param name="position_deb" select="'1'" /></xsl:call-template>		
					
				
						
			</xsl:element>
			
			
			<xsl:element  name="Minos">
				<xsl:value-of select="'?'"/>
			</xsl:element>
			
			
			
			
	</xsl:for-each>

</xsl:element>

</xsl:template>


<!-- Appel des differents groupes (SI (Sit Initial), BI (Banque Initial), SR, SA, BR, BA etc -->
<!-- ========================================================================================== -->  

<xsl:template name="gs18is">
	
	<xsl:param name="position_deb" />
	
		<xsl:element  name="ZONE">
			<xsl:attribute name="type">SIT</xsl:attribute>
			<xsl:attribute name="motif">INITIALE</xsl:attribute>
			<xsl:call-template name="lect_rub_gs18is"><xsl:with-param name="position_deb" select="$position_deb"/></xsl:call-template>			
		</xsl:element>	
	
	
	<!--	<xsl:call-template name="lect_rub_gs18is"><xsl:with-param name="position_deb" select="$position_deb"/></xsl:call-template> -->
 
</xsl:template>
	
		    
<xsl:template name="lect_rub_gs18is">

	<xsl:param name="position_deb" />
	
		<xsl:call-template name="creat_rub"> 
			<xsl:with-param name="code" select="'s1'" />
			<xsl:with-param name="position_deb" select="$position_deb"/>
			<xsl:with-param name="position" select="'1'" />
			<xsl:with-param name="libelle" select="'indicateur début d opération'" />
			<xsl:with-param name="type" select="'AN'" />
			<xsl:with-param name="lg" select="'2'" />
			<xsl:with-param name="valeur" select="s1" />
		</xsl:call-template>	
		<xsl:call-template name="creat_rub"> 
			<xsl:with-param name="code" select="'s2'" />
			<xsl:with-param name="position_deb" select="$position_deb"/>
			<xsl:with-param name="position" select="'3'" />
			<xsl:with-param name="libelle" select="'longueur totale opération'" />
			<xsl:with-param name="type" select="'N'" />
			<xsl:with-param name="lg" select="'4'" />
			<xsl:with-param name="valeur" select="s2" />
		</xsl:call-template>	
		<xsl:call-template name="creat_rub"> 
			<xsl:with-param name="code" select="'s3'" />
			<xsl:with-param name="position_deb" select="$position_deb"/>
			<xsl:with-param name="position" select="'7'" />
			<xsl:with-param name="libelle" select="'code article'" />
			<xsl:with-param name="type" select="'N'" />
			<xsl:with-param name="lg" select="'2'" />
			<xsl:with-param name="valeur" select="s3" />
		</xsl:call-template>	
		<xsl:call-template name="creat_rub"> 
			<xsl:with-param name="code" select="'s4'" />
			<xsl:with-param name="position_deb" select="$position_deb"/>
			<xsl:with-param name="position" select="'9'" />
			<xsl:with-param name="libelle" select="'code opération'" />
			<xsl:with-param name="type" select="'N'" />
			<xsl:with-param name="lg" select="'3'" />
			<xsl:with-param name="valeur" select="s4" />
		</xsl:call-template>
			
</xsl:template>

<!-- Appels des templates de type fonction -->
<!-- ========================================================================================== -->

<xsl:template name="creat_rub">

	<xsl:param name="code" />
	<xsl:param name="position_deb"/>
	<xsl:param name="position" />
	<xsl:param name="libelle" />
	<xsl:param name="type" />
	<xsl:param name="lg" />
	<xsl:param name="valeur" />

	<!-- Traitement de création de balises détaillées pour chaque champ -->
	<!-- ============================================================== -->
	
	
		<xsl:element  name="rubrique">
			<Code value="{$code}"/>
			<Position value="{$position_deb + $position -1}"/>
			<Libellé value="{$libelle}"/>
			<Type value="{$type}"/>
			<Lg value="{$lg}"/>
	    	<Valeur value="{$valeur}"/>
		</xsl:element>   
		
	<!--	<xsl:value-of select="$valeur"/> -->

</xsl:template>

</xsl:stylesheet>   
   

MAGNA Pascal 
CNETI/DECI 
Tel : 01.58.40.23.11 
EMail : [email protected] 



-----Message d'origine-----
De : [email protected] [mailto:[email protected]] De la part de Sébastien Tiscar
Envoyé : lundi 12 juin 2006 18:10
À : [email protected]
Objet : [xml-tech] Re: probleme de traitement


pas besoin d utiliser une variable il suffit d appeler la valuer de chaque 
élément ou d utilier la fonction concat
<xsl:element name ="concatene">
  <xsl:value-of select="s1"/><xsl:value-of select="s2"/><xsl:value-of 
select="s3"/>
</xsl:element>
Maintenant, ce code peut changer en prenant compte du noeud contextuel mais 
là tout dépend de votre xsl, pourrait en avoir la source?



----- Original Message ----- 
From: "MAGNA Pascal" <[email protected]>
To: <[email protected]>
Sent: Monday, June 12, 2006 5:39 PM
Subject: [xml-tech] probleme de traitement


> Bonjour,
>
> En schématisant, j'ai un document
>
> <s1>nom</s1>
> <s2>prénom</s2>
> <s3>age</s3>
>
> Je dois (et c'est fait) dans un document en sortie généré <rubrique>
> <Code value="s1" />
> <Valeur value="nom" />
> </rubrique>
> </rubrique>
> <rubrique>
> <Code value="s2" />
> <Valeur value="prenom" />
> </rubrique>
> </rubrique>
> <rubrique>
> <Code value="s3" />
> <Valeur value="age" />
> </rubrique>
>
> et en plus et c'est là que ça complique
> je dois générer en plus à la suite de ce que j'obtiens précédement :
>
> <concatene>nomprenomage</concatene>
>
> J'ai essayé d'utilisé value-of (je génère avec cooktop le résultat
> concaténé dans html) et avec une variable je n'arrive pas à l'alimenter 
> pour l'utilser apres mon traitement détail (je dois pas savoir y faire)
>
> Merci pour tout.
>
> Si besoin de plus de détail ....
>
> MAGNA Pascal
> CNETI/DECI
> Tel : 01.58.40.23.11
> EMail : [email protected]
>
>
>
>
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du xml 
> francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "[email protected]" (http://xmlfr.org).
>
> Cette liste est a votre disposition pour discuter en francais de tout 
> sujet technique lie a XML.
>
> Pour resilier votre abonnement, envoyez un message contenant la 
> commande "unsubscribe" a [email protected]
> (mailto:[email protected]?Subject=unsubscribe)
>
> 

--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !

Liste de diffusion "[email protected]" (http://xmlfr.org).

Cette liste est a votre disposition pour discuter en francais de 
tout sujet technique lie a XML.

Pour resilier votre abonnement, envoyez un message contenant 
la commande "unsubscribe" a [email protected]
(mailto:[email protected]?Subject=unsubscribe)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.