Bonjour tout le monde!
J'ai un petit pbl pour generer plusieurs fichiers xml en sortie en fait mon fichier XSLT n'est pas bon ...

<row numEtud="1" civilitEtud="Monsieur" nomEtud="ASSO" Entreprise="SAGESSE" adrEntre="12, Place Roguet" cpEntre="31300" />
<row numEtud="2" civilitEtud="Mademoiselle" nomEtud="AUGE" Entreprise="GIE GREENCAM" adrEntre="18 Rue DAVOUT" cpEntre="21000" />
 

J'aimerai obtenir en sortie, 1 fichier etudiants.xml
exemple :


<etudiants>
<row numEtud="1" civilitEtud="Monsieur" nomEtud="ASSO"/>
<row numEtud="2" civilitEtud="Mademoiselle" nomEtud="AUGE"/>
</etudiants>



et 1 fichier entreprises.xml
exemple :


<entreprises>
<row Entreprise="GIE GREENCAM" adrEntre="18 Rue DAVOUT" cpEntre="21000"/>
<row Entreprise="SAGESSE" adrEntre="12, Place Roguet" cpEntre="31300"/>
</entreprises>
 


et voila le fichier XSLT incriminé ! :d


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:lxslt="http://xml.apache.org/xslt"
xmlns:redirect="org.apache.xalan.lib.Redirect"
extension-element-prefixes="redirect">
 
<xsl:template match="/">
 
<redirect:write file="entreprises.xml">
<entreprises>
<xsl:for-each select="row">
<xsl:call-template name="entre" />
</xsl:for-each>
</entreprises>
</redirect:write>
 
 
<redirect:write file="etudiants.xml">
<etudiants>
 
<xsl:for-each select="row">
<xsl:call-template name="etud" />
</xsl:for-each>
 
</etudiants>
</redirect:write>
 
 
</xsl:template>
 
<!-- Declaration des attributs concernant l'etudiant -->
<xsl:attribute-set name="attrEtudiants">
<xsl:attribute name="numEtud"><xsl:value-of select="@numEtud"/></xsl:attribute>
<xsl:attribute name="civilitEtud"><xsl:value-of select="@civilitEtud"/></xsl:attribute>
<xsl:attribute name="nomEtud"><xsl:value-of select="@nomEtud"/></xsl:attribute>
</xsl:attribute-set>
 
<!-- Declaration des attributs concernant l'entreprises -->
 
<xsl:attribute-set name="attrEntreprise">
<xsl:attribute name="entreprise"><xsl:value-of select="@Entreprise"/></xsl:attribute>
<xsl:attribute name="adrEntre"><xsl:value-of select="@adrEntre"/></xsl:attribute>
<xsl:attribute name="cpEntre"><xsl:value-of select="@cpEntre"/></xsl:attribute>
</xsl:attribute-set>
 
 
<xsl:template name="entre">
<xsl:element name="row" use-attribute-sets="attrEntreprise"/>
</xsl:template>
 
<xsl:template name="etud">
<xsl:element name="row" use-attribute-sets="attrEtudiants"/>
</xsl:template>



ALors j'ai essaye je en sais combien de solution, soit il me genere bien 2 fichiers de sorties mais avec seulemtn le dernier enregistrement, soit il me genere 2 fichiers mais avec le mem contenu ... je ne vois plus comment faire ...
Modifié par touffe (14 Nov 2005 - 11:39)
Bonjour touffe et bienvenue sur Alsacréations, Smiley smile

En attendant qu'un membre plus compétant que moi sur le sujet te vienne en aide, tu en profiteras pour présenter lisiblement ton code comme indiqué dans les règles Smiley cligne .
Bonjour
Essaie ca
J'ai simplement enlever les declarations d'attributs. Résultat non garantis !


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:lxslt="http://xml.apache.org/xslt"
xmlns:redirect="org.apache.xalan.lib.Redirect"
extension-element-prefixes="redirect">

<xsl:template match="/">
  <redirect:write file="entreprises.xml">
    <entreprises>
      <xsl:for-each select="row">
         <xsl:call-template name="entre" />
      </xsl:for-each>
    </entreprises>
  </redirect:write>

  <redirect:write file="etudiants.xml">
    <etudiants>
      <xsl:for-each select="row">
        <xsl:call-template name="etud" />
      </xsl:for-each>
    </etudiants>
  </redirect:write>
</xsl:template>
 
<xsl:template name="entre">
  <xsl:element name="row">
    <xsl:attribute name="entreprise"><xsl:value-of select="@Entreprise"/></xsl:attribute>
    <xsl:attribute name="adrEntre"><xsl:value-of select="@adrEntre"/></xsl:attribute>
   <xsl:attribute name="cpEntre"><xsl:value-of select="@cpEntre"/></xsl:attribute>
</xsl:element>
</xsl:template>

<xsl:template name="etud">
   <xsl:element name="row">
      <xsl:attribute name="numEtud"><xsl:value-of select="@numEtud"/></xsl:attribute>
      <xsl:attribute name="civilitEtud"><xsl:value-of select="@civilitEtud"/></xsl:attribute>
      <xsl:attribute name="nomEtud"><xsl:value-of select="@nomEtud"/></xsl:attribute>
    </xsl:element>
</xsl:template>
je te remercie mais ca ne marche pas Smiley sweatdrop Smiley lol

il me genere le fichier xml suivant:


<?xml version="1.0" encoding="UTF-8"?>
<etudiants/>


j'ai comme la bizarre impression qu'il réécrit a chaque fois le fichier pour un element et donc qu'il ecrase les précédents .... suis désespéré hellpppp Smiley bawling
alors ca y est ca marche ( c'est pas trop tot ) pour ceux qui aurait le meme probleme c'etait juste une boucle qui posait probleme Smiley biggol


<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    
    xmlns:lxslt="http://xml.apache.org/xslt"
    
    xmlns:redirect="org.apache.xalan.lib.Redirect"
    
    extension-element-prefixes="redirect">
    <xsl:output method="xml" indent="yes"/>
    
    <xsl:template match="/">
                    <xsl:apply-templates/>         
    </xsl:template>
    
    <xsl:template match="root">
        
        <redirect:write file="entreprises.xml">
            
            <entreprises>
                <xsl:for-each select="row">
                    
                    <xsl:call-template name="entre"></xsl:call-template>
                    
                </xsl:for-each>
                    
              </entreprises>
        </redirect:write>
        
        <redirect:write file="etudiants.xml">
            
            <etudiants>       
                <xsl:for-each select="row">
                    <xsl:call-template name="etud" />         
                </xsl:for-each>
            </etudiants>
            
        </redirect:write>
        
    </xsl:template>

    
    <xsl:template match="row" name="entre">
      
        <xsl:element name="row">
            
            <xsl:attribute name="entreprise"><xsl:value-of select="@Entreprise"/></xsl:attribute>
            
            <xsl:attribute name="adrEntre"><xsl:value-of select="@adrEntre"/></xsl:attribute>
            
            <xsl:attribute name="cpEntre"><xsl:value-of select="@cpEntre"/></xsl:attribute>
            
        </xsl:element>

    </xsl:template>
    
    
    
    <xsl:template match="row" name="etud">
        
        <xsl:element name="row">
            
            <xsl:attribute name="numEtud"><xsl:value-of select="@numEtud"/></xsl:attribute>
            
            <xsl:attribute name="civilitEtud"><xsl:value-of select="@civilitEtud"/></xsl:attribute>
            
            <xsl:attribute name="nomEtud"><xsl:value-of select="@nomEtud"/></xsl:attribute>
            
        </xsl:element>
        
    </xsl:template>
    
  </xsl:stylesheet>
<


Si ca peut servir a d'autre Smiley lol