Dilib, module SxmlNode, flots de données Sxml

De Wicri Outils
LogoDilib.gif
Panneau travaux.png
Bibliothèque Dilib (ressources numériques)
Module SxmlNode

Cette page introduit les réflexions normatives liées à la reprise de développements sur la plateforme Dilib à partir d'aout 2012.

 

Les applications visées par la bibliothèque DILIB

Dans les applications purement orientées Web le respect des spécifications du W3C s'impose pour des raisons évidentes d'interopérabilité. Un navigateur doit être capable de traiter n'importe quel type de documents.

La bibliothèque Dilib utilise Xml comme un élément universel de structuration pour un large spectre d'applications où l'on peut vouloir manipuler des dizaines de milliers de documents de structures beaucoup plus simples qu'une page web. Il est donc essentiel de pouvoir manipuler facilement de simples fragments Xml sans vouloir les rattacher explicitement à un schéma ou à une DTD.

Flots de donnes DILIB

Flots de données tabulées Unix

La plateforme Dilib est très fortement insérée dans le système Unix, initialement conçu pour des applications de génie logiciel dans lesquelles la documentation et la gestion des sources sont une contrainte importante.

Unix contient donc un nombre important de commandes de base, par exemple grep, qui permettent de manipuler des flots de ligne.

Un ensemble d'outils Unix ont également été développés pour gérer des enregistrements de type « tuple d'une base de données » en utilisant la tabulation comme séparateur de zones.

Flots de données Sxml

Pour permettre l'utilisation de ces commandes avec des données XML des conventions particulières symbolisées par le code Sxml ont été adoptées. La principale est la suivante :

  • pour permettre une gestion Unix d'un flot de documents XML, le caractère saut de ligne est un séparateur de document. Son usage est interdit au sein d'un document.

Conventions de codage

Les caractères « saut de ligne » et « tabulation » sont strictement réservés à la structuration du flot de données.

Clé Sxml

De nombreuses commandes Dilib utilisent un préfixage de documents Sxml par une donnée séparée du document proprement dit par une tabulation. On désignera cette première partie par « clé Sxml ».

Par exemple, un début de fichier Hfd aura la forme suivante (on précisera ici clé HFD):

000000 ⇥ <record> premier document Sxml </record>
000001 ⇥ <record> deuxième document Sxml </record>

Les clés Sxml sont alors respectivement 000000 et 000001.

Tables StrDict

La bibliothèque Dilib utilise également des tables d'association qui sont codées avec le même mécanisme (voir le module StrDict).

Les objets Xml manipulés par Dilib

En mémoire, la bibliothèque Dilib manipule donc des arbres Xml sans recourir à une DTD explicite. Pour convertir une chaîne en arbre Xml, il suffit d'appeler le parser, par le constructeur SxmlFromString. Ainsi le programme suivant est valide :

#include "SxmlNode.h"
main()
{
    SxmlNode *intro;
    intro=SxmlFromString("<body><hello>World</hello></body>");
    SxmlPrint(SxmlFirstChild(intro));  /* imprimera <hello>World</hello> */
}

Dans un flot de données, le format Stream Xml cherche une compatibilité avec les conventions Unix afin de pouvoir manipuler des commandes telles que grep, sort ou tail. Ceci introduit alors quelques contraintes telles que l'interdiction des sauts de ligne au sein d'un document Xml. De même le caractère « tabulation » sera utilisé pour regrouper des objets Xml ou des chaînes dans la même ligne Unix.

Voir aussi

Dans le réseau Wicri :

La page de référence « Dilib, module SxmlNode, flots de données Sxml » est sur le wiki Wicri/Métadonnées.