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)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
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);
}