<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>class XML_Parser_Class</TITLE> <META NAME="GENERATOR" CONTENT="DOC++ 3.4.6"> </HEAD> <body bgcolor="#ffffff" link="#0000ff" vlink="#dd0000" text="#000088" alink="9000ff"> <A HREF = "http://www.cstr.ed.ac.uk/"> <IMG align=left BORDER=0 SRC = "cstr.gif"></A> <A HREF="http://www.cstr.ed.ac.uk/projects/speech_tools.html"> <IMG BORDER=0 ALIGN=right SRC="est.jpg" width=150 height=93></A> <br> <br clear=left> <p align=right> In file ../include/rxp/XML_Parser.h:<TABLE BORDER=0><TR> <TD VALIGN=TOP><H2>class <A HREF="#DOC.DOCU">XML_Parser_Class</A></H2></TD></H2></TD></TR></TABLE> <BLOCKQUOTE>A Class of parsers, All parsers share callbacks and a list of known public IDs</BLOCKQUOTE> <HR> <DL> <P><TABLE> <DT><H3>Public Methods</H3><DD><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>XML_Parser_Class</B> ()<BR> <I>Create an object representing the class of parsers.</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>register_id</B> (<!1><A HREF="EST_Regex.html">EST_Regex</A> id_pattern, <!1><A HREF="EST_String.html">EST_String</A> directory)<BR> <I>Add a mapping from entity ID (SYSTEM or PUBLIC) to filename.</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>registered_ids</B> (<!1><A HREF="EST_TList.html">EST_TList</A><<!1><A HREF="EST_String.html">EST_String</A>> &<!1><A HREF="EST_ServiceTable.html#DOC.136.3.5">list</A>)<BR> <I>Fill in the list with the known entity ID mappings</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.9"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>Creating a parser</B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.9.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="XML_Parser.html">XML_Parser</A>* </TD><TD><B>make_parser</B> (InputSource <!1><A HREF="XML_Parser.html#DOC.190.3.6">source</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)<BR> <I>Create a parser for the RXP InputSource</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.9.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="XML_Parser.html">XML_Parser</A>* </TD><TD><B>make_parser</B> (InputSource <!1><A HREF="XML_Parser.html#DOC.190.3.6">source</A>, Entity <!1><A HREF="XML_Parser.html#DOC.190.3.7">initial_entity</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)<BR> <I>Create a parser for the RXP InputSource</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.9.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="XML_Parser.html">XML_Parser</A>* </TD><TD><B>make_parser</B> (FILE* input, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)<BR> <I>Create a parser for a stdio input stream</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.9.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A><!1><A HREF="XML_Parser.html">XML_Parser</A>* </TD><TD><B>make_parser</B> (FILE* input, const <!1><A HREF="EST_String.html">EST_String</A> desc, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)<BR> <I>Create a parser for a stdio input stream, giving a description for use in errors</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.10"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>InputSource </TD><TD><B>try_and_open</B> (Entity ent)<BR> <I>Utility which tries to open an entity called ID at places specified in the mapping of this parser class</I> </TD></TR></TABLE></P> <P><TABLE> <DT><H3>Protected Methods</H3><DD><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>static InputSource </TD><TD><B>open_entity</B> (Entity ent, void* arg)<BR> <I>Do any neccessary remappings and open a stream which reads the given entity</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A> </TD><TD><B>The callbacks.</B> <BR> <I></I> <P><TABLE> <TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3.1"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>virtual void </TD><TD><B>document_open</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)<BR> <I>Called when starting a document</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3.2"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>virtual void </TD><TD><B>document_close</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)<BR> <I>Called at the end of a document</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3.3"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>virtual void </TD><TD><B>element_open</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* <!1><A HREF="EST_Wave.html#DOC.81.5.9">name</A>, <!1><A HREF="XML_Attribute_List.html">XML_Attribute_List</A> &attributes)<BR> <I>Called when an element starts</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>virtual void </TD><TD><B>element_close</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* <!1><A HREF="EST_Wave.html#DOC.81.5.9">name</A>)<BR> <I>Called when an element ends</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>virtual void </TD><TD><B>element</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* <!1><A HREF="EST_Wave.html#DOC.81.5.9">name</A>, <!1><A HREF="XML_Attribute_List.html">XML_Attribute_List</A> &attributes)<BR> <I>Called for empty elements.</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3.6"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>virtual void </TD><TD><B>pcdata</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* chars)<BR> <I>Called for parsed character data sequences</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3.7"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>virtual void </TD><TD><B>cdata</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* chars)<BR> <I>Called for unparsed character data sequences</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3.8"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>virtual void </TD><TD><B>processing</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* instruction)<BR> <I>Called for processing directives</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.3.9"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>virtual void </TD><TD><B>error</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)<BR> <I>Called when there is an error in parsing</I> </TD></TR></TABLE></P> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.4"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>void </TD><TD><B>error</B> (<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, <!1><A HREF="EST_String.html">EST_String</A> message)<BR> <I>This can be called from any of the callbacks to present "message" as an error through the error callback, thus getting filename and line information into the message</I> </TD></TR><TR> <TD VALIGN=TOP><A HREF="#DOC.190.2.5"><IMG ALT="[more]" BORDER=0 SRC=icon1.gif></A>const char* </TD><TD><B>get_error</B> (<!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>)<BR> <I>Get the error message for the last error</I> </TD></TR></TABLE></P> </DL> <A NAME="DOC.DOCU"></A> <HR> <H2>Documentation</H2> <BLOCKQUOTE>A Class of parsers, All parsers share callbacks and a list of known public IDs</BLOCKQUOTE> <DL> <A NAME="open_entity"></A> <A NAME="DOC.190.2.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>static InputSource open_entity(Entity ent, void* arg)</B></TT> <DD>Do any neccessary remappings and open a stream which reads the given entity <DL><DT><DD></DL><P> <A NAME="The callbacks."></A> <A NAME="DOC.190.2.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> The callbacks.</B></TT> <DD> These methods can be overridden in a subclass to create a class of parsers to do whatever you want. <DL><DT><DD></DL><P><DL> <A NAME="document_open"></A> <A NAME="DOC.190.2.3.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void document_open(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)</B></TT> <DD>Called when starting a document <DL><DT><DD></DL><P> <A NAME="document_close"></A> <A NAME="DOC.190.2.3.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void document_close(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)</B></TT> <DD>Called at the end of a document <DL><DT><DD></DL><P> <A NAME="element_open"></A> <A NAME="DOC.190.2.3.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void element_open(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* <!1><A HREF="EST_Wave.html#DOC.81.5.9">name</A>, <!1><A HREF="XML_Attribute_List.html">XML_Attribute_List</A> &attributes)</B></TT> <DD>Called when an element starts <DL><DT><DD></DL><P> <A NAME="element_close"></A> <A NAME="DOC.190.2.3.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void element_close(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* <!1><A HREF="EST_Wave.html#DOC.81.5.9">name</A>)</B></TT> <DD>Called when an element ends <DL><DT><DD></DL><P> <A NAME="element"></A> <A NAME="DOC.190.2.3.5"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void element(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* <!1><A HREF="EST_Wave.html#DOC.81.5.9">name</A>, <!1><A HREF="XML_Attribute_List.html">XML_Attribute_List</A> &attributes)</B></TT> <DD>Called for empty elements. <P>Defaults to element_open(...) forllowed by element_closed(...). <DL><DT><DD></DL><P> <A NAME="pcdata"></A> <A NAME="DOC.190.2.3.6"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void pcdata(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* chars)</B></TT> <DD>Called for parsed character data sequences <DL><DT><DD></DL><P> <A NAME="cdata"></A> <A NAME="DOC.190.2.3.7"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void cdata(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* chars)</B></TT> <DD>Called for unparsed character data sequences <DL><DT><DD></DL><P> <A NAME="processing"></A> <A NAME="DOC.190.2.3.8"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void processing(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, const char* instruction)</B></TT> <DD>Called for processing directives <DL><DT><DD></DL><P> <A NAME="error"></A> <A NAME="DOC.190.2.3.9"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void error(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)</B></TT> <DD>Called when there is an error in parsing <DL><DT><DD></DL><P></DL> <A NAME="error"></A> <A NAME="DOC.190.2.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void error(<!1><A HREF="XML_Parser_Class.html">XML_Parser_Class</A> &c, <!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>, <!1><A HREF="EST_String.html">EST_String</A> message)</B></TT> <DD>This can be called from any of the callbacks to present "message" as an error through the error callback, thus getting filename and line information into the message <DL><DT><DD></DL><P> <A NAME="get_error"></A> <A NAME="DOC.190.2.5"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>const char* get_error(<!1><A HREF="XML_Parser.html">XML_Parser</A> &<!1><A HREF="XML_Parser.html#DOC.190.3.9">p</A>)</B></TT> <DD>Get the error message for the last error <DL><DT><DD></DL><P> <A NAME="XML_Parser_Class"></A> <A NAME="DOC.190.2.6"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> XML_Parser_Class()</B></TT> <DD>Create an object representing the class of parsers. <DL><DT><DD></DL><P> <A NAME="register_id"></A> <A NAME="DOC.190.2.7"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void register_id(<!1><A HREF="EST_Regex.html">EST_Regex</A> id_pattern, <!1><A HREF="EST_String.html">EST_String</A> directory)</B></TT> <DD>Add a mapping from entity ID (SYSTEM or PUBLIC) to filename. <P>The string can contain escapes like \2 which are replaced by the text matching the Nth bracketed part of the regular expression. <DL><DT><DD></DL><P> <A NAME="registered_ids"></A> <A NAME="DOC.190.2.8"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void registered_ids(<!1><A HREF="EST_TList.html">EST_TList</A><<!1><A HREF="EST_String.html">EST_String</A>> &<!1><A HREF="EST_ServiceTable.html#DOC.136.3.5">list</A>)</B></TT> <DD>Fill in the list with the known entity ID mappings <DL><DT><DD></DL><P> <A NAME="Creating a parser"></A> <A NAME="DOC.190.2.9"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> Creating a parser</B></TT> <DD> Each of these methods creates a one-shot parser which will run over the indicated text. <DL><DT><DD></DL><P><DL> <A NAME="make_parser"></A> <A NAME="DOC.190.2.9.1"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="XML_Parser.html">XML_Parser</A>* make_parser(InputSource <!1><A HREF="XML_Parser.html#DOC.190.3.6">source</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)</B></TT> <DD>Create a parser for the RXP InputSource <DL><DT><DD></DL><P> <A NAME="make_parser"></A> <A NAME="DOC.190.2.9.2"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="XML_Parser.html">XML_Parser</A>* make_parser(InputSource <!1><A HREF="XML_Parser.html#DOC.190.3.6">source</A>, Entity <!1><A HREF="XML_Parser.html#DOC.190.3.7">initial_entity</A>, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)</B></TT> <DD>Create a parser for the RXP InputSource <DL><DT><DD></DL><P> <A NAME="make_parser"></A> <A NAME="DOC.190.2.9.3"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="XML_Parser.html">XML_Parser</A>* make_parser(FILE* input, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)</B></TT> <DD>Create a parser for a stdio input stream <DL><DT><DD></DL><P> <A NAME="make_parser"></A> <A NAME="DOC.190.2.9.4"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B><!1><A HREF="XML_Parser.html">XML_Parser</A>* make_parser(FILE* input, const <!1><A HREF="EST_String.html">EST_String</A> desc, void* <!1><A HREF="XML_Parser.html#DOC.190.3.8">data</A>)</B></TT> <DD>Create a parser for a stdio input stream, giving a description for use in errors <DL><DT><DD></DL><P></DL> <A NAME="try_and_open"></A> <A NAME="DOC.190.2.10"></A> <DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>InputSource try_and_open(Entity ent)</B></TT> <DD>Utility which tries to open an entity called ID at places specified in the mapping of this parser class <DL><DT><DD></DL><P></DL> <HR><DL><DT><B>This class has no child classes.</B></DL> <DL><DT><DT><B>Friends:</B><DD> class <!1><A HREF="XML_Parser.html">XML_Parser</A><BR><DD></DL><P><P><I><A HREF="index.html">Alphabetic index</A></I> <I><A HREF="HIER.html">HTML hierarchy of classes</A> or <A HREF="HIERjava.html">Java</A></I></P><HR> <A HREF = "http://www.ed.ac.uk/"> <IMG align=right BORDER=0 SRC = "edcrest.gif"></A> <P Align=left><I>This page is part of the <A HREF="http://www.cstr.ed.ac.uk/projects/speech_tools.html"> Edinburgh Speech Tools Library</A> documentation <br> Copyright <A HREF="http://www.ed.ac.uk"> University of Edinburgh</A> 1997 <br> Contact: <A HREF="mailto:speech_toolss@cstr.ed.ac.uk"> speech_tools@cstr.ed.ac.uk </a> </P> <br clear=right>