Précédent   Forum du club des développeurs et IT Pro > Autres langages > XML/XSL et SOAP > Valider
Valider W3C XML Schemas, DTD, Relax NG, Schematron...) et tout ce qui permet de les mettre en oeuvre. Avant de poster -> FAQ XML, Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/04/2012, 10h14   #1
vigon
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 38
Points : 10
Points : 10
Par défaut complexType contenant plusieurs indicateurs (all, choice, etc)

Bonjour à tous,

Je tente de réaliser un schéma aussi contraignant que possible pour des mesures de laboratoire et butte sur un point.

Mes mesures doivent être datées et affublées d'une heure de mesure. Ces informations sont parfois données sur un set de mesure (heure de début et heure de fin) et parfois sur chaque mesure individuellement.

Je détaille un peu : ma balise "mfile" représente virtuellement un fichier de prise de mesures. Elle possède l'élément "filename" qui donne le "vrai" fichier d'où viennent les infos, parfois "une date, une heure de début, une heure de fin" (si ce n'est pas donné dans les mesures par la suite), suivi d'un set de mesures (en nombre quelconque) représentées chacune par la balise "m".

Ces mesures "m" peuvent contenir : une date et un temps (si pas donné avant), une série de mesures de température, résistance, pression etc...

Voici ce que ça donne (qui fonctionne) pour le moment (je vous ai extrait l'élément mfile, lui-même fils de quelques éléments mais je vous épargne le reste en bonne âme que je suis!)

Code :
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
 
      <xs:element name="mfile" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="filename" type="xs:string" minOccurs="1" maxOccurs="1"/>
            <xs:element name="date" type="xs:date" minOccurs="0" maxOccurs="1"/>
            <xs:element name="time" type="limittime" minOccurs="0" maxOccurs="2"/>
            <xs:element name="m" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:choice minOccurs="1" maxOccurs="unbounded">
                        <xs:element name="date" type="xs:date"/>
                        <xs:element name="time" type="xs:time"/>
                        <xs:element name="r" type="measurement"/>
                        <xs:element name="t" type="measurement"/>
                        <xs:element name="rh" type="measurement"/>
                        <xs:element name="p" type="measurement"/>
                        <xs:element name="v" type="measurement"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="type" type="xs:string" use="required"/>
          <xs:attribute name="device" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
J'aimerais maintenant être plus contraignant sur les histoires de temps. Je veux que si on donne une date à un endroit (soit avant le set de mesures soit dans les mesures), on donne obligatoirement une heure. J'ai pensé utiliser un type "dateTime", je tenterai d'implémenter ça comme ça.

Mais j'aimerais surtout pouvoir faire en sorte que si les indications de temps ont été données en tant que "date début et fin" elles ne puissent plus l'être dans les mesures et réciproquement!

Mes habitudes de programmateurs voudraient utiliser une sorte de booléen et du "if/else" mais je doute que ce soit possible... Une idée?
vigon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h53.


 
 
 
 
Partenaires

Hébergement Web