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 :

Soucis avec xs:unique


Sujet :

XML/XSL et SOAP

  1. #1
    Membre habitué Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 174
    Points
    174
    Par défaut Soucis avec xs:unique
    Bonjour à tous,

    Voici mon schéma xsd
    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
    71
    72
    73
    74
    75
    <xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vs="http://PreferenceSettings.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://PreferenceSettings.xsd">
     
      <!--L'énumération des type de favoris-->
      <xs:simpleType name="FavoriteTypeEnum">
        <xs:restriction base="xs:string">
          <xs:enumeration value="Bank"/>
          <xs:enumeration value="Payment"/>
        </xs:restriction>
      </xs:simpleType>
     
      <!--L'énumération des colonnes de recherche-->
      <xs:simpleType name="SeekInvoiceNumberIn">
        <xs:restriction base="xs:string">
          <xs:enumeration value="no_facture"/>
          <xs:enumeration value="ref_piece"/>
          <xs:enumeration value="intitule_ecriture"/>
          <xs:enumeration value="no_piece"/>
        </xs:restriction>
      </xs:simpleType>
     
      <!--La structure des favoris-->
        <xs:complexType name="FavoritesType">
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="FavoritesOfType">
              <xs:complexType>
                <xs:sequence>
                  <xs:element maxOccurs="unbounded" name="Identifiant" type="xs:int" />
                </xs:sequence>
                <xs:attribute name="Type" type="vs:FavoriteTypeEnum" use="required" />
              </xs:complexType>
              <xs:unique name="oneFavoriteTypeByAttributeValue">
                <xs:selector xpath="vs:FavoritesOfType"/>
                <xs:field xpath="@Type"/>
              </xs:unique>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
     
     
      <!--La structure des champs de recherche-->
        <xs:complexType name="FieldsType">
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="FieldSeek">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="vs:SeekInvoiceNumberIn">
                    <xs:attribute name="Rank" type="xs:int" use="required" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
              <xs:unique name="uniqueFieldRank">
                <xs:selector xpath=".//FieldSeek"/>
                <xs:field xpath="vs:FieldsType/@Rank"/>
              </xs:unique>
              <xs:unique name="uniqueField">
                <xs:selector xpath="vs:Fields"/>
                <xs:field xpath="FieldSeek"/>
              </xs:unique>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
     
     
      <!--L'élément Root-->
      <xsd:element name="PreferenceSettings">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Favorites" type="vs:FavoritesType"/>
            <xsd:element name="Fields" type="vs:FieldsType"/>
          </xsd:sequence>
     
        </xsd:complexType>
     
      </xsd:element>
    </xs:schema>
    Je n'arrive pas à définir les xs:unique. J'ai essayé pas mal de combinaison. J'ai parcouru le web. Apparement ce que j'avais fait été correct. Mais dans mon fichier xml lorsque je mets 2 rank à la même valeur, le fichier xml est toujours valide. Alors qu'il ne le devrait pas.

    Quelqu'un pourrait-il m'éclairer? Dois-je mettre mes unique dans mon bloc root?
    Merci d'avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    On ne va pas se taper tout ça, et de toute façon on n'est pas devins. Puisque tu t'en sors pas avec les tutoriels en ligne, on ne peut pas te donner une solution tout faite : c'est exactement ce qu'ils font.

    - Exemple court de fichier XML à valider. Explication sur ce qui ne doit pas apparaître plusieurs fois, et dans quel contexte. En gros, à quoi va servir xs:unique.

    - Exemple court de fichier XSD qui illustre comment tu essaies d'assurer cette unicité (et pas grand-chose d'autre).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 174
    Points
    174
    Par défaut
    Pardon, tu trouves le fichier long. J'ai mis tout le xsd pour que vous voyez le contexte. Les 2 premiers blocs sont des énumérations, donc on zappe. Le dernier bloc c'est la racine du fichier.

    Donc mon problème se trouve en ligne 12. Maintenant je me pose la question: le xs:unique est-il au bon endroit? ne devrait-il pas se trouver un niveau au dessus dans l'arborescence xsd. (c'était pour cela que j'avais tout mis). Et ce qui ne va pas, c'est si je mets 2 attributs Rank à la même valeur, aucun erreur n'est détectée.

    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
    <!--La structure des champs de recherche-->
        <xs:complexType name="FieldsType">
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="FieldSeek">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="vs:SeekInvoiceNumberIn">
                    <xs:attribute name="Rank" type="xs:int" use="required" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
              <xs:unique name="uniqueFieldRank">
                <xs:selector xpath=".//FieldSeek"/>
                <xs:field xpath="vs:FieldsType/@Rank"/>
              </xs:unique>
              <xs:unique name="uniqueField">
                <xs:selector xpath="vs:Fields"/>
                <xs:field xpath="FieldSeek"/>
              </xs:unique>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
     
     
      <!--L'élément Root-->
      <xsd:element name="PreferenceSettings">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Favorites" type="vs:FavoritesType"/>
            <xsd:element name="Fields" type="vs:FieldsType"/>
          </xsd:sequence>
     
        </xsd:complexType
    Merci d'avance

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Citation Envoyé par touftouf57 Voir le message
    Pardon, tu trouves le fichier long. J'ai mis tout le xsd pour que vous voyez le contexte.
    C'est vrai que donner du contexte c'est pas une mauvaise idée, mais :

    - En mettant absolument tout, on se noie trop. Le mieux est de simplifier le problème en enlevant tout ce qui n'a aucun rapport avec ce que tu veux faire, avoir le même problème dans ce cas, et montrer ça. Ça s'appelle analyser.
    J'aimerais qu'il n'y ait besoin qu'on te dise cela qu'une seule fois dans ta vie. Si ça n'avait pas été fait avant, maintenant c'est fait. C'est valide pour tout, toujours. Et en particulier pour l'informatique où les choses sont faciles à isoler.

    - Sans exemple de fichier XML (et de la contrainte qu'ils doivent respecter,) c'est rude. D'ailleurs il n'y en a toujours pas. Je ne plaisantais pas, tu sais.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 19h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 09h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 18h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 17h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 13h16

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