Dilib, module SxmlNode, type SxmlRecord
Module SxmlNode |
Pour traiter les flots de documents Sxml, un objet nommé SxmlRecord a été introduit.
Liste des modules Dilib
Module SxmlNode
|
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);
}