interface.html revision e166254717384e8d4195f2a7bf08a74e1a7ebeae
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
2<html>
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
5<link rel="SHORTCUT ICON" href="/favicon.ico">
6<style type="text/css"><!--
7TD {font-family: Verdana,Arial,Helvetica}
8BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
9H1 {font-family: Verdana,Arial,Helvetica}
10H2 {font-family: Verdana,Arial,Helvetica}
11H3 {font-family: Verdana,Arial,Helvetica}
12A:link, A:visited, A:active { text-decoration: underline }
13--></style>
14<title>The SAX interface</title>
15</head>
16<body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000">
17<table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr>
18<td width="180">
19<a href="http://www.gnome.org/"><img src="smallfootonly.gif" alt="Gnome Logo"></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo"></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo"></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo"></a></div>
20</td>
21<td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center">
22<h1>The XML C library for Gnome</h1>
23<h2>The SAX interface</h2>
24</td></tr></table></td></tr></table></td>
25</tr></table>
26<table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr>
27<td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td>
28<table width="100%" border="0" cellspacing="1" cellpadding="3">
29<tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr>
30<tr><td bgcolor="#fffacd"><ul>
31<li><a href="index.html">Home</a></li>
32<li><a href="intro.html">Introduction</a></li>
33<li><a href="FAQ.html">FAQ</a></li>
34<li><a href="docs.html">Documentation</a></li>
35<li><a href="bugs.html">Reporting bugs and getting help</a></li>
36<li><a href="help.html">How to help</a></li>
37<li><a href="downloads.html">Downloads</a></li>
38<li><a href="news.html">News</a></li>
39<li><a href="XMLinfo.html">XML</a></li>
40<li><a href="XSLT.html">XSLT</a></li>
41<li><a href="python.html">Python and bindings</a></li>
42<li><a href="architecture.html">libxml architecture</a></li>
43<li><a href="tree.html">The tree output</a></li>
44<li><a href="interface.html">The SAX interface</a></li>
45<li><a href="xmldtd.html">Validation &amp; DTDs</a></li>
46<li><a href="xmlmem.html">Memory Management</a></li>
47<li><a href="encoding.html">Encodings support</a></li>
48<li><a href="xmlio.html">I/O Interfaces</a></li>
49<li><a href="catalog.html">Catalog support</a></li>
50<li><a href="library.html">The parser interfaces</a></li>
51<li><a href="entities.html">Entities or no entities</a></li>
52<li><a href="namespaces.html">Namespaces</a></li>
53<li><a href="upgrade.html">Upgrading 1.x code</a></li>
54<li><a href="threads.html">Thread safety</a></li>
55<li><a href="DOM.html">DOM Principles</a></li>
56<li><a href="example.html">A real example</a></li>
57<li><a href="contribs.html">Contributions</a></li>
58<li><a href="tutorial/index.html">Tutorial</a></li>
59<li>
60<a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a>
61</li>
62</ul></td></tr>
63</table>
64<table width="100%" border="0" cellspacing="1" cellpadding="3">
65<tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
66<tr><td bgcolor="#fffacd"><ul>
67<li><a href="APIchunk0.html">Alphabetic</a></li>
68<li><a href="APIconstructors.html">Constructors</a></li>
69<li><a href="APIfunctions.html">Functions/Types</a></li>
70<li><a href="APIfiles.html">Modules</a></li>
71<li><a href="APIsymbols.html">Symbols</a></li>
72</ul></td></tr>
73</table>
74<table width="100%" border="0" cellspacing="1" cellpadding="3">
75<tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
76<tr><td bgcolor="#fffacd"><ul>
77<li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li>
78<li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li>
79<li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li>
80<li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li>
81<li><a href="ftp://xmlsoft.org/">FTP</a></li>
82<li><a href="http://www.fh-frankfurt.de/~igor/projects/libxml/">Windows binaries</a></li>
83<li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li>
84<li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li>
85<li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml&product=libxml2">Bug Tracker</a></li>
86</ul></td></tr>
87</table>
88</td></tr></table></td>
89<td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd">
90<p>Sometimes the DOM tree output is just too large to fit reasonably into
91memory. In that case (and if you don't expect to save back the XML document
92loaded using libxml), it's better to use the SAX interface of libxml. SAX is
93a <strong>callback-based interface</strong> to the parser. Before parsing,
94the application layer registers a customized set of callbacks which are
95called by the library as it progresses through the XML input.</p>
96<p>To get more detailed step-by-step guidance on using the SAX interface of
97libxml, see the <a href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">nice
98documentation</a>.written by <a href="mailto:james@daa.com.au">James
99Henstridge</a>.</p>
100<p>You can debug the SAX behaviour by using the <strong>testSAX</strong>
101program located in the gnome-xml module (it's usually not shipped in the
102binary packages of libxml, but you can find it in the tar source
103distribution). Here is the sequence of callbacks that would be reported by
104testSAX when parsing the example XML document shown earlier:</p>
105<pre>SAX.setDocumentLocator()
106SAX.startDocument()
107SAX.getEntity(amp)
108SAX.startElement(EXAMPLE, prop1='gnome is great', prop2='&amp;amp; linux too')
109SAX.characters(   , 3)
110SAX.startElement(head)
111SAX.characters(    , 4)
112SAX.startElement(title)
113SAX.characters(Welcome to Gnome, 16)
114SAX.endElement(title)
115SAX.characters(   , 3)
116SAX.endElement(head)
117SAX.characters(   , 3)
118SAX.startElement(chapter)
119SAX.characters(    , 4)
120SAX.startElement(title)
121SAX.characters(The Linux adventure, 19)
122SAX.endElement(title)
123SAX.characters(    , 4)
124SAX.startElement(p)
125SAX.characters(bla bla bla ..., 15)
126SAX.endElement(p)
127SAX.characters(    , 4)
128SAX.startElement(image, href='linus.gif')
129SAX.endElement(image)
130SAX.characters(    , 4)
131SAX.startElement(p)
132SAX.characters(..., 3)
133SAX.endElement(p)
134SAX.characters(   , 3)
135SAX.endElement(chapter)
136SAX.characters( , 1)
137SAX.endElement(EXAMPLE)
138SAX.endDocument()</pre>
139<p>Most of the other interfaces of libxml are based on the DOM tree-building
140facility, so nearly everything up to the end of this document presupposes the
141use of the standard DOM tree build. Note that the DOM tree itself is built by
142a set of registered default callbacks, without internal specific
143interface.</p>
144<p><a href="bugs.html">Daniel Veillard</a></p>
145</td></tr></table></td></tr></table></td></tr></table></td>
146</tr></table></td></tr></table>
147</body>
148</html>
149