XML

Genevieve Bienvenue & Alexandre Cavalcante & Virginie Poadey

RelaxNG

Le RelaxNG peut être téléchargé ici.
<?xml version="1.0" encoding="UTF-8"?>


<!-- ALL_DPT.rng ==  pour les fichiers dpt_(13|19).xml 
     GENEVIEVE BIENVENUE, ALEXANDRE CAVALCANTE, VIRGINIE POADEY
     -->

<!--Racine du document> qui est découpée en années -->
<grammar xmlns="http://relaxng.org/ns/structure/1.0" 
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  
  <start>
    <choice>
      <ref name="data"/>
    </choice>
  </start>
  
  <define name="data">
    <element name="data">
      <oneOrMore>
        <ref name="periode"/>
      </oneOrMore>
    </element>
  </define>
  
  <!-- Une période contient des délits et des accidents -->
  <define name="periode">
    <element name="periode">
      <ref name="attlist.periode"/>
      <ref name="delits"/>
      <ref name="accidents"/>
    </element>
  </define>
  
  <!-- @attr annee qui précise de quelle année il s'agit -->
  <define name="attlist.periode" combine="interleave">
    <attribute name="annee">
      <data type="NMTOKEN"/>
    </attribute>
  </define>
  
  <!-- Les <delits> sont composés de plusieurs délits -->
  <define name="delits">
    <element name="delits">
      <oneOrMore>
        <ref name="delit"/>
      </oneOrMore>
    </element>
  </define>
  
  <!-- Pour un <delit>, on a le nombre de ce délit par mois -->
  <define name="delit">
    <element name="delit">
      <ref name="attlist.delit"/>
      <ref name="mois"/>
    </element>
  </define>
  
  <!-- @attr code se réfère à un type de délit -->
  <define name="attlist.delit" combine="interleave">
    <attribute name="code">
      <choice>
        <value>2</value>
        <value>27</value>
        <value>35</value>
        <value>36</value>
        <value>57</value>
        <value>82</value>
      </choice>
    </attribute>
  </define> 

  <!-- Les mois de l'année -->
  <define name="mois">
    <element name="mois">
      <ref name="dec"/>
      <ref name="nov"/>
      <ref name="oct"/>
      <ref name="sept"/>
      <ref name="aout"/>
      <ref name="juil"/>
      <ref name="juin"/>
      <ref name="mai"/>
      <ref name="avril"/>
      <ref name="mars"/>
      <ref name="fev"/>
      <ref name="janv"/>
    </element>
  </define>
  
  <!-- Janvier -->
  <define name="janv">
    <element name="janv">
      <text/>
    </element>
  </define>
  
  <!-- Février -->
  <define name="fev">
    <element name="fev">
      <text/>
    </element>
  </define>
  
  <!-- Mars -->
  <define name="mars">
    <element name="mars">
      <text/>
    </element>
  </define>
  
  <!-- Avril -->
  <define name="avril">
    <element name="avril">
      <text/>
    </element>
  </define>
  
  <!-- Mai -->
  <define name="mai">
    <element name="mai">
      <text/>
    </element>
  </define>  
  
  <!-- Juin -->
  <define name="juin">
    <element name="juin">
      <text/>
    </element>
  </define>

  <!-- Juillet -->
  <define name="juil">
    <element name="juil">
      <text/>
    </element>
  </define>
  
  <!-- Août -->
  <define name="aout">
    <element name="aout">
      <text/>
    </element>
  </define> 
  
  <!-- Septembre -->
  <define name="sept">
    <element name="sept">
      <text/>
    </element>
  </define>
  
  <!-- Octobre -->
  <define name="oct">
    <element name="oct">
      <text/>
    </element>
  </define>
  
  <!-- Novembre -->
  <define name="nov">
    <element name="nov">
      <text/>
    </element>
  </define>
  
  <!-- Décembre -->
  <define name="dec">
    <element name="dec">
      <text/>
    </element>
  </define> 
  
  <!-- Les accidents de la route --> 
  <define name="accidents">
    <element name="accidents">
      <oneOrMore>
        <ref name="accident"/>
      </oneOrMore>
    </element>
  </define>
  
  <!-- Un accident est composé des informations suivantes -->
  <define name="accident">
    <element name="accident">
      <ref name="attlist.accident"/>
      <ref name="date"/>
      <ref name="heure"/>
      <ref name="lumiere"/>
      <ref name="conditionsAtmosferiques"/>
      <ref name="colision"/>
      <ref name="localisation"/>
      <ref name="lieux"/>
      <ref name="vehicules"/>
      <ref name="usagers"/>
    </element>
  </define>
  
  <!-- @attr id qui réfère à un numéro unique d'accident -->
  <define name="attlist.accident" combine="interleave">
    <attribute name="id">
      <data type="NMTOKEN"/>
    </attribute>
  </define>
  
  <!-- La date de l'accident -->
  <define name="date">
    <element name="date">
      <text/>
    </element>
  </define>
  
  <!-- L'heure de l'accident -->
  <define name="heure">
    <element name="heure">
      <text/>
    </element>
  </define>
  
  <!-- S'il faisait jour ou nuit -->
  <define name="lumiere">
    <element name="lumiere">
      <text/>
    </element>
  </define> 
  
  <!-- Les conditions météos au moment de l'accident -->
  <define name="conditionsAtmosferiques">
    <element name="conditionsAtmosferiques">
      <text/>
    </element>
  </define>
  
  <!-- Le type de collision -->
  <define name="colision">
    <element name="colision">
      <text/>
    </element>
  </define>
  
  <!-- La localisation exacte de l'accident -->
  <define name="localisation">
    <element name="localisation">
      <ref name="adresse"/>
      <ref name="latitude"/>
      <ref name="longitude"/>
    </element>
  </define>
  
  <!-- Son adresse -->
  <define name="adresse">
    <element name="adresse">
      <text/>
    </element>
  </define>
  
  <!-- Sa latitude -->
  <define name="latitude">
    <element name="latitude">
      <text/>
    </element>
  </define>
  
  <!-- Sa longitude -->
  <define name="longitude">
    <element name="longitude">
      <text/>
    </element>
  </define>
  
  <!-- Les lieux de l'accident -->
  <define name="lieux">
    <element name="lieux">
      <ref name="categorie"/>
      <ref name="surface"/>
    </element>
  </define>
  
  <!-- Quel type de route -->
  <define name="categorie">
    <element name="categorie">
      <text/>
    </element>
  </define>
  
  <!-- L'état de la route -->
  <define name="surface">
    <element name="surface">
      <text/>
    </element>
  </define>
  
  <!-- Les véhicules impliqués dans l'accident -->
  <define name="vehicules">
    <element name="vehicules">
      <oneOrMore>
        <ref name="vehicule"/>
      </oneOrMore>
    </element>
  </define>
  
  <!-- Le "comportement" du véhicule -->
  <define name="vehicule">
    <element name="vehicule">
      <ref name="sens"/>
      <ref name="catv"/>
      <ref name="obstacleFixe"/>
      <ref name="obstacleMobile"/>
      <ref name="choc"/>
      <ref name="manoeuvre"/>
    </element>
  </define>
  
  <!-- Quel sens de la route -->
  <define name="sens">
    <element name="sens">
      <text/>
    </element>
  </define>
  
  <!-- La catégorie du véhicule -->  
  <define name="catv">
    <element name="catv">
      <text/>
    </element>
  </define>
  
  <!-- Si l'obstacle heurté était fixe -->
  <define name="obstacleFixe">
    <element name="obstacleFixe">
      <text/>
    </element>
  </define>
    
  <!-- Si l'obstacle heurté était mobile -->
  <define name="obstacleMobile">
    <element name="obstacleMobile">
      <text/>
    </element>
  </define>
  
  <!-- L'endroit du choc sur le véhicule -->  
  <define name="choc">
    <element name="choc">
      <text/>
    </element>
  </define>
  
  <!-- Type de manoeuvre effectué au moment de l'accident -->
  <define name="manoeuvre">
    <element name="manoeuvre">
      <text/>
    </element>
  </define>
  
  <!-- Les usagers -->
  <define name="usagers">
    <element name="usagers">
      <oneOrMore>
        <ref name="usager"/>
      </oneOrMore>
    </element>
  </define>
 
  <!-- Les usagers victimes de l'accident -->
  <define name="usager">
    <element name="usager">
      <ref name="catUsager"/>
      <ref name="gravite"/>
      <ref name="sexe"/>
      <ref name="securite"/>
      <ref name="anNaissanceUsager"/>
    </element>
  </define>
  
  <!-- Sa catégorie -->
  <define name="catUsager">
    <element name="catUsager">
      <text/>
    </element>
  </define>
  
  <!-- La gravité de l'état de l'usager -->
  <define name="gravite">
    <element name="gravite">
      <text/>
    </element>
  </define>
  
  <!-- Le sexe -->
  <define name="sexe">
    <element name="sexe">
      <text/>
    </element>
  </define>
  
  <!-- Les éléments de sécurité -->
  <define name="securite">
    <element name="securite">
      <zeroOrMore>
        <choice>
          <ref name="existence"/>
          <ref name="utilistion"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  
  <!-- Si le dispositif était présent -->
  <define name="existence">
    <element name="existence">
      <text/>
    </element>
  </define>
  
  <!-- Si le dispositif était utilisé -->
  <define name="utilistion">
    <element name="utilistion">
      <text/>
    </element>
  </define>
  
  <!-- L'année de naissance de l'usager -->
  <define name="anNaissanceUsager">
    <element name="anNaissanceUsager">
      <text/>
    </element>
  </define>  
</grammar>