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 :

Validation avec �num�ration sur la base de la d�pendance d'un attribut ? [XSD]


Sujet :

Valider XML

  1. #1
    Membre confirm�
    Profil pro
    ERP + Oracle + VBA Excel
    Inscrit en
    Juin 2005
    Messages
    58
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activit� : ERP + Oracle + VBA Excel
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Par d�faut Validation avec �num�ration sur la base de la d�pendance d'un attribut ?
    Bonjour,

    Je tourne en rond avec un probl�me, avec un dictionnaire d�partement / fonction.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <depliste>
    	<departement value="30">Production
    		<fonction value="30000">Ouvrier qualifié</fonction>
    		<fonction value="30100">Ouvrier</fonction>
    	</departement>
    	<departement value="31">Direction
    		<fonction value="31000">Directeur</fonction>
    		<fonction value="31100">Administrateur</fonction>
    	</departement>
    </depliste>
    J'arrive bien � valider le d�partement sur l'attribut "value" et s�par�ment l'�num�ration des fonctions, mais je n'arrive pas � faire une d�pendance departement-fonction. Le d�partement "Production" n'a que les fonctions 30000 et 30100.
    J'ai vu ce tuto, https://xml.developpez.com/faq/?page...selon_attribut, mais n'ai pas de variation sur l'attribut.

  2. #2
    Membre confirm�
    Profil pro
    ERP + Oracle + VBA Excel
    Inscrit en
    Juin 2005
    Messages
    58
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activit� : ERP + Oracle + VBA Excel
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Par d�faut
    J'ai trouv� la solution avec xs:assert et l'h�ritage de l'�l�ment parent puis pour finir une �num�ration.
    Le seul b�mol : Il faut pour cela passer en version XSD 1.1 (donc avoir un outil de validation compatible)

    L'h�ritage du code du d�partement : permet de r�cup�rer la valeur du code dans l'�l�ment enfant
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <xs:attribute name="Depvalue" type="xs:int" inheritable="true"/>
    L'assert sur les premi�res positions du code de la fonction (p.ex dep=30 et fonction=30 000)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    <xs:attribute ref="Foncvalue" use="required"/>
    <xs:assert test="matches(substring(string(@Foncvalue),1,3), string(//@Depvalue))" 
    L'�num�ration qui permet de valider le code fonction.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    <xs:simpleType name="code_value">
    		<xs:restriction base="xs:int">
    			<xs:enumeration value="30000"/>
    			<xs:enumeration value="30100"/>
    			<xs:enumeration value="31000"/>
    			<xs:enumeration value="31100"/>
    		</xs:restriction>
    </xs:simpleType>
    le XSD en entier.

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">
    
    	<xs:element name="depliste" type="T_depliste"/>
    
    	<xs:attribute name="Depvalue" type="xs:int" inheritable="true"/>
    	
    	<xs:attribute name="Foncvalue" type="code_value"/>
    	
    	<xs:complexType name="T_depliste">
    		<xs:sequence>
    			<xs:element name="departement" type="T2_departement" maxOccurs="unbounded"/>
    		</xs:sequence>
    	</xs:complexType>
    	
    	<xs:complexType name="T3_fonction">
    		<xs:simpleContent>
    			<xs:extension base="ST3_fonction">
    				<xs:attribute ref="Foncvalue" use="required"/>
    				<xs:assert test="matches(substring(string(@Foncvalue),1,3), string(//@Depvalue))" />
    			</xs:extension>
    
    		</xs:simpleContent>
    	</xs:complexType>
    	<xs:complexType name="T2_departement" mixed="true">
    		<xs:sequence>
    			<xs:element name="fonction" type="T3_fonction" maxOccurs="unbounded"/>
    		</xs:sequence>
    		<xs:attribute ref="Depvalue" use="required"/>
    	</xs:complexType>
    	
    	<xs:simpleType name="ST3_fonction">
    		<xs:restriction base="xs:string"/>
    	</xs:simpleType>
    	
    	<xs:simpleType name="code_value">
    		<xs:restriction base="xs:int">
    			<xs:enumeration value="30000"/>
    			<xs:enumeration value="30100"/>
    			<xs:enumeration value="31000"/>
    			<xs:enumeration value="31100"/>
    		</xs:restriction>
    	</xs:simpleType>
    	
    </xs:schema>

  3. #3
    Mod�rateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par d�faut
    La n�cessit� du 1.1 est un assez gros b�mol, dans la mesure o� tu vas vite te rendre compte que personne ne le g�re (si tu fais du XML avec validation, c'est pas pour rester seul dans ton coin avec le validateur que tu as trouv�.)

    Raison pour laquelle j'avais pr�vu d�s que j'ai le temps de montrer comment le lien que tu avais trouv�, pouvait s'adapter � ton cas. Seulement voil�, il n�cessite des attributs xsi:type dans ton document XML, que tu n'as sans doute pas envie d'ajouter. Pas de solution r�aliste donc. Fondamentalement, c'est une v�rification que XSD n'est pas cens� faire.

    Mais si tu es satisfait de ce que tu as, tant mieux.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirm�
    Profil pro
    ERP + Oracle + VBA Excel
    Inscrit en
    Juin 2005
    Messages
    58
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activit� : ERP + Oracle + VBA Excel
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Juin 2005
    Messages : 58
    Par d�faut Co-occurrence Constraints et Conditional Type Assignment uniquement en XML Schema 1.1
    Bonjour,

    En effet c'est malheureusement le gros probl�me .

    J'�tait en premier radicalement sur cette position :
    Citation Envoy� par thelvin Voir le message
    .... Fondamentalement, c'est une v�rification que XSD n'est pas cens� faire.
    Ces recherches me permettent d'affiner en :
    Fondamentalement, c'est une v�rification que XSD n'est pas cens� faire, en tout cas dans la version 1.0 qui est encore le standard tr�s majoritairement employ�.


    Effectivement ce n'est pas pris en charge par la plus grande partie des validations disponibles, mais aussi notamment dans les biblioth�ques XML de la suite Microsoft Office (VB, VBA).
    MSXML2 ne supporte (actuellement) que la version 1.0. du XSD. Comme une grande partie des projets concern�s par ces recherches sont d�velopp�s autour du VB/VBA ....

  5. #5
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par d�faut
    Je tiens � vous signaler que le sch�ma (v1.1) ainsi arriv� n'est pas encore tout � fait correct.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <xs:assert test="matches(substring(string(@Foncvalue),1,3), string(//@Depvalue))" />
    Ceci, avec @heritable="true" sur @Depvalue de department, la fa�on correcte de simplement comme �a.
    Code xml : S�lectionner tout - Visualiser dans une fen�tre � part
    <xs:assert test="matches(substring(string(@Foncvalue),1,3), string(@Depvalue))" />
    comme si l'�l�ment poss�de l'attribut Depvalue, prenant de l'avantage de @heritage="true" de son parent. L'axes // devant lui rend l'�criture incorrecte fonctionellement en validant le xml.

    Pour une illustration, on peut ne pas mettre @heritable du tout, c'est-�-dire, false. Dans ce cas, il suffit de l'�crire comme �a.
    Code xml : S�lectionner tout - Visualiser dans une fen�tre � part
    <xs:assert test="matches(substring(string(@Foncvalue),1,3), string(parent::*/@Depvalue))" />
    ou un peu plus pouss�, dans le cas n�cessaire:
    Code xml : S�lectionner tout - Visualiser dans une fen�tre � part
    <xs:assert test="matches(substring(string(@Foncvalue),1,3), string(ancestor::*/@Depvalue))" />

    Voil� ! un tr�s bon effort. Comme vous �tes dans une position de mieux appr�cier sch�ma v1.1, vous pouvez consulter mes interventions ant�rieures:
    http://www.developpez.net/forums/d11...valeurs-texte/
    http://www.developpez.net/forums/d13...es-dattributs/

    Je remarque aussi que, dans ce cas-ci, il n'est pas question de lier aux cas ou un besoin de xsi:type soit n�cessaire ou, par extrapolation, ainsi �vit�. Ce n'est pas de cas du tout ici. Et puis, les travaux des gens pour mettre en place de sch�ma v1.1 dans le projet xerces-j encore en beta sont tout � fait louables et je trouve insupportable en les raillant comme travailler dans un petit coin et n'appr�cier que par un tout petit monde. Je dirais que les bigoterie et ignorance passent, seules restent le progr�s m�ritoire des sciences et les travaux s�rieux.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Requ�te avec select sur 3 bases
    Par maloue dans le forum D�veloppement
    R�ponses: 1
    Dernier message: 20/07/2015, 12h07
  2. Probl�me de date avec Coldfusion sur une base Oracle
    Par HappyTreeFred dans le forum Coldfusion
    R�ponses: 7
    Dernier message: 13/02/2009, 08h33
  3. [ODBC] Pb de requ�te avec jointure sur 2 bases
    Par Invit� dans le forum PHP & Base de donn�es
    R�ponses: 3
    Dernier message: 12/12/2006, 16h46
  4. Probl�me avec les indexes sur une base de donn�es.
    Par osoudee dans le forum MS SQL Server
    R�ponses: 1
    Dernier message: 09/02/2006, 09h24
  5. Probl�mes m�moire avec le bde sur des bases paradox
    Par Keke des Iles dans le forum Bases de donn�es
    R�ponses: 2
    Dernier message: 27/05/2004, 16h55

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