Initial revision
[TestXSLT.git] / libxml2 / doc / interface.html
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"><!--
7 TD {font-family: Verdana,Arial,Helvetica}
8 BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
9 H1 {font-family: Verdana,Arial,Helvetica}
10 H2 {font-family: Verdana,Arial,Helvetica}
11 H3 {font-family: Verdana,Arial,Helvetica}
12 A: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="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>
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">
31 <form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
32 <input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
33 </form>
34 <ul>
35 <li><a href="index.html">Home</a></li>
36 <li><a href="intro.html">Introduction</a></li>
37 <li><a href="FAQ.html">FAQ</a></li>
38 <li><a href="docs.html">Documentation</a></li>
39 <li><a href="bugs.html">Reporting bugs and getting help</a></li>
40 <li><a href="help.html">How to help</a></li>
41 <li><a href="downloads.html">Downloads</a></li>
42 <li><a href="news.html">News</a></li>
43 <li><a href="XMLinfo.html">XML</a></li>
44 <li><a href="XSLT.html">XSLT</a></li>
45 <li><a href="python.html">Python and bindings</a></li>
46 <li><a href="architecture.html">libxml architecture</a></li>
47 <li><a href="tree.html">The tree output</a></li>
48 <li><a href="interface.html">The SAX interface</a></li>
49 <li><a href="xmldtd.html">Validation &amp; DTDs</a></li>
50 <li><a href="xmlmem.html">Memory Management</a></li>
51 <li><a href="encoding.html">Encodings support</a></li>
52 <li><a href="xmlio.html">I/O Interfaces</a></li>
53 <li><a href="catalog.html">Catalog support</a></li>
54 <li><a href="library.html">The parser interfaces</a></li>
55 <li><a href="entities.html">Entities or no entities</a></li>
56 <li><a href="namespaces.html">Namespaces</a></li>
57 <li><a href="upgrade.html">Upgrading 1.x code</a></li>
58 <li><a href="threads.html">Thread safety</a></li>
59 <li><a href="DOM.html">DOM Principles</a></li>
60 <li><a href="example.html">A real example</a></li>
61 <li><a href="contribs.html">Contributions</a></li>
62 <li><a href="xmlreader.html">The Reader Interface</a></li>
63 <li><a href="tutorial/index.html">Tutorial</a></li>
64 <li><a href="guidelines.html">XML Guidelines</a></li>
65 <li>
66 <a href="xml.html">flat page</a>, <a href="site.xsl">stylesheet</a>
67 </li>
68 </ul>
69 </td></tr>
70 </table>
71 <table width="100%" border="0" cellspacing="1" cellpadding="3">
72 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
73 <tr><td bgcolor="#fffacd"><ul>
74 <li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li>
75 <li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li>
76 <li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li>
77 <li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li>
78 <li><a href="ftp://xmlsoft.org/">FTP</a></li>
79 <li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li>
80 <li><a href="http://garypennington.net/libxml2/">Solaris binaries</a></li>
81 <li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li>
82 <li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li>
83 <li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml&amp;product=libxml2">Bug Tracker</a></li>
84 </ul></td></tr>
85 </table>
86 <table width="100%" border="0" cellspacing="1" cellpadding="3">
87 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
88 <tr><td bgcolor="#fffacd"><ul>
89 <li><a href="APIchunk0.html">Alphabetic</a></li>
90 <li><a href="APIconstructors.html">Constructors</a></li>
91 <li><a href="APIfunctions.html">Functions/Types</a></li>
92 <li><a href="APIfiles.html">Modules</a></li>
93 <li><a href="APIsymbols.html">Symbols</a></li>
94 </ul></td></tr>
95 </table>
96 </td></tr></table></td>
97 <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">
98 <p>Sometimes the DOM tree output is just too large to fit reasonably into
99 memory. In that case (and if you don't expect to save back the XML document
100 loaded using libxml), it's better to use the SAX interface of libxml. SAX is
101 a <strong>callback-based interface</strong> to the parser. Before parsing,
102 the application layer registers a customized set of callbacks which are
103 called by the library as it progresses through the XML input.</p>
104 <p>To get more detailed step-by-step guidance on using the SAX interface of
105 libxml, see the <a href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">nice
106 documentation</a>.written by <a href="mailto:james@daa.com.au">James
107 Henstridge</a>.</p>
108 <p>You can debug the SAX behaviour by using the <strong>testSAX</strong>
109 program located in the gnome-xml module (it's usually not shipped in the
110 binary packages of libxml, but you can find it in the tar source
111 distribution). Here is the sequence of callbacks that would be reported by
112 testSAX when parsing the example XML document shown earlier:</p>
113 <pre>SAX.setDocumentLocator()
114 SAX.startDocument()
115 SAX.getEntity(amp)
116 SAX.startElement(EXAMPLE, prop1='gnome is great', prop2='&amp;amp; linux too')
117 SAX.characters(   , 3)
118 SAX.startElement(head)
119 SAX.characters(    , 4)
120 SAX.startElement(title)
121 SAX.characters(Welcome to Gnome, 16)
122 SAX.endElement(title)
123 SAX.characters(   , 3)
124 SAX.endElement(head)
125 SAX.characters(   , 3)
126 SAX.startElement(chapter)
127 SAX.characters(    , 4)
128 SAX.startElement(title)
129 SAX.characters(The Linux adventure, 19)
130 SAX.endElement(title)
131 SAX.characters(    , 4)
132 SAX.startElement(p)
133 SAX.characters(bla bla bla ..., 15)
134 SAX.endElement(p)
135 SAX.characters(    , 4)
136 SAX.startElement(image, href='linus.gif')
137 SAX.endElement(image)
138 SAX.characters(    , 4)
139 SAX.startElement(p)
140 SAX.characters(..., 3)
141 SAX.endElement(p)
142 SAX.characters(   , 3)
143 SAX.endElement(chapter)
144 SAX.characters( , 1)
145 SAX.endElement(EXAMPLE)
146 SAX.endDocument()</pre>
147 <p>Most of the other interfaces of libxml are based on the DOM tree-building
148 facility, so nearly everything up to the end of this document presupposes the
149 use of the standard DOM tree build. Note that the DOM tree itself is built by
150 a set of registered default callbacks, without internal specific
151 interface.</p>
152 <p><a href="bugs.html">Daniel Veillard</a></p>
153 </td></tr></table></td></tr></table></td></tr></table></td>
154 </tr></table></td></tr></table>
155 </body>
156 </html>