🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #178

Type complexe avec minimum 1 enfant, mais en acceptant plusieurs

#178
From: Yves
Date: Thu, 21 Apr 2011 13:19
98 lines
3859 bytes
Bonjour,

Je dois créer un type "site" , dérivé d'un type "person" auquel
j'ajoute encore
"nue" et "gln".

Ce qui est décrit comme ceci dans mon xsd:

    <xsd:complexType name="person">
        <xsd:annotation>
        	<xsd:documentation>
        		Person identification
				Pcvqid : id (required)
				Name : Full Name (not required, but helpful)
			</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
    		<xsd:element name="pcvqid" type="xsd:int" maxOccurs="1"
minOccurs="1">
    		</xsd:element>
    		<xsd:element name="name" maxOccurs="1" minOccurs="0">
    			<xsd:simpleType>
    				<xsd:restriction base="xsd:string">
    					<xsd:pattern value="\w.*"></xsd:pattern>
    				</xsd:restriction>
    			</xsd:simpleType>
    		</xsd:element>
    	</xsd:sequence>
    </xsd:complexType>

<xsd:complexType name="site">
    	<xsd:complexContent>
    		<xsd:extension base="pcvq:person">
    			<xsd:sequence>
    				<xsd:element name="NUE" type="pcvq:NUEType" maxOccurs="1"
minOccurs="0"></xsd:element>
    				<xsd:element name="GLN" type="pcvq:GLNType" maxOccurs="1"
minOccurs="0"></xsd:element>
    			</xsd:sequence>
    		</xsd:extension>
    	</xsd:complexContent>
    </xsd:complexType>

Mon problème est que je veux recevoir au moins une des 3 informations
requises, mais je dois aussi accepter de les recevoir toutes ou juste
quelques unes d'entre elles. La balise "name" étant systématiquement
acceptée mais optionelle.

Par contre, chaque information communiquée ne peut apparaître qu'une
seule fois.

Par exemple, (sans tenir compte des patterns):

<site>
 <pcvqid>117118</site>
</site>
ou
<site>
 <pcvqid>117118</site>
<nue>9.123.564.529</nue>
</site>
ou
<site>
 <pcvqid>117118</site>
<nue>9.123.564.529</nue>
<gln>4568794519814</gln>
</site>
ou
<site>
 <pcvqid>117118</site>
 <name>Michu</name>
<nue>9.123.564.529</nue>
<gln>4568794519814</gln>
</site>

sont tous correct, mais également :
<site>
 <name>Michu</name>
<gln>4568794519814</gln>
</site>
ou
<site>
 <pcvqid>117118</site>
<nue>9.123.564.529</nue>
</site>
ainsi que n'importe quelle combinaison de ce type.

Par contre, un exemple inacceptable ressemblerait à ceci  :
<site>
 <pcvqid>117118</site>
 <name>Michu</name>
<nue>9.123.564.529</nue>
<nue>9.123.564.528</nue>
<gln>4568794519814</gln>
</site>

Comment puis-je définir ces rêgles dans mon xsd ? J'ai essayé
différentes combinaisons sans y arriver.
Technical Details
Message-ID: <f550cf71-744c-4be6-8f15-4882bdf09b14@a11g2000pro.googlegroups.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!a11g2000pro.googlegroups.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: 114f60,c4b699511cfcc3b1,start
X-Google-NewGroupId: yes
X-Google-Attributes: gid8a75585569,domainid0,public,usenet
X-Google-Language: FRENCH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!a11g2000pro.googlegroups.com!not-for-mail
From: Yves <yves@procerviq.be>
Newsgroups: fr.comp.text.xml
Subject: Type complexe avec minimum 1 enfant, mais en acceptant plusieurs
Date: Thu, 21 Apr 2011 06:19:34 -0700 (PDT)
Organization: http://groups.google.com
Lines: 98
Message-ID: <f550cf71-744c-4be6-8f15-4882bdf09b14@a11g2000pro.googlegroups.com>
NNTP-Posting-Host: 217.112.179.18
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1303391974 20639 127.0.0.1 (21 Apr 2011 13:19:34 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Thu, 21 Apr 2011 13:19:34 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: a11g2000pro.googlegroups.com; posting-host=217.112.179.18; posting-account=yqIK9woAAAC9TTphALTN1rSQGMaIs7Xq
User-Agent: G2/1.0
X-HTTP-Via: 1.0 PROXY, 1.0 Efw:8080 (squid/2.6.STABLE22)
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1.17)
 Gecko/20110121 Firefox/3.5.17 ( .NET CLR 3.5.30729),gzip(gfe)