summaryrefslogtreecommitdiff
path: root/doc/tutorial/apd.html
diff options
context:
space:
mode:
authorMDT 2003 John Fleck <jfleck@inkstain.net>2003-07-24 21:48:30 +0000
committerJohn Fleck <jfleck@src.gnome.org>2003-07-24 21:48:30 +0000
commit63f3a47dbff34aa8e2075cd435bc8b19869ab4d1 (patch)
tree7f58ab87eae04491837cb69ad48ba84c250d909e /doc/tutorial/apd.html
parent597bc48bab455d2ed0b7896b28066de2f962a0a0 (diff)
downloadlibxml2-63f3a47dbff34aa8e2075cd435bc8b19869ab4d1.tar.gz
doc/tutorial/apa.html doc/tutorial/apb.html doc/tutorial/apc.html
Thu Jul 24 15:46:02 MDT 2003 John Fleck <jfleck@inkstain.net> * doc/tutorial/apa.html * doc/tutorial/apb.html * doc/tutorial/apc.html * doc/tutorial/apd.html * doc/tutorial/ape.html * doc/tutorial/apf.html * doc/tutorial/apg.html * doc/tutorial/aph.html * doc/tutorial/ar01s02.html * doc/tutorial/ar01s03.html * doc/tutorial/ar01s04.html * doc/tutorial/ar01s05.html * doc/tutorial/ar01s06.html * doc/tutorial/ar01s07.html * doc/tutorial/ar01s08.html * doc/tutorial/index.html * doc/tutorial/ix01.html * doc/tutorial/xmltutorial.pdf * doc/tutorial/xmltutorial.xml update tutorial with XPath example
Diffstat (limited to 'doc/tutorial/apd.html')
-rw-r--r--doc/tutorial/apd.html95
1 files changed, 42 insertions, 53 deletions
diff --git a/doc/tutorial/apd.html b/doc/tutorial/apd.html
index 1cbda162..be33edb1 100644
--- a/doc/tutorial/apd.html
+++ b/doc/tutorial/apd.html
@@ -1,79 +1,68 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>D. Code for Add Keyword Example</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="Libxml Tutorial"><link rel="up" href="index.html" title="Libxml Tutorial"><link rel="previous" href="apc.html" title="C. Code for Keyword Example"><link rel="next" href="ape.html" title="E. Code for Add Attribute Example"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">D. Code for Add Keyword Example</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apc.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ape.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="addkeywordappendix"></a>D. Code for Add Keyword Example</h2></div></div><div></div></div><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>D. Code for XPath Example</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="Libxml Tutorial"><link rel="up" href="index.html" title="Libxml Tutorial"><link rel="previous" href="apc.html" title="C. Code for Keyword Example"><link rel="next" href="ape.html" title="E. Code for Add Keyword Example"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">D. Code for XPath Example</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apc.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ape.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="xpathappendix"></a>D. Code for XPath Example</h2></div></div><div></div></div><p>
</p><pre class="programlisting">
-#include &lt;stdio.h&gt;
-#include &lt;string.h&gt;
-#include &lt;stdlib.h&gt;
-#include &lt;libxml/xmlmemory.h&gt;
#include &lt;libxml/parser.h&gt;
-
-void
-parseStory (xmlDocPtr doc, xmlNodePtr cur, char *keyword) {
-
- xmlNewTextChild (cur, NULL, &quot;keyword&quot;, keyword);
- return;
-}
+#include &lt;libxml/xpath.h&gt;
xmlDocPtr
-parseDoc(char *docname, char *keyword) {
-
+getdoc (char *docname) {
xmlDocPtr doc;
- xmlNodePtr cur;
-
doc = xmlParseFile(docname);
if (doc == NULL ) {
- fprintf(stderr,&quot;Document not parsed successfully. \n&quot;);
- return (NULL);
- }
-
- cur = xmlDocGetRootElement(doc);
-
- if (cur == NULL) {
- fprintf(stderr,&quot;empty document\n&quot;);
- xmlFreeDoc(doc);
- return (NULL);
- }
-
- if (xmlStrcmp(cur-&gt;name, (const xmlChar *) &quot;story&quot;)) {
- fprintf(stderr,&quot;document of the wrong type, root node != story&quot;);
- xmlFreeDoc(doc);
- return (NULL);
+ fprintf(stderr,"Document not parsed successfully. \n");
+ return NULL;
}
+
+ return doc;
+}
+
+xmlXPathObjectPtr
+getnodeset (xmlDocPtr doc, xmlChar *xpath){
- cur = cur-&gt;xmlChildrenNode;
- while (cur != NULL) {
- if ((!xmlStrcmp(cur-&gt;name, (const xmlChar *)&quot;storyinfo&quot;))){
- parseStory (doc, cur, keyword);
- }
-
- cur = cur-&gt;next;
+ xmlXPathContextPtr context;
+ xmlXPathObjectPtr result;
+
+ context = xmlXPathNewContext(doc);
+ result = xmlXPathEvalExpression(xpath, context);
+ if(xmlXPathNodeSetIsEmpty(result-&gt;nodesetval)){
+ printf("No result\n");
+ return NULL;
}
- return(doc);
+ xmlXPathFreeContext(context);
+ return result;
}
-
int
main(int argc, char **argv) {
char *docname;
- char *keyword;
xmlDocPtr doc;
-
- if (argc &lt;= 2) {
- printf(&quot;Usage: %s docname, keyword\n&quot;, argv[0]);
+ xmlChar *xpath = ("//keyword");
+ xmlNodeSetPtr nodeset;
+ xmlXPathObjectPtr result;
+ int i;
+ xmlChar *keyword;
+
+ if (argc &lt;= 1) {
+ printf("Usage: %s docname\n", argv[0]);
return(0);
}
docname = argv[1];
- keyword = argv[2];
- doc = parseDoc (docname, keyword);
- if (doc != NULL) {
- xmlSaveFormatFile (docname, doc, 0);
- xmlFreeDoc(doc);
+ doc = getdoc(docname);
+ result = getnodeset (doc, xpath);
+ if (result) {
+ nodeset = result-&gt;nodesetval;
+ for (i=0; i &lt; nodeset-&gt;nodeNr; i++) {
+ keyword = xmlNodeListGetString(doc, nodeset-&gt;nodeTab[i]-&gt;xmlChildrenNode, 1);
+ printf("keyword: %s\n", keyword);
+ }
}
-
+ xmlXPathFreeObject (result);
+ xmlFree(keyword);
+ xmlFreeDoc(doc);
+ xmlCleanupParser();
return (1);
}
</pre><p>
- </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apc.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ape.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">C. Code for Keyword Example </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> E. Code for Add Attribute Example</td></tr></table></div></body></html>
+ </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apc.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ape.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">C. Code for Keyword Example </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> E. Code for Add Keyword Example</td></tr></table></div></body></html>