Dilib, module SxPath, protocole SxPathProc

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

Le protocole SxPathProc est utilisé pour utiliser les SxPath dans un processeur Sxml (SxmlProc).

Sommaire

 

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);
}