IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XML-XSL] références interfichiers


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [XML-XSL] références interfichiers
    J'ai deux fichiers XML:
    je voulais savoir comment faire pour parcourir deux fichiers XML à l'aide d'une même feuille de style
    Mon but serait de parcourir mon premier fichier et à chaque élement récupérer son type contenu dans le
    second fichier (dans Doc/TYPE/TResources/Attributes) puis à l'aide de cet attribut récupérer son type(Doc/TYPE).

    exemple
    ----------
    on aura alors a l'affichage
    PModule
    Type=String
    Value=Module.xml

    j'espère mettre bien exprimer et que quelqu'un peux m'éclairer.je suis en stage et ca bloque mon travail.

    fichier1.xml
    --------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <Value>
       <PResources>
          <PModule Value="Module.xml"/>
          <PReference Value="RefFile.xml"/>
          <PTarget Value="RefTarget.xml"/>
          <PTolerance>
             <PPourcentageTolerance Value="5"/>
             <PToleranceMin Value="30"/>
             <PToleranceMax Value="80"/>
             <PPourcentageTolTemps Value="15"/>
          </PTolerance>
     
       </PResources>
    </Value>

    fichier2.xml
    --------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <Doc>
       <TYPE>
          <TModule Type="String"  Default="DicoMresIDataEn.xml"/>
          <TReference Type="String"  Default="RefFileTransmitter.xml"/>
          <TTarget Type="String"  Default="RefFileTarget.xml"/>
          <TPourcentageTolerance Type="Double"  Default="1.0" />
          <TPourcentageTolTemps Type="Double"  Default="2.0" />
          <TToleranceMax Type="Double"  Default="8" />
          <TToleranceMin Type="Double"  Default="35" />
          <TTolerance Type="Struct" >
             <attributes>
                <PPourcentageTolerance Type="TPourcentageTolerance"/>
                <PToleranceMin Type="TToleranceMin"/>
                <PToleranceMax Type="TToleranceMax"/>
                <PPourcentageTolTemps Type="TPourcentageTolTemps"/>
             </Attributes>
          </TTolerance>
           <TResources Type="Struct" Label="Ressources">
             <attributes>
                <PModule Type="TModule"/>
                <PReference Type="TReference"/>
                <PTarget Type="TTarget"/>
                <PTolerance Type="TTolerance"/>
              </Attributes>
          </TResources>
       </TYPE>
       <VAR>
          <PResources Type="TResources"/>
       </VAR>
    </Doc>
    --------------------------------------------------------------------------------------
    voila ce que j'ai essayé de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
     
     
    <xsl:variable name="dico" select="document('fichier2.xml')"/>
     
     
    <xsl:for-each select="Value//*">
            <xsl:variable name="p" select="name()"/>
                    <xsl:value-of select ="$p"/>
            <br></br>
     
            <xsl:for-each select="$dico/Dico/TYPEDEF/TResources/Attributes//*">
            <xsl:value-of select ="name()"/>
                    <xsl:variable name="t" select="name()"/>
                    <xsl:for-each select="@*">
                    </xsl:for-each>        
                    <xsl:value-of select ="$t"/>
     
     
     
                    <xsl:if test="'$t'='$p'">
                            ...
                    </xsl:if>
            </xsl:for-each>        
     
     
     
    </xsl:for-each>
     
     
     
    </xsl:template>
    </xsl:stylesheet>

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    j'ai du mal à comprendre le code de ta feuille de style, notamment les expressions XPath qui ne correspondent à pas àla structure de fichier2.xml... Personnellement, pour retrouver le noeud type correspondant à un noeud de ta source, je procèderais ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    <xsl:variable name="nomType" select="concat('T', substring(name(), 2))"/>
    <xsl:variable name="noeudType" select="$dico//*[name() = $nomType]"/>
    ...

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci bien je viens de tester.votre explication m'a bp aidé

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'ai un autre problème le voici:
    Je remets les deux fichiers source XML:
    fichier1.xml
    --------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <Value>
       <PResources>
          <PModule Value="Module.xml"/>
          <PReference Value="RefFile.xml"/>
          <PTarget Value="RefTarget.xml"/>
          <PTolerance>
             <PPourcentageTolerance Value="5"/>
             <PToleranceMin Value="30"/>
             <PToleranceMax Value="80"/>
             <PPourcentageTolTemps Value="15"/>
          </PTolerance>
            <PList> 	
    	    <PTolerance>
                   <PPourcentageTolerance Value="5"/>
                   <PToleranceMin Value="30"/>
                   <PToleranceMax Value="80"/>
                    <PPourcentageTolTemps Value="15"/>
                 </PTolerance>
               <PTolerance>
                  <PPourcentageTolerance Value="52"/>
                  <PToleranceMin Value="35"/>
                  <PToleranceMax Value="85"/>
                  <PPourcentageTolTemps Value="12"/>
               </PTolerance>	
             <PList>	
        </PResources>
    </Value>

    fichier2.xml
    --------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <Doc>
       <TYPE>
          <TModule Type="String"  Default="DicoMresIDataEn.xml"/>
          <TReference Type="String"  Default="RefFileTransmitter.xml"/>
          <TTarget Type="String"  Default="RefFileTarget.xml"/>
          <TPourcentageTolerance Type="Double"  Default="1.0" />
          <TPourcentageTolTemps Type="Double"  Default="2.0" />
          <TToleranceMax Type="Double"  Default="8" />
          <TToleranceMin Type="Double"  Default="35" />
          <TTolerance Type="Struct" >
             <Attributes>
                <PPourcentageTolerance Type="TPourcentageTolerance"/>
                <PToleranceMin Type="TToleranceMin"/>
                <PToleranceMax Type="TToleranceMax"/>
                <PPourcentageTolTemps Type="TPourcentageTolTemps"/>
             </Attributes>
          </TTolerance>
            <TList Type="List" Name="TTolerance"/>
    	<TResources Type="Struct" Label="Ressources">
             <Attributes>
                <PModule Type="TModule"/>
                <PReference Type="TReference"/>
                <PTarget Type="TTarget"/>
                <PTolerance Type="TTolerance"/>
    	    <PList Type="TList">		   
    	 </Attributes>
          </TResources>
       </TYPE>
       <VAR>
          <PResources Type="TResources"/>
       </VAR>
    </Doc>

    -----------------------------------------------------------------------------------
    voila ce que j'ai essayé de faire:
    j'ai un problème avec la gestion des listes.Ca ne rentre pas dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
     
    <xsl:variable name="dico" select="document('fichier2.xml')"/>
    <HTML>
    <HEAD>
    	<title>
    	VALUE
    	</title>
     
     
    </HEAD>
     
    <BODY>	
    <xsl:for-each select="Value//*"> 
    	<xsl:variable name="nomP" select="name()"/> 
     
    	<xsl:variable name="value" select="@Value"/> 
     
    	<xsl:variable name="noeudType" select="$dico//*[name()=$nomP]"/> 	
     
    <!--fichier Dico-->		
    		<xsl:variable name="Type" select="$noeudType/@Type"/>
    		<xsl:variable name="selection" select="$dico//*[name()=$Type]"/> 
    		<xsl:variable name="type" select="$selection/@Type"/>
    		<xsl:variable name="label" select="$selection/@Label"/>
    		<xsl:variable name="unit" select="$selection/@Unit"/>
    		<xsl:variable name="Param" select="$selection/@Name"/>
     
    		<xsl:if test="$type='String'">
    			<br></br>
    			<u><b><xsl:value-of select ="$label"/>:</b></u><xsl:value-of select ="$value"/>
    		</xsl:if>
     
    		<xsl:if test="$type='Double'">
    			<br></br>
    			<u><b><xsl:value-of select ="$label"/>:</b></u><xsl:value-of select ="$value"/><xsl:value-of select ="$unit"/>
    		</xsl:if>
     
    		<xsl:if test="$type='Boolean'">
    			<br></br>
    			<u><b><xsl:value-of select ="$label"/>:</b></u><xsl:value-of select ="$value"/>
    		</xsl:if>
     
    		<xsl:if test="$type='Integer'">
    			<br></br>
    			<u><b><xsl:value-of select ="$label"/>:</b></u><xsl:value-of select ="$value"/><xsl:value-of select ="$unit"/>
    		</xsl:if>
     
     
    		<xsl:if test="$type='List'">
    			<br></br>
    			<xsl:value-of select ="$Param"/>
    			<xsl:variable name="noeudList" select="Value//*[name()=$Param]"/> 	
     
    				<xsl:for-each select="$noeudList"> 
    						<br></br>
     
    				</xsl:for-each>
     
    		</xsl:if>
     
    </xsl:for-each>
     
    </BODY>
    </HTML>
     
    </xsl:template>
    </xsl:stylesheet>
    J'espère que je suis bien clair vous pourrez m'aider .merci

Discussions similaires

  1. [DOM4J] insertion référence style XML/XSL
    Par belarbim dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 05/06/2008, 15h24
  2. Réponses: 1
    Dernier message: 22/04/2008, 11h24
  3. XML + XSL + PHP
    Par ZzZerf dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 21/03/2003, 15h54
  4. xml -> xsl -> xml
    Par virgile04 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/10/2002, 16h53
  5. Cours en Français sur XML-XSL et XPath
    Par Community Management dans le forum XSL/XSLT/XPATH
    Réponses: 0
    Dernier message: 25/04/2002, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo