From b38bd55ae57f12ec87281a945a6b50c9688604d3 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Tue, 3 Apr 2001 18:22:00 +0000 Subject: [PATCH] - testXPath.c : added a --tree option allowing to display the tree dump of the XPath expression Daniel --- ChangeLog | 5 +++++ testXPath.c | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 94b7ea69..c5786383 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Apr 3 20:20:51 CEST 2001 Daniel Veillard + + * testXPath.c : added a --tree option allowing to display the + tree dump of the XPath expression + Mon Apr 2 17:13:51 CEST 2001 Daniel Veillard * xpath.c: fixed a memleak when comparing nodesets diff --git a/testXPath.c b/testXPath.c index d7f2a976..424380b0 100644 --- a/testXPath.c +++ b/testXPath.c @@ -50,6 +50,7 @@ static int xptr = 0; static int debug = 0; static int valid = 0; static int expr = 0; +static int tree = 0; static xmlDocPtr document = NULL; /* @@ -102,8 +103,19 @@ testXPath(const char *str) { ctxt->node = xmlDocGetRootElement(document); if (expr) res = xmlXPathEvalExpression(BAD_CAST str, ctxt); - else - res = xmlXPathEval(BAD_CAST str, ctxt); + else { + /* res = xmlXPathEval(BAD_CAST str, ctxt); */ + xmlXPathCompExprPtr comp; + + comp = xmlXPathCompile(BAD_CAST str); + if (comp != NULL) { + if (tree) + xmlXPathDebugDumpCompExpr(stdout, comp, 0); + + res = xmlXPathCompiledEval(comp, ctxt); + } else + res = NULL; + } #if defined(LIBXML_XPTR_ENABLED) } #endif @@ -157,6 +169,8 @@ int main(int argc, char **argv) { valid++; if ((!strcmp(argv[i], "-expr")) || (!strcmp(argv[i], "--expr"))) expr++; + if ((!strcmp(argv[i], "-tree")) || (!strcmp(argv[i], "--tree"))) + tree++; if ((!strcmp(argv[i], "-i")) || (!strcmp(argv[i], "--input"))) filename = argv[++i]; if ((!strcmp(argv[i], "-f")) || (!strcmp(argv[i], "--file"))) @@ -191,6 +205,7 @@ int main(int argc, char **argv) { printf("\t--xptr : expressions are XPointer expressions\n"); #endif printf("\t--expr : debug XPath expressions only\n"); + printf("\t--tree : show the compiled XPath tree\n"); printf("\t--input filename : or\n"); printf("\t-i filename : read the document from filename\n"); printf("\t--file : or\n");