blob: 4cd30c3355ed12e9b2ea3f5546db19432c86ca2e [file] [log] [blame]
Daniel Veillard43d3f612001-11-10 11:57:23 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
Daniel Veillardc9484202001-10-24 12:35:52 +00002<html>
3<head>
Daniel Veillarde1662542002-08-28 11:50:59 +00004<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Daniel Veillardc332dab2002-03-29 14:08:27 +00005<link rel="SHORTCUT ICON" href="/favicon.ico">
Daniel Veillardc9484202001-10-24 12:35:52 +00006<style type="text/css"><!--
Daniel Veillard373a4752002-02-21 14:46:29 +00007TD {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}
Daniel Veillardb8cfbd12001-10-25 10:53:28 +000012A:link, A:visited, A:active { text-decoration: underline }
Daniel Veillardc9484202001-10-24 12:35:52 +000013--></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">
Daniel Veillard8f40f1e2002-08-28 21:18:45 +000019<a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 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>
Daniel Veillardc9484202001-10-24 12:35:52 +000020</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>
Daniel Veillard594cf0b2001-10-25 08:09:12 +000027<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">
Daniel Veillardc9484202001-10-24 12:35:52 +000029<tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr>
Daniel Veillard8acca112002-01-21 09:52:27 +000030<tr><td bgcolor="#fffacd"><ul>
Daniel Veillardc9484202001-10-24 12:35:52 +000031<li><a href="index.html">Home</a></li>
Daniel Veillardc9484202001-10-24 12:35:52 +000032<li><a href="intro.html">Introduction</a></li>
Daniel Veillardb8cfbd12001-10-25 10:53:28 +000033<li><a href="FAQ.html">FAQ</a></li>
Daniel Veillardc9484202001-10-24 12:35:52 +000034<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>
Daniel Veillard7b602b42002-01-08 13:26:00 +000039<li><a href="XMLinfo.html">XML</a></li>
Daniel Veillardc9484202001-10-24 12:35:52 +000040<li><a href="XSLT.html">XSLT</a></li>
Daniel Veillard6dbcaf82002-02-20 14:37:47 +000041<li><a href="python.html">Python and bindings</a></li>
Daniel Veillardb8cfbd12001-10-25 10:53:28 +000042<li><a href="architecture.html">libxml architecture</a></li>
Daniel Veillardc9484202001-10-24 12:35:52 +000043<li><a href="tree.html">The tree output</a></li>
44<li><a href="interface.html">The SAX interface</a></li>
Daniel Veillardb8cfbd12001-10-25 10:53:28 +000045<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>
Daniel Veillardc9484202001-10-24 12:35:52 +000051<li><a href="entities.html">Entities or no entities</a></li>
52<li><a href="namespaces.html">Namespaces</a></li>
Daniel Veillardb8cfbd12001-10-25 10:53:28 +000053<li><a href="upgrade.html">Upgrading 1.x code</a></li>
Daniel Veillard52dcab32001-10-30 12:51:17 +000054<li><a href="threads.html">Thread safety</a></li>
Daniel Veillardc9484202001-10-24 12:35:52 +000055<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>
Daniel Veillardfc59c092002-06-05 14:48:26 +000058<li><a href="tutorial/index.html">Tutorial</a></li>
Daniel Veillard594cf0b2001-10-25 08:09:12 +000059<li>
60<a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a>
61</li>
Daniel Veillardc9484202001-10-24 12:35:52 +000062</ul></td></tr>
Daniel Veillard594cf0b2001-10-25 08:09:12 +000063</table>
64<table width="100%" border="0" cellspacing="1" cellpadding="3">
Daniel Veillard3bf65be2002-01-23 12:36:34 +000065<tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
Daniel Veillard5ede35e2002-10-01 11:37:35 +000066<tr><td bgcolor="#fffacd">
67<form action="http://xmlsoft.org/search.php" enctype="application/x-www-form-urlencoded" method="GET">
68<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
69</form>
70<ul>
Daniel Veillardf8592562002-01-23 17:58:17 +000071<li><a href="APIchunk0.html">Alphabetic</a></li>
Daniel Veillard3bf65be2002-01-23 12:36:34 +000072<li><a href="APIconstructors.html">Constructors</a></li>
73<li><a href="APIfunctions.html">Functions/Types</a></li>
74<li><a href="APIfiles.html">Modules</a></li>
75<li><a href="APIsymbols.html">Symbols</a></li>
Daniel Veillard5ede35e2002-10-01 11:37:35 +000076</ul>
77</td></tr>
Daniel Veillard3bf65be2002-01-23 12:36:34 +000078</table>
79<table width="100%" border="0" cellspacing="1" cellpadding="3">
Daniel Veillard594cf0b2001-10-25 08:09:12 +000080<tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
Daniel Veillard8acca112002-01-21 09:52:27 +000081<tr><td bgcolor="#fffacd"><ul>
Daniel Veillard594cf0b2001-10-25 08:09:12 +000082<li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li>
83<li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li>
Daniel Veillard4a859202002-01-08 11:49:22 +000084<li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li>
Daniel Veillard2d347fa2002-03-17 10:34:11 +000085<li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li>
Daniel Veillard594cf0b2001-10-25 08:09:12 +000086<li><a href="ftp://xmlsoft.org/">FTP</a></li>
87<li><a href="http://www.fh-frankfurt.de/~igor/projects/libxml/">Windows binaries</a></li>
Daniel Veillarddb9dfd92001-11-26 17:25:02 +000088<li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li>
Daniel Veillardcb7543b2002-09-09 10:54:06 +000089<li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li>
Daniel Veillarde6d8e202002-05-02 06:11:10 +000090<li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li>
Daniel Veillard2d347fa2002-03-17 10:34:11 +000091<li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml&amp;product=libxml2">Bug Tracker</a></li>
Daniel Veillard594cf0b2001-10-25 08:09:12 +000092</ul></td></tr>
93</table>
94</td></tr></table></td>
Daniel Veillardc9484202001-10-24 12:35:52 +000095<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">
96<p>Sometimes the DOM tree output is just too large to fit reasonably into
97memory. In that case (and if you don't expect to save back the XML document
98loaded using libxml), it's better to use the SAX interface of libxml. SAX is
99a <strong>callback-based interface</strong> to the parser. Before parsing,
100the application layer registers a customized set of callbacks which are
101called by the library as it progresses through the XML input.</p>
102<p>To get more detailed step-by-step guidance on using the SAX interface of
103libxml, see the <a href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">nice
104documentation</a>.written by <a href="mailto:james@daa.com.au">James
105Henstridge</a>.</p>
106<p>You can debug the SAX behaviour by using the <strong>testSAX</strong>
107program located in the gnome-xml module (it's usually not shipped in the
108binary packages of libxml, but you can find it in the tar source
109distribution). Here is the sequence of callbacks that would be reported by
110testSAX when parsing the example XML document shown earlier:</p>
111<pre>SAX.setDocumentLocator()
112SAX.startDocument()
113SAX.getEntity(amp)
114SAX.startElement(EXAMPLE, prop1='gnome is great', prop2='&amp;amp; linux too')
115SAX.characters( , 3)
116SAX.startElement(head)
117SAX.characters( , 4)
118SAX.startElement(title)
119SAX.characters(Welcome to Gnome, 16)
120SAX.endElement(title)
121SAX.characters( , 3)
122SAX.endElement(head)
123SAX.characters( , 3)
124SAX.startElement(chapter)
125SAX.characters( , 4)
126SAX.startElement(title)
127SAX.characters(The Linux adventure, 19)
128SAX.endElement(title)
129SAX.characters( , 4)
130SAX.startElement(p)
131SAX.characters(bla bla bla ..., 15)
132SAX.endElement(p)
133SAX.characters( , 4)
134SAX.startElement(image, href='linus.gif')
135SAX.endElement(image)
136SAX.characters( , 4)
137SAX.startElement(p)
138SAX.characters(..., 3)
139SAX.endElement(p)
140SAX.characters( , 3)
141SAX.endElement(chapter)
142SAX.characters( , 1)
143SAX.endElement(EXAMPLE)
144SAX.endDocument()</pre>
145<p>Most of the other interfaces of libxml are based on the DOM tree-building
146facility, so nearly everything up to the end of this document presupposes the
147use of the standard DOM tree build. Note that the DOM tree itself is built by
148a set of registered default callbacks, without internal specific
149interface.</p>
Daniel Veillard3f4c40f2002-02-13 09:19:28 +0000150<p><a href="bugs.html">Daniel Veillard</a></p>
Daniel Veillardc9484202001-10-24 12:35:52 +0000151</td></tr></table></td></tr></table></td></tr></table></td>
152</tr></table></td></tr></table>
153</body>
154</html>