Dilib, module SxPath, protocole SxPathProc
De Wicri Outils
Révision datée du 16 juin 2017 à 19:49 par imported>Jacques Ducloy (1 révision importée)
Module SxPath |
Le protocole SxPathProc est utilisé pour utiliser les SxPath dans un processeur Sxml (SxmlProc).
Sommaire |
Liste des modules Dilib
Module SxPath
|
Exemple
à partir de la version V0.5.87
/* -*- coding: utf-8 -*- */
/**********************************************************************
*
* Programme de démonstration pour les outils de construction
* de commandes SxPath avec interprétation
*
***********************************************************************/
#include "SxmlProcessor.h"
#include "SxmlDomProc.h"
#include "SxPath.h"
#include <stdlib.h>
int main()
{
SxmlMemory *mem1;
SxmlProcessor *p1;
SxmlElement *step;
SxmlElement *stepSet;
SxmlElement *result;
SxmlElement *resultSet;
SxmlElement *resultNode;
mem1 =SxmlMemoryCreate(); /* création d'une mémoire */
p1 =SxmlProcessorCreate(mem1); /* création d'un processor sur cette mémoire */
SxmlDomMemoryInit(mem1); /* mise en mémoire des fonctions implémentant DOM */
SxPathMemoryInit(mem1); /* mise en mémoire des fonctions implémentant SxPath */
/* On initialise l'élément step avec un script xml dans lequel on appelle fisrtChild
sur un l'élément xml mess qui contient le texte Hello World
*/
step= SxmlElementCreate("xpath:first");
SxmlAppendChild(step, SxPathExpressionCreate("aa"));
SxmlAppendChild(step, SxmlFromString("<r><x></x><aa>Hello World</aa></r>"));
result= SxmlProcessorEvalToNode(p1,step); /* évaluation de step */
SxmlPrint(result); /* imprime : Hello World */
putchar ('\n');
stepSet= SxmlElementCreate("xpath:set");
SxmlAppendChild(stepSet, SxPathExpressionCreate("aa"));
SxmlAppendChild(stepSet, SxmlFromString("<r><x>xx</x><aa>Hello</aa><aa>World</aa></r>"));
resultSet= SxmlProcessorEvalToNode(p1,stepSet); /* évaluation de stepSet */
while((resultNode=SxmlNodeListNextNode(resultSet)))
{
printf("%s\n", SxmlLeafText(resultNode)); /* imprime Hello puis World */
}
exit (0);
}