Bonjour,

Je cherche à définir un format fichier. Ce format doit permettre l'échange de données au sein d'un projet regroupant plusieurs équipes venant de domaine très différents. Chaque équipe a déjà ses outils qu'elle développe pour répondre à ses besoins. Elles utilisent déjà un format commun (Annotation Graph XML de messieurs Bird et Lieberman) qui est une structure décrivant un graphe (orienté, acyclique, avec une unique source et un unique puit). Sauf que mis à part cette structure qui est commune, le reste est une grande pagaille : pas de typage des données, pas de nomenclature commune, etc.

Parmi les nombreuses choses que je compte faire pour réduire cette pagaille, je veux offrir un système de types aux utilisateur (les personnes qui maintiennent les outils des différentes équipes). Ces types doivent aider les logiciels à décoder les données (s'agit-il de texte, d'un nombre entier, d'un flottant, d'un tuple, d'un vecteur, d'angles, de longueurs ? en quelles unités ? etc.) et les aider à offrir un mode d'affichage/édition adapté.

Avant de me lancer dans la création de mon propre système de types (je ne pars pas de rien, j'ai eu travaillé sur de la compilation en oCaml), j'ai voulu faire le tour de se qui existe déjà. Peu importe les mot-clés que j'utilise, je tombe sur XML Schema et comment typer son XML. C'est un problème légèrement différent du mien qui souhaite proposer un typage dans mon XML.

Mais enfin, le système de type de XML Schema me semble malgré tout répondre convenablement à mon problème. Il offre le moyen de typer du XML et des langages réguliers (par les expressions régulières). Sa grammaire est déjà standardisée et il existent déjà nombres d'outils pour sa manipulation. Son plus gros défaut pour mon usage est sa "verbosité" (les définitions de types grossissent très très vite).

Mon gros problème est comment intégrer ça ?

La solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<A xmlns:xsd=="http://www.w3.org/2001/XMLSchema">
    <B name="firstObject" type="xsd:string">
       Blabla
    </B>
</A>
ne me satisfait pas du tout car ce n'est plus vraiment du XML Schema. Donc je prends la lourdeur mais sans la possibilité d'utilisé les outils existants. A ce moment là, j'utilise mon propre système de types.

Si je garde la solution XML Schema, alors je souhaite parvenir à un design pattern qui pourrait s'appeler "Container". Dans ce pattern, j'aurais le Schema de mon format de fichier (donc fixe et commun à tous) qui laisserait mes "B" non typés. Ensuite, dans mes XML (instances du premier Schema donc), j'aurais en entête un morceau de Schema disant "les noeuds verifiant telle condition sont de type...". La condition pourrait être du XPath par exemple.

Un tel pattern vous parait-il possible en XML Shcema (eg. validable sans modification par un validateur Schema) ?
Cette solution vous parait-elle viable ?

Je ne me rend pas trop compte si ce que je cherche sort du cadre de XML Schema.

Si il est possible faire tel que je l'ai présenté, cela vous parait-il utile pour faciliter l'implémentation d'un unmarshalling ?

Je suis preneur de toutes pistes (mots-clés, projets analogues avec sources à décortiquer, etc.).

Je vous avoue que j'ai un peu honte de vous demander de plancher sur mon travail. D'autant plus que je suis un grand débutant du monde XML. Je me suis formé à XML ces 3 dernières semaines. Mon domaine, c'est la vision par ordinateur et le traitement d'image.

Merci d'avance pour votre aide.
Rémi