*** xpath.c	Fri Sep  8 17:58:53 2006
--- xpath.c.fixed	Fri Sep  8 17:55:47 2006
***************
*** 48,60 ****
  	xmlXPathObjectPtr result;
  	int i;
  	xmlChar *keyword;
  		
  	if (argc <= 1) {
! 		printf("Usage: %s docname\n", argv[0]);
  		return(0);
  	}
  
! 	if (argc >= 2)
  	{
  		xpath = argv[2];
  	}
--- 48,61 ----
  	xmlXPathObjectPtr result;
  	int i;
  	xmlChar *keyword;
+ 	xmlNodePtr	node;
  		
  	if (argc <= 1) {
! 		printf("Usage: %s docname [query]\n", argv[0]);
  		return(0);
  	}
  
! 	if (argc > 2)
  	{
  		xpath = argv[2];
  	}
***************
*** 65,73 ****
  	if (result) {
  		nodeset = result->nodesetval;
  		for (i=0; i < nodeset->nodeNr; i++) {
! 			keyword = xmlNodeListGetString(doc, nodeset->nodeTab[i]->xmlChildrenNode, 1);
! 		printf("keyword: %s\n", keyword);
! 		xmlFree(keyword);
  		}
  		xmlXPathFreeObject (result);
  	}
--- 66,88 ----
  	if (result) {
  		nodeset = result->nodesetval;
  		for (i=0; i < nodeset->nodeNr; i++) {
! 			node = nodeset->nodeTab[i];
! 			if (node->type != XML_TEXT_NODE)
! 			{
! 				node = node->children;
! 				while (node != NULL && node->type != XML_TEXT_NODE)
! 				{
! 					node = node->next;
! 				}
! 			}
! 			if (node == NULL)
! 			{
! 				printf("keyword does not exist\n");
! 			}
! 			else
! 			{
! 				printf("keyword: %s\n", node->content);
! 			}
  		}
  		xmlXPathFreeObject (result);
  	}
***************
*** 75,77 ****
--- 90,93 ----
  	xmlCleanupParser();
  	return (1);
  }
+ 
