Salut

En attendant de voir si on reste sur le XML ou pas, il va falloir que
je fasse évoluer le format du fichier infos, car certaines parties
sont trop restrictives, et ne permettent pas de faire tout type de
Nbuild.

Par exemple, les ressources (archives, etc..) sont une donnée
obligatoire, alors qu'un paquet peut ne pas en avoir besoin (par
exemple, le paquet qui crée la structure des répertoires).

Ne connaissant pas le formalisme des schémas XML, j'ai regardé un tuto
(http://www.w3schools.com/schema/default.asp) tout en cherchant des
points précis qui me permettraient de régler mon problème.

Par exemple, voici la partie qui traite de la section 'Project' d'un
fichier infos:
<xsd:complexType name="Project">
   <xsd:sequence>
       <xsd:element name="name" type="ascii-word" />
       <xsd:element name="version" type="prj_version" />
       <xsd:element name="license" type="ascii-word" />
       <xsd:element name="author" type="non-empty-string" />
       <xsd:element name="copyright" type="non-empty-string" />
       <xsd:element name="homepage" type="URL" />
       <xsd:element name="purpose" type="Purpose" maxOccurs="unbounded" />
       <xsd:element name="domain" type="Domain">
           <!-- Each domain descriptor must be unique -->
           <xsd:unique name="domain_descriptors">
               <xsd:selector xpath="descriptor"/>
               <xsd:field xpath="." />
           </xsd:unique>
       </xsd:element>
       <xsd:element name="resources" type="Resources">
           <!-- Each ressource filename must be declared only once -->
           <xsd:unique name="resources_files">
               <xsd:selector xpath="file"/>
               <xsd:field xpath="@name" />
           </xsd:unique>
           <!-- Each file checksum must be unique -->
           <xsd:unique name="files_checksum">
               <xsd:selector xpath="file"/>
               <xsd:field xpath="@checksum" />
           </xsd:unique>
       </xsd:element>
       <xsd:element name="build" type="Build"/>
   </xsd:sequence>
</xsd:complexType>

Première chose, <xsd:sequence> implique que les éléments arrivent dans
l'ordre décrit : c'est très sectaire je trouve :-). <xsd:all>
permettrait d'être plus souple.
Ensuite, on peut mettre un attribut minOccurs="0" pour les éléments
qui ne sont pas obligatoires. Je pense qu'on pourrait le mettre sur
l'élement <xsd:element name="resources" type="Resources">.

Je compte déjà essayer juste le 'minOccurs' pour commencer. Si vous
avez des commentaires/idées/suggestions, c'est le moment.

@+

--
Richard 'riri' GILL
jabber: [EMAIL PROTECTED]
http://riri.houbathecat.info
http://nasgaia.org
http://www.gnurou.org/Writing/SmartQuestionsFr

_______________________________________________
Nasgaia-dev mailing list
[email protected]
https://mail.gna.org/listinfo/nasgaia-dev

Répondre à