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

Valider XML Discussion :

[XSD] Conditions dans XML SCHEMA


Sujet :

Valider XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [XSD] Conditions dans XML SCHEMA
    Salut a tous,
    je suis debutant en XML SCHEMA et je voulais savoir si on peux faire dans XS de la programmation conditionnelle.
    Voici un exemple pour mieux comprendre ce que je veux faire :

    J'ai le xml suivant :
    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
     
    <predicate-n-ary-operator operator-type="AND">
    	<predicate-has-element element-type="SSR">
    		<matching-predicate>
    			<predicate-property-is property-name="CODE">
    				<value>VGML</value>
    			</predicate-property-is>
    		</matching-predicate>
    	</predicate-has-element>
    	<predicate-has-element activity="added" element-type="AIR"/>
    	<predicate-has-element activity="*" element-type="REMARK">
    		<matching-predicate>
    			<predicate-property-is property-name="TYPE">
    				<value>RM</value>
    			</predicate-property-is>
    		</matching-predicate>
    	</predicate-has-element>
    </predicate-n-ary-operator>
    et je voudrais par exemple pouvoir dire dans le schema si l'attribut element_type de l'element predicate-has-element est egal a SSR alors l'attribut property-name de l'element predicate-property-is est obligatoirement egal a CODE


    Voila le schema que j'ai deja fait mais il ne comporte pas les conditions :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified">
     
      <xsd:element name="predicate-n-ary-operator">
        <xsd:complexType>
          <xsd:choice minOccurs="2" maxOccurs="unbounded">
            <xsd:element ref="predicate-has-element"/>
          </xsd:choice>
          <xsd:attribute name="operator-type" use="required">
          	<xsd:simpleType>
            	<xsd:restriction base="xsd:string">
              	     	<xsd:enumeration value="AND"/>
            	</xsd:restriction>
          	</xsd:simpleType>
          </xsd:attribute>
        </xsd:complexType>
      </xsd:element>
     
      <xsd:element name="predicate-has-element">
        <xsd:complexType>
          <xsd:choice minOccurs="0" maxOccurs="1">
            <xsd:element ref="matching-predicate"/>
          </xsd:choice>
          <xsd:attribute name="element-type" use="required">
          	<xsd:simpleType>
            	<xsd:restriction base="xsd:string">
              	     	<xsd:enumeration value="AIR"/>
              	     	<xsd:enumeration value="REMARK"/>
              	     	<xsd:enumeration value="SSR"/>
            	</xsd:restriction>
          	</xsd:simpleType>
          </xsd:attribute>      
          <xsd:attribute name="activity">
          	<xsd:simpleType>
            	<xsd:restriction base="xsd:string">
              	     	<xsd:enumeration value="*"/>
              	     	<xsd:enumeration value="added"/>
            	</xsd:restriction>
          	</xsd:simpleType>
          </xsd:attribute>
        </xsd:complexType>
      </xsd:element>
     
      <xsd:element name="matching-predicate">
        <xsd:complexType>
          <xsd:choice minOccurs="1" maxOccurs="1">
            <xsd:element ref="predicate-property-is"/>
          </xsd:choice>
        </xsd:complexType>
      </xsd:element>
     
      <xsd:element name="predicate-property-is">
        <xsd:complexType>
          <xsd:choice minOccurs="1" maxOccurs="1">
            <xsd:element ref="value"/>
          </xsd:choice>
          <xsd:attribute name="property-name" use="required">
          	<xsd:simpleType>
            	<xsd:restriction base="xsd:string">
              	     	<xsd:enumeration value="CODE"/>
              	     	<xsd:enumeration value="TYPE"/>
            	</xsd:restriction>
          	</xsd:simpleType>
          </xsd:attribute>
        </xsd:complexType>
      </xsd:element>
     
      <xsd:element name="value" type="xsd:string"/>
     
    </xsd:schema>
    Merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut,

    Non ce n'est pas possible de faire ca avec XML-Schéma. Désolé...

    faut que tu le controle par un autre moyen une feuille XSLT, un code , ...

    ++

    Thierry

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    Tout a fait d'accord, Et j'ajouterais même que tu confond la syntaxe et la sémantique de tes données XML. Un schema xml permet de savoir si un ilôt de données est conforme à une certaine syntaxe, et ton problème est un problème de sémantique. Qui découle elle de l'utilisation que tu fait de tes données. Et ce n'est qu'aux niveaux de l'utilisation des données que cela peut avoir un sens.

    Tu peut bien sûre essayer de tricher un peu, et de reporter un peu de cette sémantique dans la syntaxe, mais cela ce traduiras clairement en xml, que par la démultiplication des types d'éléments. Ainsi tu aura un élément par sens, et tous ce que tu peut agréger en un type commun, ce sont les éléments qui possède exactement la même structure (indépendamment des valeurs renseignés).

    La nuance est un peu dure à saisire, mais elle se situe exactement à l'endroit ou l'on laisse le <ANY> pour passer à du <SOME>. (en fraçais : on passe du quelconque, à quelque chose).
    Mais je n'ai pas vraiment envie de me lancer dans un débat philosophique, sur la porté du language XML. Et n'oublions pas qu'il n'est qu'un language d'echange, et non un language de sens.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci les gars. c'est ce que je pensais aussi mais c mon chef qui veut absolument qu'on controle tout par le schema xml : il m'a meme demande de changer la structure du xml pour mieux controler les donnees. Bref je crois bien que ce n'est pas faisable.
    Merci encore.

  5. #5
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Citation Envoyé par mehdi146
    il m'a meme demande de changer la structure du xml pour mieux controler les donnees. Bref je crois bien que ce n'est pas faisable.
    Tu veux dire optimiser ton schéma afin de mieux pouvoir controler ton xml?

    Si c'est ca oui c'est faisable mais après dépend l'application qui tourne derrière

    Sinon je comprend pas trop...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par virgul
    Tu veux dire optimiser ton schéma afin de mieux pouvoir controler ton xml?

    Si c'est ca oui c'est faisable mais après dépend l'application qui tourne derrière

    Sinon je comprend pas trop...
    Au fait je veux controler mes donnees avec le xml schema mais on me demande de tout controler c'est a dire gerer tous les cas mais lorsque j'ai explique a mon chef que ce n'etait faisable il m'a demande de changer carement la structure du xml pour pouvoir tout controler avec le xml schema.

Discussions similaires

  1. Condition dans XML
    Par persephone_core dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/01/2014, 14h16
  2. [XSD] insertion d'un schema dans un fichier xml
    Par legide dans le forum Valider
    Réponses: 1
    Dernier message: 28/10/2008, 07h51
  3. [XSD] Ajout de tags dans XML Schema
    Par ploxien dans le forum Valider
    Réponses: 3
    Dernier message: 20/09/2006, 13h10
  4. [XSD] Où apprendre XML Schéma ?
    Par Fildz dans le forum Valider
    Réponses: 3
    Dernier message: 03/08/2006, 09h39
  5. [XSD] [XML Schema]Validation sans mettre le xsd dans le xml
    Par sikapoch dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 07/06/2006, 14h23

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