Dilib, module SxmlNode, type SxmlRecord

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

Pour traiter les flots de documents Sxml, un objet nommé SxmlRecord a été introduit.

 

Introduction

Voir sur Wicri/Manuel le tutorial : Sxml, Import Export de structures XML.

Le type SxmlRecord

Un enregistrement Sxml (SxmlRecord) est un élément qui contient un élément Sxml unitaire (ligne Unix ou document) d'un flot d'entrée Sxml. Il peut être constitué de plusieurs zones séparées par des tabulations.

En interne l'élément SxmlRecord est en fait la racine de l'arbre Sxml qui correspond à un enregistrement. S'il est composé de plusieurs parties, la dernière est considérée comme un document Sxml et les premières comme des fragments XML.

Par exemple, l'enregistrement suivant :

000001 ➔ <idx><k>France</k><f>25</f></idx>

Donnera lieu à la structure suivante (les termes précédés de # sont des notations internes, propres à Dilib) :

<#record #type="SXML_NODE_RECORD">
   <#documentFragment #type="SXML_NODE_DOCUMENT_FRAGMENT">
        000001
   </#documentFragment>
   <idx #type="SXML_NODE_DOCUMENT">
         <idx #type="SXML_NODE_ELEMENT">
             <k>France</k>
             <f>25</f>
         </idx>
   </idx>
</#record>

Précisions :

  • le nœud racine est nommé (a pour SxmlNodeName()) : #record. Il a pour type xml une notation propre à Dilib : RECORD.
  • la clé HFD est un fragment de document
  • le contenu proprement dit, correspondant à la deuxième zone de l'enregistrement, est un document XML (au sens W3C) qui a pour SxmlNodeName le même nom que le "document element", ici idx.

Constructeur

SxmlRecordCreate

Accès aux composants

SxmlRecordKeyString

char *SxmlRecordKeyString(SxmlRecord *r1);

Import sur l'entrée standard

SxmlInputGetRecord

Cette fonction est disponible à partir de la version V0.6.06.

SxmlRecord *SxmlInputGetRecord();

extern char        *SxmlInputRecordKey;
extern SxmlElement *SxmlInputDocumentElement;

Cette fonction donne une valeur aux deux variables externes :

  • SxmlInputDocumentElement
  • SxmlInputRecordKey

SxmlInputGetRecordLastItem

Cette fonction est disponible à partir de la version V0.6.06.

SxmlRecord *SxmlInputGetRecordLastItem();

Cette fonction exécute SxmlInputGetRecord et renvoie un pointeur sur le dernier élément du record (par exemple, la racine du Document).

SxmlInputNextRecord

Cette fonction devient obsolète en V0.6.06. (remplacée par SxmlInputGetRecord).

Objet SxmlInputRecord

Il contient le SxmlRecord courant.

#include "SxmlNode.h"
main()
{
  SxmlNode *doc;
  while ((doc=SxmlInputNextDocumentElement())
   {
      /* traitement de doc indépendant des clés */
      SxmlPrint(SxmlInputRecord);
   }

}

Export sur l'entrée standard

La fonction SxmlPrint s'applique aux objets de type SxmlRecord. Par exemple, le programme qui suit produit une sortie conforme à l'entrée.

#include "SxmlNode.h"
main()
{
  SxmlRecord *rec;
  while ((rec=SxmlInputNextRecord())) SxmlPrint(rec);
}