<?xml version="1.0" encoding="utf-8" ?>
<!-- ============================================================================= -->
<!-- Projet   : PMWS                                                               -->
<!-- Fichier  : types.rng                                                          -->
<!-- Création : 07.01.2011                                                         -->
<!-- Révision : 26.10.2011                                                         -->
<!-- Objet    : définitions de types de données                                    -->
<!-- ============================================================================= -->
<!-- Documentation :                                                               -->
<!--                                                                               -->
<!-- RELAX NG Tutorial                                                             -->
<!-- http://www.relaxng.org/tutorial-20011203.html                                 -->
<!--                                                                               -->
<!-- XML Schema schema for XML Schemas: Part 2: Datatypes                          -->
<!-- http://www.w3.org/2001/XMLSchema-datatypes                                    -->
<!-- ============================================================================= -->
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

   <define name="dt_tree_id">
      <data type="nonNegativeInteger">
         <param name="pattern">[0-9]+</param>
      </data>
   </define>

   <define name="dt_identifier20">
      <data type="string">
         <param name="pattern">[0-9a-z][0-9a-z_]{0,19}</param><!-- impossible de supprimer [0-9] dans le premier caractère à cause de l'existence de l'utilisateur 141 du client galeriebesuch -->
      </data>
   </define>

   <define name="dt_identifier30">
      <data type="string">
         <param name="pattern">[a-z][0-9a-z_]{0,29}</param>
      </data>
   </define>

   <define name="dt_page_id">
      <ref name="dt_identifier30" />
   </define>

   <define name="dt_users_id">
      <ref name="dt_identifier20" />
   </define>

   <define name="dt_webusers_id">
      <data type="string">
         <param name="pattern">[0-9a-zA-Z][0-9a-zA-Z_]{0,19}</param>
      </data>
   </define>

   <define name="dt_realm_id">
      <ref name="dt_identifier20" />
   </define>

   <define name="dt_mail">
      <data type="string">
      <!--
         <param name="pattern">.*@.*\..*</param>

         Pour une raison inconnue, ce motif pose problème à mon serveur VPS Wind (PHP
         5.1.2, libxml 2.6.23)

			Problème constaté le 18.01.2010 avec le client vbgf, qui m'a obligé à
			désactiver la vérification du motif

			Aucun problème avec le poste evo (PHP 5.2.4-2ubuntu5.14,	2.6.31)
      -->
      </data>
   </define>

   <define name="dt_timeout">
      <data type="integer">
         <param name="minInclusive">1</param>
         <param name="maxInclusive">5400</param>
      </data>
   </define>

   <define name="dt_langs_client">
      <choice>
         <value>de</value>
         <value>en</value>
         <value>es</value>
         <value>fr</value>
         <value>it</value>
         <value>mg</value>
         <value>pt</value>
         <value>rm</value>
         <value>ru</value>
         <value>zh</value>
      </choice>
   </define>

   <define name="dt_iso8601">
      <data type="string">
         <param name="pattern">[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([+-][0-9]{2}:?[0-9]{2})?</param>
      </data>
   </define>

   <define name="dt_timestamp">
      <optional>
         <choice>
            <attribute name="users_id">
               <ref name="dt_users_id" />
            </attribute>
            <attribute name="user"><!-- TODO: éradiquer user -->
               <ref name="dt_users_id" />
            </attribute>
         </choice>
      </optional>
      <ref name="dt_iso8601" />
   </define>

   <define name="dt_md5hash">
      <data type="hexBinary">
         <param name="length">16</param>
      </data>
   </define>

</grammar>
