entites.xml

Introduction

la bibliothèque Javascript Bdis est une bibliothèque simple conçue comme un intermédiaire entre la bibliothèque OpenLayers autrement plus riche et plus complexe et le module BDIS lui-même. La bibliothèque Bdis définit ainsi le concept d'entités qui sont des objets javascript possédant une information de géolocalisation (ce qui permet de les convertir en marqueurs avec OpenLayers), un identifiant, un titre ainsi que des attributs libres qui ne sont pas utilisés directement par la bibliothèque Bdis mais qui peuvent être manipulés pour faire des tris par exemple. Ces objets Entite sont eux-mêmes regroupés dans un objet Entites qui permet d'y accéder par différentes manières (via l'identifiant ou une itération sur l'ensemble des entités, par exemple).

L'objet Entites peut quant à lui être rempli « manuellement », c'est à dire par le script qui le manipule (voir Bdis.Entites.prototype.addEntite dans Entites.js), soit en se connectant par Ajax à un serveur Scrutari (voir Bdis.Entites.prototype.loadFromAjaxScrutari), soit en chargeant un fichier XML respectant la syntaxe entites.xml (voir Bdis.Entites.prototype.loadFromAjaxXml). Pour l'instant, il n'est pas possible de remplir un objet Entites en utilisant la syntaxe KML mais c'est une option envisageable dans un avenir proche. Le choix d'utiliser une syntaxe spécifique XML plutôt que le standard KML a été fait pour des raisons de simplicité et de sobriété. Il permet également de définir facilement des attributs supplémentaires qui facilitent le traitement.

Description du format XML

Le format entites.xml n'utilise pas d'espace de noms, ceci justement pour des raisons de simplicité. L'élément racine du fichier XML est l'élément <entites>, il ne possède pas d'attribut et contient un nombre illimité d'éléments <entite>.

Un élément <entite> possède un attribut @id qui est l'identifiant de l'entité et doit donc être unique (si plusieurs entités ont le même identifiant, une seule entité est incluse). Il possède un élément <titre> qui doit contenir du texte correspondant au titre de l'entité, un élément <point> possédant un attribut @lat et un attribut @lon correspondant à la latitude et la longitude de l'entité et un nombre illimité d'éléments <attr> correspondant aux attributs de l'entité.

Un élément <attr> doit posséder un attribut @key qui est la clé de l'attribut et un nombre illimité d'éléments <val> qui sont les différentes valeurs de l'attribut (un attribut est donc toujours considéré comme multivalué). Si plusieurs éléments <attr> ont la même clé, ils sont tout simplement fusionnés, il n'y a pas de conflit.

Exemples

Le fichier entites.xml avec les données de la BDIS se trouve à l'adresse suivante : http://module.la-bdis.org/bdf/_bdis/fr/pages/entites.xml

L'exemple ci-dessous est tirée d'un autre projet qui utilise également la bibliothèque Bdis. Ce projet utilise un attribut avec la clé thema pour permettre une sélection des entités en fonction de certains thèmes.

<entites>
    <entite id="11">
        <titre>Amélioration durable des ressources et du capitale agricole des familles vulnérables du Damot-Gale</titre>
        <point lat="11.4500000" lon="38.1666670"/>
        <attr key="thema">
            <val>3</val>
            <val>4</val>
        </attr>
    </entite>
    <entite id="3">
        <titre>Dynamisation de l’agriculture urbaine et périurbaine à Maputo et sa périphérie</titre>
        <point lat="-25.9666670" lon="32.4666670"/>
    </entite>
</entites>

DTD

La DTD de la syntaxe XML est la suivante :

<!ELEMENT entites ( entite+ ) >

    <!ELEMENT entite ( titre, point, attr* ) >
        <!ATTLIST entite id NMTOKEN #REQUIRED >

        <!ELEMENT titre ( #PCDATA ) >

        <!ELEMENT point EMPTY >
            <!ATTLIST point lat NMTOKEN #REQUIRED >
            <!ATTLIST point lon NMTOKEN #REQUIRED >

        <!ELEMENT attr ( val+ ) >
            <!ATTLIST attr key NMTOKEN #REQUIRED >

            <!ELEMENT val ( #PCDATA ) >