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] choix entre attributs et elements


Sujet :

Valider XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Par défaut [XSD] choix entre attributs et elements
    Bonsoir,

    voila j'aimerais valider l'élément xml suivant :
    <property>
    Les regles sont les suivantes : property peut soit avoir un attribut value, soit un attribut ref, soit un sous élément <list>, soit un sous élément <map>
    Le probleme est que je n'y arrive pas en xsd.

    De plus, est il possible d'imposer à un élément qu'il ait soit un attribut a, soit un attribut b, soit aucun des deux? (c'est possible avec une key mais il faut alors
    qu'un des 2 soit présent)

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Up..

    Personne pour répondre?

  3. #3
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Il faut donner un xml a valider.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Bonjour, et bien par exemple le xml suivant est valide :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <uidl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="file:/media/disk/Manex/iPrevent/compilation/src/xslt/window.xsd">
    	<translation>compilation/src/resources/translation.xml</translation>
    	<window id="screen">
    		<widget id="moduleBar">
    			<property name="modules">
    				<map>
    					<entry key="main" value="mainModule"/>
    					<entry key="t1" value="t1Module"/>
    				</map>
    			</property>
    		</widget>
    		<widget id="guiManager">
    			<property name="applicationName" value="Jafar"/>
    		</widget>
    		<property name="t1AuditableService" ref="t1AuditableService"/>
    	</window>
    </uidl>
    alors que celui ci ne l'est pas car la property de name="modules" possede une value et un element interne <map> alors qu'il ne peuvent etre la simultanement.

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <uidl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="file:/media/disk/Manex/iPrevent/compilation/src/xslt/window.xsd">
    	<translation>compilation/src/resources/translation.xml</translation>
    	<window id="screen">
    		<widget id="moduleBar">
    			<property name="modules" value="coucou">
    				<map>
    					<entry key="main" value="mainModule"/>
    					<entry key="t1" value="t1Module"/>
    				</map>
    			</property>
    		</widget>
    		<widget id="guiManager">
    			<property name="applicationName" value="Jafar"/>
    		</widget>
    		<property name="t1AuditableService" ref="t1AuditableService"/>
    	</window>
    </uidl>

  5. #5
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Et ton XSD pour les valider?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Bonjour, voici le xsd.. ce qu'il faudrait donc rajouter c'est au niveau de l'élément property, pour qu'il n'autorise que soit l'attribut value, soit l'élément list ou soit l'élément map...

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    	<xs:element name="uidl">
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element name="translation" type="translation"/>
    				<xs:element ref="window"/>
    			</xs:sequence>
    		</xs:complexType>
    	</xs:element>
    	<xs:element name="window" type="windowType">
    		<xs:unique name="uniquePropWindow">
    			<xs:selector xpath="./property"/>
    			<xs:field xpath="@name"/>
    		</xs:unique>
    	</xs:element>
    	<xs:complexType name="windowType">
    		<xs:sequence>
    			<xs:element name="description" type="descriptionType" maxOccurs="1" minOccurs="0"/>
    			<xs:element name="widget" type="widgetType" maxOccurs="unbounded" minOccurs="0">
    				<xs:unique name="uniquePropWidget">
    					<xs:selector xpath="./property"/>
    					<xs:field xpath="@name"/>
    				</xs:unique>
    			</xs:element>
    			<xs:element name="property" type="propertyType" maxOccurs="unbounded" minOccurs="0">
    			</xs:element>
    		</xs:sequence>
    		<xs:attribute ref="id" use="optional"/>
    		<xs:attribute ref="class" use="optional"/>
    		<xs:attribute ref="scope"/>
    	</xs:complexType>
    	<xs:complexType name="widgetType">
    		<xs:sequence>
    			<xs:element name="description" type="descriptionType" maxOccurs="1" minOccurs="0"/>
    			<xs:element name="widget" type="widgetType" maxOccurs="unbounded" minOccurs="0"/>
    			<xs:element name="property" type="propertyType" maxOccurs="unbounded" minOccurs="0"/>
    		</xs:sequence>
    		<xs:attribute ref="id" use="required"/>
    		<xs:attribute ref="class" use="optional"/>
    		<xs:attribute ref="scope"/>
    	</xs:complexType>
    	<xs:complexType name="propertyType">
    		<xs:choice>
    			<xs:element name="list" type="listType" maxOccurs="1" minOccurs="0"/>
    			<xs:element name="map" type="mapType" maxOccurs="1" minOccurs="0"/>
    		</xs:choice>
    		<xs:attribute ref="ref"/>
    		<xs:attribute ref="name" use="required"/>
    		<xs:attribute ref="value"/>
    	</xs:complexType>
    	<xs:complexType name="listType">
    		<xs:choice>
    			<xs:element name="widget" type="widgetType" maxOccurs="unbounded" minOccurs="1"/>
    			<xs:element name="value" type="value" maxOccurs="unbounded" minOccurs="1"/>
    		</xs:choice>
    		<xs:attribute ref="type" use="optional"/>
    	</xs:complexType>
    	<xs:complexType name="mapType">
    		<xs:sequence>
    			<xs:element name="entry" type="entryType" maxOccurs="unbounded" minOccurs="1"/>
    		</xs:sequence>
    	</xs:complexType>
    	<xs:complexType name="entryType">
    		<xs:attribute ref="key" use="required"/>
    		<xs:attribute ref="value" use="required"/>
    	</xs:complexType>
    	<xs:simpleType name="descriptionType">
    		<xs:restriction base="xs:string"/>
    	</xs:simpleType>
    	<xs:simpleType name="value">
    		<xs:restriction base="xs:string"/>
    	</xs:simpleType>
    	<xs:attribute name="id" type="xs:string"/>
    	<xs:attribute name="value" type="xs:string"/>
    	<xs:attribute name="class" type="xs:string"/>
    	<xs:attribute name="type">
    		<xs:simpleType>
    			<xs:restriction base="xs:string">
    				<xs:pattern value="(bean|value|ref)"/>
    			</xs:restriction>
    		</xs:simpleType>
    	</xs:attribute>
    	<xs:attribute name="scope" type="xs:string"/>
    	<xs:attribute name="ref" type="xs:string"/>
    	<xs:attribute name="key" type="xs:string"/>
    	<xs:attribute name="name" type="xs:string"/>
    	<xs:simpleType name="translation">
    		<xs:restriction base="xs:string"/>
    	</xs:simpleType>
    </xs:schema>

Discussions similaires

  1. création XSD choix entre X listes d'attributs
    Par Sakukun dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 08/11/2013, 18h39
  2. [Modèle Relationnel] Choix entre attribut ou entité
    Par looping dans le forum Schéma
    Réponses: 4
    Dernier message: 03/04/2009, 16h07
  3. [XSD] Choice entre attribute et element
    Par sanchou dans le forum Valider
    Réponses: 2
    Dernier message: 24/04/2008, 15h26
  4. [Débutant] Choix entre attribut par relation & aggrégation/composition ?
    Par GrandFather dans le forum Diagrammes de Classes
    Réponses: 14
    Dernier message: 04/12/2006, 10h12
  5. [XSD] Attribut ou élément
    Par be_tnt dans le forum Valider
    Réponses: 5
    Dernier message: 08/06/2006, 10h06

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