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

XML/XSL et SOAP Discussion :

referencier un xml dans un autre


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut [resolu]referencier un xml dans un autre
    bonjour,
    d'abord desolé je ne suis qu'un petit debutant.

    j'ai deux fichier xml:
    statuts.xml

    <statuts>
    <statut>
    <nom>prof</nom>
    <salaire>...</salaire>
    ...
    </statut>

    ...
    </stataus>

    et un deuxieme salariers.xml ou je veux referencier par exemple juste le nom de statut sans les autres données. par exemple:

    <balisePrincipale>
    <salariers>
    <salarier>
    <nom>toto</prenom>
    <prenom>titi</titi>
    <statut nom="prof"/> //je ne sai pas si cette ecriture est vraie?

    et si c le cas, comment declarer l'existance de statuts.xml dans salariers.xml?

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Par défaut J'ai pas compris
    Salut,

    Si j'ai bien compris, tu veux "lier" un prof à un salarié, c'est ça ?
    Est-ce qu'il y a une relation de un à un (un prof -> un salarié) ou une relation de un à plusieurs (un prof -> plusieurs salariés) ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut
    en fait je veux lier un salarié a un statut, en appelant dans chaque salarié l'attribut nom du statut!!!
    j'espere que j'ai bien exliqué ccette fois

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Par défaut Solution 1
    Salut,

    Oui, mais je persiste à croire qu'il y a une relation de un à plusieurs : plusieurs salariés peuvent avoir le même statut. Je te propose 2 solutions selon que tu intégres les 'statuts' et les 'salariés' dans un seul fichier Xml ou que tu les laisses dans 2 fichiers Xml distincts.
    Il existe une troisième solution qui utilise la fonction Xpath "id()". Mais il faut définir une Dtd ou un schéma dans lequel un attribut doit être défini avec un type "Id".

    Solution 1

    Toutes les données sont dans un seul fichier (c'est pas interdit).

    Fichier 'donnees.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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="statuts.xsl"?>
    <donnees>
    	<statuts>
    		<statut ref="s1"> 
    			<nom>directeur</nom> 
    			<salaire>20000</salaire> 
    		</statut> 
    		<statut ref="s2"> 
    			<nom>pilote</nom> 
    			<salaire>12000</salaire> 
    		</statut>	
    	</statuts> 
    	<salaries> 
    		<salarie num="1"> 
    			<nom>Shumacher</nom> 
    			<prenom>Michael</prenom> 
    			<statut lien="s2"/>
    		</salarie>
    		<salarie num="2"> 
    			<nom>Barichello</nom> 
    			<prenom>Rubens</prenom> 
    			<statut lien="s2"/>
    		</salarie>
    		<salarie num="3"> 
    			<nom>Todt</nom> 
    			<prenom>Jean</prenom> 
    			<statut lien="s1"/>
    		</salarie>
    	</salaries>
    </donnees>
    Fichier Xsl :

    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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output method="html"/>
    <xsl:template match="/">
     
    	<html>
    	<head>
    	<title>Exemple</title>
    	<style>
    	th, td {
    	font-family: Verdana, Arial, Helvetica, sans-serif;
    	font-size: 11px;
    	}
    	</style>
    	</head>
    	<body>
     
    	<table align="center" cellpadding="5" cellspacing="1">
    	<tr>
    		<th>Numero</th>
    		<th>Nom</th>
    		<th>Prenom</th>
    		<th>Statut</th>
    	</tr>
     
    	<xsl:apply-templates select="//salarie"/>
     
    	</table>
     
    	</body>
    	</html>
     
    </xsl:template>
     
    <xsl:template match="salarie">
    <xsl:variable name="var" select="statut/@lien"/>
    	<tr>
    		<td>
    		<xsl:value-of select="@num"/>
    		</td>
    		<td>
    		<xsl:apply-templates select="nom"/>
    		</td>
    		<td>
    		<xsl:value-of select="prenom"/>
    		</td>
    		<td>
    		<xsl:value-of select="//statut[@ref=$var]/nom"/>
    		</td>	
    	</tr>
    </xsl:template>
     
    </xsl:stylesheet>

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Par défaut Solution 2
    Solution 2

    Fichier 'salaries.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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <salaries> 
    	<salarie num="1"> 
    		<nom>Shumacher</nom> 
    		<prenom>Michael</prenom> 
    		<statut lien="s2"/>
    	</salarie>
    	<salarie num="2"> 
    		<nom>Barichello</nom> 
    		<prenom>Rubens</prenom> 
    		<statut lien="s2"/>
    	</salarie>
    	<salarie num="3"> 
    		<nom>Todt</nom> 
    		<prenom>Jean</prenom> 
    		<statut lien="s1"/>
    	</salarie>
    </salaries>
    Fichier 'statuts.xml' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <statuts>
    	<statut ref="s1"> 
    		<nom>directeur</nom> 
    		<salaire>20000</salaire> 
    	</statut> 
    	<statut ref="s2"> 
    		<nom>pilote</nom> 
    		<salaire>12000</salaire> 
    	</statut>	
    </statuts>
    Fichier Xsl (lié à salaries.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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output method="html"/>
    <xsl:template match="/">
     
    	<html>
    	<head>
    	<title>Exemple</title>
    	<style>
    	th, td {
    	font-family: Verdana, Arial, Helvetica, sans-serif;
    	font-size: 11px;
    	}
    	</style>
    	</head>
    	<body>
     
    	<table align="center" cellpadding="5" cellspacing="1">
    	<tr>
    		<th>Numero</th>
    		<th>Nom</th>
    		<th>Prenom</th>
    		<th>Statut</th>
    	</tr>
     
    	<xsl:for-each select="//salarie">
     
    		<xsl:variable name="var" select="statut/@lien"/>
    		<tr>
    			<td>
    			<xsl:value-of select="@num"/>
    			</td>
    			<td>
    			<xsl:apply-templates select="nom"/>
    			</td>
    			<td>
    			<xsl:value-of select="prenom"/>
    			</td>
    			<td>
    			<xsl:value-of select="document('statuts.xml')//statut[@ref=$var]/nom"/>
    			</td>	
    		</tr>
     
    	</xsl:for-each>	
     
    	</table>
     
    	</body>
    	</html>
     
    </xsl:template>
    </xsl:stylesheet>
    Zoltar.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 3
    Par défaut
    la premiere solution provoque de la redondance de code et peut etre une grande taille de fichiers, c pour ca que je cherchais a les diviser en deux fichiers.
    merci beaucoup pour l'aide, c exactement ce que je cherchais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inclure un XML dans un autre
    Par domiq44 dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 30/09/2008, 14h19
  2. Réponses: 1
    Dernier message: 24/03/2007, 18h50
  3. [DOM] (org.w3c.dom) copier un noeud d'un fichier XML dans un autre fichier XML
    Par snoop dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 13/02/2007, 17h22
  4. [XML] Integrer des données d'un fichier xml dans un autre ?
    Par vpet dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 16/03/2006, 18h41
  5. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49

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