#include "SxPath.h"
#include <stdio.h>
#include <string.h>

main()
{
  SxPathResult *p1;
  SxmlNode *x1;
  SxmlNode *x2;
  p1=SxPathFirstCompile("1");
  x1=SxmlFromString("<a><b>bb</b><c><d>dd</d></c></a>");
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');

  p1=SxPathFirstCompile("2/1");
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');

  p1=SxPathFirstCompile("c");
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');

  p1=SxPathFirstCompile("c/d");
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');

  p1=SxPathFirstCompile("c/d/1");
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');

  x1=SxmlFromString("<a><b>bb</b><c><d>d1</d><d>d2</d></c></a>");
  SxmlPrint(x1); putchar('\n');
  p1=SxPathFirstCompile("c/d[2]");
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');

  x1=SxmlFromString("<a><b>bb</b><c><d a=\"y\">d1</d><d a=\"x\">d2</d></c></a>");
  SxmlPrint(x1); putchar('\n');
  p1=SxPathFirstCompile("c/d@a=x");
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');

  p1=SxPathFirstCompile("c/d/attribute::a");
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');

  p1=SxPathFirstCompile("descendant::d");
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');


  p1=SxPathFirstCompileOnSxml(SxmlFromString("<child></child>"));
  SxmlPrint(p1); putchar('\n');
  x2=SxPathEvalFirst (SxmlGetFirstChildByTagName(p1,"#expression"),x1);
  SxmlPrint(x2); putchar('\n');


}
