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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    janvier 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Australie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : janvier 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut comment creer une cle primaire et une cle referentielle avec xml xsd
    Bonjour je ve faire un park automobile ayant plusieurs voitures
    chaque voiture a un proprietaire que l on ressortir dans l exercice
    pour cela il faut utiliser les contraintes referencielles
    voici mon code mais j'ai une erreur et je ne sais pas pourquoi
    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
    <?xml version="1.0" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     
        <xsd:element name="Parking">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="voiture" />
                    <xsd:element name="personne" />
                </xsd:sequence>
            </xsd:complexType>
    <!-- code voiture -->
                <xsd:key name="clePrimVoiture">
                    <xsd:selector xpath="voiture"/>
                    <xsd:field xpath="codeV"/>
                </xsd:key>
        <!-- code personne -->
                <xsd:key name="clePrimPersonne">
                    <xsd:selector xpath="personne"/>
                    <xsd:field xpath="codeP"/>
                </xsd:key>
         <!-- cle ref personne -->
                  <xsd:keyref name="codeProprietaire" refer="clePrimVoiture">
                    <xsd:selector xpath="voiture"/>
                    <xsd:field xpath="codeP"/>
                </xsd:keyref>
        </xsd:element>
     
        <xsd:complexType name="voiture">
            <xsd:sequence>
                <xsd:element name="codeV" ref="clePrimVoiture"/>
                <xsd:element name="modele" type="xsd:string"/>
                <xsd:element name="marque" type="xsd:string"/>
         <xsd:element name="proprietaire" ref="codeProprietaire"/>
            </xsd:sequence>
        </xsd:complexType>
     
        <xsd:complexType name="personne">
            <xsd:sequence>
                <xsd:element name="codeP" ref="clePrimPersonne"/>
                <xsd:element name="nom" type="xsd:string"/>
                <xsd:element name="adresse" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:schema>

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 447
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 447
    Points : 2 540
    Points
    2 540
    Par défaut
    voici mon code mais j'ai une erreur et je ne sais pas pourquoi
    Il y a déjà pas mal d'erreurs qui n'ont rien à voir encore avec l'usage de xsd:key et xsd:keyref.

    [1] Il faut préciser le type d'élément sinon xsd:string soit pris par défaut. (éléments voiture, personne)
    [2] Il n'y a pas qu'une voiture dans le parking et qu'une personne pour l'entreprise, je suppose. Par conséquence il faut préciser les cardinalités selon des cas.
    [3] Les types des keys en tant qu'éléments ne prenent pas l'attribut ref dans leur définition. Il s'agit toujours le type comme d'habitude.
    [4] Quand on écrit le xsd:keyref, on réfère la clé, en effet, qu'on veut vérifier la clé où se trouve dans le field d'un élément par matcher le field défini par l'enfant de xsd:keyref : ici, c'est matcher proprietaire d'une voiture avec codeP d'une personne --- c'est l'idée. Le match doit être réussi, sinon, une erreur se résulte --- encore, c'est l'idée.

    Voici une version corrigée qui peut vous aider et ce n'est pas si facile si on ne sait quoi regarder.
    Code xsd : 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
    <xsd:schema version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="Parking">
        <xsd:complexType>
            <xsd:sequence>
                <!--
                <xsd:element name="voiture" />
                <xsd:element name="personne" />
                -->
                <xsd:element name="voiture" type="voiture" minOccurs="0" maxOccurs="unbounded" />
                <xsd:element name="personne" type="personne" minOccurs="0" maxOccurs="unbounded" />
            </xsd:sequence>
        </xsd:complexType>
        <!-- code voiture -->
        <xsd:key name="clePrimVoiture">
            <xsd:selector xpath="voiture"/>
            <xsd:field xpath="codeV"/>
        </xsd:key>
        <!-- code personne -->
        <xsd:key name="clePrimPersonne">
            <xsd:selector xpath="personne"/>
            <xsd:field xpath="codeP"/>
        </xsd:key>
        <!-- cle ref personne -->
        <!--
        <xsd:keyref name="codeProprietaire" refer="clePrimVoiture">
        -->
        <xsd:keyref name="codeProprietaire" refer="clePrimPersonne">
            <xsd:selector xpath="voiture"/>
            <!--
            <xsd:field xpath="codeP"/>
            -->
            <xsd:field xpath="proprietaire" />
        </xsd:keyref>
    </xsd:element>
      <xsd:complexType name="voiture">
        <xsd:sequence>
            <!--
            <xsd:element name="codeV" ref="clePrimVoiture"/>
            -->
            <xsd:element name="codeV" type="xsd:token" />
            <xsd:element name="modele" type="xsd:string"/>
            <xsd:element name="marque" type="xsd:string"/>
            <!--
            <xsd:element name="proprietaire" ref="codeProprietaire"/>
            -->
            <xsd:element name="proprietaire" type="xsd:token" />
        </xsd:sequence>
    </xsd:complexType>
      <xsd:complexType name="personne">
        <xsd:sequence>
            <!--
            <xsd:element name="codeP" ref="clePrimPersonne"/>
            -->
            <xsd:element name="codeP" type="xsd:token" />
            <xsd:element name="nom" type="xsd:string"/>
            <xsd:element name="adresse" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>
    </xsd:schema>

    Et voici une instance de xml qui doit être validée par le schéma.
    Code xml : 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
    <Parking>
        <voiture>
            <codeV>WW-810-00</codeV>
            <modele>x</modele>
            <marque>y</marque>
            <!-- -->
            <proprietaire>jean-000-234567</proprietaire>
            <!-- -->
            <!-- keyref invalidate test
            <proprietaire>jean-100-234567</proprietaire>
            -->
        </voiture>
        <voiture>
            <codeV>DP-441-YP</codeV>
            <modele>xx</modele>
            <marque>yy</marque>
            <proprietaire>christian-111-345678</proprietaire>
        </voiture>
        <personne>
            <codeP>christian-111-345678</codeP>
            <nom>christian</nom>
            <adresse>paris</adresse>
        </personne>
        <personne>
            <codeP>michel-999-456789</codeP>
            <nom>michel</nom>
            <adresse>bures-sur-yvette</adresse>
        </personne>
        <personne>
            <codeP>jean-000-234567</codeP>
            <nom>jean</nom>
            <adresse>orsay</adresse>
        </personne>
    </Parking>

Discussions similaires

  1. comment creer une map anime avec J2me en utilisant svg
    Par daniel7 dans le forum Java ME
    Réponses: 0
    Dernier message: 16/05/2009, 16h01
  2. Réponses: 3
    Dernier message: 19/07/2006, 15h28
  3. Comment creer une bande bootable ?
    Par sdeb dans le forum Administration système
    Réponses: 7
    Dernier message: 13/01/2004, 18h26
  4. [TP]comment creer une disquette bootable (les fichiers)
    Par ludovic5532 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 25/10/2003, 19h46

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