home *** CD-ROM | disk | FTP | other *** search
-
- <HTML>
- <HEAD>
- <TITLE>XML::Parser::Expat - Lowlevel access to James Clark's expat XML parser</TITLE>
- <LINK REL="stylesheet" HREF="../../../../Active.css" TYPE="text/css">
- <LINK REV="made" HREF="mailto:">
- </HEAD>
-
- <BODY>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> XML::Parser::Expat - Lowlevel access to James Clark's expat XML parser</P></STRONG>
- </TD></TR>
- </TABLE>
-
- <A NAME="__index__"></A>
- <!-- INDEX BEGIN -->
-
- <UL>
-
- <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
-
- <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
- <LI><A HREF="#description">DESCRIPTION</A></LI>
- <LI><A HREF="#methods">METHODS</A></LI>
- <UL>
-
- <LI><A HREF="#xml::parser::expatnb methods">XML::Parser::ExpatNB Methods</A></LI>
- </UL>
-
- <LI><A HREF="#functions">FUNCTIONS</A></LI>
- <LI><A HREF="#authors">AUTHORS</A></LI>
- </UL>
- <!-- INDEX END -->
-
- <HR>
- <P>
- <H1><A NAME="name">NAME</A></H1>
- <P>XML::Parser::Expat - Lowlevel access to James Clark's expat XML parser</P>
- <P>
- <HR>
- <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
- <UL>
- <LI>Linux</LI>
- <LI>Solaris</LI>
- <LI>Windows</LI>
- </UL>
- <HR>
- <H1><A NAME="synopsis">SYNOPSIS</A></H1>
- <PRE>
- use XML::Parser::Expat;</PRE>
- <PRE>
- $parser = new XML::Parser::Expat;
- $parser->setHandlers('Start' => \&sh,
- 'End' => \&eh,
- 'Char' => \&ch);
- open(FOO, 'info.xml') or die "Couldn't open";
- $parser->parse(*FOO);
- close(FOO);
- # $parser->parse('<foo id="me"> here <em>we</em> go </foo>');</PRE>
- <PRE>
- sub sh
- {
- my ($p, $el, %atts) = @_;
- $p->setHandlers('Char' => \&spec)
- if ($el eq 'special');
- ...
- }</PRE>
- <PRE>
- sub eh
- {
- my ($p, $el) = @_;
- $p->setHandlers('Char' => \&ch) # Special elements won't contain
- if ($el eq 'special'); # other special elements
- ...
- }</PRE>
- <P>
- <HR>
- <H1><A NAME="description">DESCRIPTION</A></H1>
- <P>This module provides an interface to James Clark's XML parser, expat. As in
- expat, a single instance of the parser can only parse one document. Calls
- to parsestring after the first for a given instance will die.</P>
- <P>Expat (and XML::Parser::Expat) are event based. As the parser recognizes
- parts of the document (say the start or end of an XML element), then any
- handlers registered for that type of an event are called with suitable
- parameters.</P>
- <P>
- <HR>
- <H1><A NAME="methods">METHODS</A></H1>
- <DL>
- <DT><STRONG><A NAME="item_new">new</A></STRONG><BR>
- <DD>
- This is a class method, the constructor for XML::Parser::Expat. Options are
- passed as keyword value pairs. The recognized options are:
- <UL>
- <LI><STRONG><A NAME="item_ProtocolEncoding">ProtocolEncoding</A></STRONG><BR>
-
- The protocol encoding name. The default is none. The expat built-in
- encodings are: <CODE>UTF-8</CODE>, <CODE>ISO-8859-1</CODE>, <CODE>UTF-16</CODE>, and <CODE>US-ASCII</CODE>.
- Other encodings may be used if they have encoding maps in one of the
- directories in the @Encoding_Path list. Setting the protocol encoding
- overrides any encoding in the XML declaration.
- <P></P>
- <LI><STRONG><A NAME="item_Namespaces">Namespaces</A></STRONG><BR>
-
- When this option is given with a true value, then the parser does namespace
- processing. By default, namespace processing is turned off. When it is
- turned on, the parser consumes <EM>xmlns</EM> attributes and strips off prefixes
- from element and attributes names where those prefixes have a defined
- namespace. A name's namespace can be found using the <A HREF="#namespace">namespace</A> method
- and two names can be checked for absolute equality with the <A HREF="#eq_name">eq_name</A>
- method.
- <P></P>
- <LI><STRONG><A NAME="item_NoExpand">NoExpand</A></STRONG><BR>
-
- Normally, the parser will try to expand references to entities defined in
- the internal subset. If this option is set to a true value, and a default
- handler is also set, then the default handler will be called when an
- entity reference is seen in text. This has no effect if a default handler
- has not been registered, and it has no effect on the expansion of entity
- references inside attribute values.
- <P></P>
- <LI><STRONG><A NAME="item_Stream_Delimiter">Stream_Delimiter</A></STRONG><BR>
-
- This option takes a string value. When this string is found alone on a line
- while parsing from a stream, then the parse is ended as if it saw an end of
- file. The intended use is with a stream of xml documents in a MIME multipart
- format. The string should not contain a trailing newline.
- <P></P>
- <LI><STRONG><A NAME="item_ErrorContext">ErrorContext</A></STRONG><BR>
-
- When this option is defined, errors are reported in context. The value
- of ErrorContext should be the number of lines to show on either side of
- the line in which the error occurred.
- <P></P>
- <LI><STRONG><A NAME="item_ParseParamEnt">ParseParamEnt</A></STRONG><BR>
-
- Unless standalone is set to ``yes'' in the XML declaration, setting this to
- a true value allows the external DTD to be read, and parameter entities
- to be parsed and expanded.
- <P></P>
- <LI><STRONG><A NAME="item_Base">Base</A></STRONG><BR>
-
- The base to use for relative pathnames or URLs. This can also be done by
- using the base method.
- <P></P></UL>
- <DT><STRONG><A NAME="item_setHandlers">setHandlers(TYPE, HANDLER [, TYPE, HANDLER [...]])</A></STRONG><BR>
- <DD>
- This method registers handlers for the various events. If no handlers are
- registered, then a call to parsestring or parsefile will only determine if
- the corresponding XML document is well formed (by returning without error.)
- This may be called from within a handler, after the parse has started.
- <P>Setting a handler to something that evaluates to false unsets that
- handler.</P>
- <P>This method returns a list of type, handler pairs corresponding to the
- input. The handlers returned are the ones that were in effect before the
- call to setHandlers.</P>
- <P>The recognized events and the parameters passed to the corresponding
- handlers are:</P>
- <UL>
- <LI><STRONG><A NAME="item_Start">Start (Parser, Element [, Attr, Val [,...]])</A></STRONG><BR>
-
- This event is generated when an XML start tag is recognized. Parser is
- an XML::Parser::Expat instance. Element is the name of the XML element that
- is opened with the start tag. The Attr & Val pairs are generated for each
- attribute in the start tag.
- <P></P>
- <LI><STRONG><A NAME="item_End">End (Parser, Element)</A></STRONG><BR>
-
- This event is generated when an XML end tag is recognized. Note that
- an XML empty tag (<foo/>) generates both a start and an end event.
- <P>There is always a lower level start and end handler installed that wrap
- the corresponding callbacks. This is to handle the context mechanism.
- A consequence of this is that the default handler (see below) will not
- see a start tag or end tag unless the default_current method is called.</P>
- <P></P>
- <LI><STRONG><A NAME="item_Char">Char (Parser, String)</A></STRONG><BR>
-
- This event is generated when non-markup is recognized. The non-markup
- sequence of characters is in String. A single non-markup sequence of
- characters may generate multiple calls to this handler. Whatever the
- encoding of the string in the original document, this is given to the
- handler in UTF-8.
- <P></P>
- <LI><STRONG><A NAME="item_Proc">Proc (Parser, Target, Data)</A></STRONG><BR>
-
- This event is generated when a processing instruction is recognized.
- <P></P>
- <LI><STRONG><A NAME="item_Comment">Comment (Parser, String)</A></STRONG><BR>
-
- This event is generated when a comment is recognized.
- <P></P>
- <LI><STRONG><A NAME="item_CdataStart">CdataStart (Parser)</A></STRONG><BR>
-
- This is called at the start of a CDATA section.
- <P></P>
- <LI><STRONG><A NAME="item_CdataEnd">CdataEnd (Parser)</A></STRONG><BR>
-
- This is called at the end of a CDATA section.
- <P></P>
- <LI><STRONG><A NAME="item_Default">Default (Parser, String)</A></STRONG><BR>
-
- This is called for any characters that don't have a registered handler.
- This includes both characters that are part of markup for which no
- events are generated (markup declarations) and characters that
- could generate events, but for which no handler has been registered.
- <P>Whatever the encoding in the original document, the string is returned to
- the handler in UTF-8.</P>
- <P></P>
- <LI><STRONG><A NAME="item_Unparsed">Unparsed (Parser, Entity, Base, Sysid, Pubid, Notation)</A></STRONG><BR>
-
- This is called for a declaration of an unparsed entity. Entity is the name
- of the entity. Base is the base to be used for resolving a relative URI.
- Sysid is the system id. Pubid is the public id. Notation is the notation
- name. Base and Pubid may be undefined.
- <P></P>
- <LI><STRONG><A NAME="item_Notation">Notation (Parser, Notation, Base, Sysid, Pubid)</A></STRONG><BR>
-
- This is called for a declaration of notation. Notation is the notation name.
- Base is the base to be used for resolving a relative URI. Sysid is the system
- id. Pubid is the public id. Base, Sysid, and Pubid may all be undefined.
- <P></P>
- <LI><STRONG><A NAME="item_ExternEnt">ExternEnt (Parser, Base, Sysid, Pubid)</A></STRONG><BR>
-
- This is called when an external entity is referenced. Base is the base to be
- used for resolving a relative URI. Sysid is the system id. Pubid is the public
- id. Base, and Pubid may be undefined.
- <P>This handler should either return a string, which represents the contents of
- the external entity, or return an open filehandle that can be read to obtain
- the contents of the external entity, or return undef, which indicates the
- external entity couldn't be found and will generate a parse error.</P>
- <P>If an open filehandle is returned, it must be returned as either a glob
- (*FOO) or as a reference to a glob (e.g. an instance of IO::Handle). The
- parser will close the filehandle after using it.</P>
- <P></P>
- <LI><STRONG><A NAME="item_Entity">Entity (Parser, Name, Val, Sysid, Pubid, Ndata)</A></STRONG><BR>
-
- This is called when an entity is declared. For internal entities, the Val
- parameter will contain the value and the remaining three parameters will
- be undefined. For external entities, the Val parameter
- will be undefined, the Sysid parameter will have the system id, the Pubid
- parameter will have the public id if it was provided (it will be undefined
- otherwise), the Ndata parameter will contain the notation for unparsed
- entities. If this is a parameter entity declaration, then a '%' will be
- prefixed to the name.
- <P>Note that this handler and the Unparsed handler above overlap. If both are
- set, then this handler will not be called for unparsed entities.</P>
- <P></P>
- <LI><STRONG><A NAME="item_Element">Element (Parser, Name, Model)</A></STRONG><BR>
-
- The element handler is called when an element declaration is found. Name is
- the element name, and Model is the content model as a string.
- <P></P>
- <LI><STRONG><A NAME="item_Attlist">Attlist (Parser, Elname, Attname, Type, Default, Fixed)</A></STRONG><BR>
-
- This handler is called for each attribute in an ATTLIST declaration.
- So an ATTLIST declaration that has multiple attributes
- will generate multiple calls to this handler. The Elname parameter is the
- name of the element with which the attribute is being associated. The Attname
- parameter is the name of the attribute. Type is the attribute type, given as
- a string. Default is the default value, which will either be ``#REQUIRED'',
- ``#IMPLIED'' or a quoted string (i.e. the returned string will begin and end
- with a quote character). If Fixed is true, then this is a fixed attribute.
- <P></P>
- <LI><STRONG><A NAME="item_Doctype">Doctype (Parser, Name, Sysid, Pubid, Internal)</A></STRONG><BR>
-
- This handler is called for DOCTYPE declarations. Name is the document type
- name. Sysid is the system id of the document type, if it was provided,
- otherwise it's undefined. Pubid is the public id of the document type,
- which will be undefined if no public id was given. Internal is the internal
- subset, given as a string. If there was no internal subset, it will be
- undefined. Internal will contain all whitespace, comments, processing
- instructions, and declarations seen in the internal subset. The declarations
- will be there whether or not they have been processed by another handler
- (except for unparsed entities processed by the Unparsed handler). However,
- comments and processing instructions will not appear if they've been processed
- by their respective handlers.
- <P></P>
- <LI><STRONG><A NAME="item_XMLDecl">XMLDecl (Parser, Version, Encoding, Standalone)</A></STRONG><BR>
-
- This handler is called for xml declarations. Version is a string containg
- the version. Encoding is either undefined or contains an encoding string.
- Standalone will be either true, false, or undefined if the standalone attribute
- is yes, no, or not made respectively.
- <P></P></UL>
- <DT><STRONG><A NAME="item_namespace"><CODE>namespace(name)</CODE></A></STRONG><BR>
- <DD>
- Return the URI of the namespace that the name belongs to. If the name doesn't
- belong to any namespace, an undef is returned. This is only valid on names
- received through the Start or End handlers from a single document, or through
- a call to the generate_ns_name method. In other words, don't use names
- generated from one instance of XML::Parser::Expat with other instances.
- <P></P>
- <DT><STRONG><A NAME="item_eq_name">eq_name(name1, name2)</A></STRONG><BR>
- <DD>
- Return true if name1 and name2 are identical (i.e. same name and from
- the same namespace.) This is only meaningful if both names were obtained
- through the Start or End handlers from a single document, or through
- a call to the generate_ns_name method.
- <P></P>
- <DT><STRONG><A NAME="item_generate_ns_name">generate_ns_name(name, namespace)</A></STRONG><BR>
- <DD>
- Return a name, associated with a given namespace, good for using with the
- above 2 methods. The namespace argument should be the namespace URI, not
- a prefix.
- <P></P>
- <DT><STRONG><A NAME="item_new_ns_prefixes">new_ns_prefixes</A></STRONG><BR>
- <DD>
- When called from a start tag handler, returns namespace prefixes declared
- with this start tag. If called elsewere (or if there were no namespace
- prefixes declared), it returns an empty list. Setting of the default
- namespace is indicated with '#default' as a prefix.
- <P></P>
- <DT><STRONG><A NAME="item_expand_ns_prefix"><CODE>expand_ns_prefix(prefix)</CODE></A></STRONG><BR>
- <DD>
- Return the uri to which the given prefix is currently bound. Returns
- undef if the prefix isn't currently bound. Use '#default' to find the
- current binding of the default namespace (if any).
- <P></P>
- <DT><STRONG><A NAME="item_current_ns_prefixes">current_ns_prefixes</A></STRONG><BR>
- <DD>
- Return a list of currently bound namespace prefixes. The order of the
- the prefixes in the list has no meaning. If the default namespace is
- currently bound, '#default' appears in the list.
- <P></P>
- <DT><STRONG><A NAME="item_recognized_string">recognized_string</A></STRONG><BR>
- <DD>
- Returns the string from the document that was recognized in order to call
- the current handler. For instance, when called from a start handler, it
- will give us the the start-tag string. The string is encoded in UTF-8.
- <P></P>
- <DT><STRONG><A NAME="item_original_string">original_string</A></STRONG><BR>
- <DD>
- Returns the verbatim string from the document that was recognized in
- order to call the current handler. The string is in the original document
- encoding.
- <P></P>
- <DT><STRONG><A NAME="item_default_current">default_current</A></STRONG><BR>
- <DD>
- When called from a handler, causes the sequence of characters that generated
- the corresponding event to be sent to the default handler (if one is
- registered). Use of this method is deprecated in favor the recognized_string
- method, which you can use without installing a default handler.
- <P></P>
- <DT><STRONG><A NAME="item_xpcroak"><CODE>xpcroak(message)</CODE></A></STRONG><BR>
- <DD>
- Concatenate onto the given message the current line number within the
- XML document plus the message implied by ErrorContext. Then croak with
- the formed message.
- <P></P>
- <DT><STRONG><A NAME="item_xpcarp"><CODE>xpcarp(message)</CODE></A></STRONG><BR>
- <DD>
- Concatenate onto the given message the current line number within the
- XML document plus the message implied by ErrorContext. Then carp with
- the formed message.
- <P></P>
- <DT><STRONG><A NAME="item_current_line">current_line</A></STRONG><BR>
- <DD>
- Returns the line number of the current position of the parse.
- <P></P>
- <DT><STRONG><A NAME="item_current_column">current_column</A></STRONG><BR>
- <DD>
- Returns the column number of the current position of the parse.
- <P></P>
- <DT><STRONG><A NAME="item_current_byte">current_byte</A></STRONG><BR>
- <DD>
- Returns the current position of the parse.
- <P></P>
- <DT><STRONG><A NAME="item_base">base([NEWBASE]);</A></STRONG><BR>
- <DD>
- Returns the current value of the base for resolving relative URIs. If
- NEWBASE is supplied, changes the base to that value.
- <P></P>
- <DT><STRONG><A NAME="item_context">context</A></STRONG><BR>
- <DD>
- Returns a list of element names that represent open elements, with the
- last one being the innermost. Inside start and end tag handlers, this
- will be the tag of the parent element.
- <P></P>
- <DT><STRONG><A NAME="item_current_element">current_element</A></STRONG><BR>
- <DD>
- Returns the name of the innermost currently opened element. Inside
- start or end handlers, returns the parent of the element associated
- with those tags.
- <P></P>
- <DT><STRONG><A NAME="item_in_element"><CODE>in_element(NAME)</CODE></A></STRONG><BR>
- <DD>
- Returns true if NAME is equal to the name of the innermost currently opened
- element. If namespace processing is being used and you want to check
- against a name that may be in a namespace, then use the generate_ns_name
- method to create the NAME argument.
- <P></P>
- <DT><STRONG><A NAME="item_within_element"><CODE>within_element(NAME)</CODE></A></STRONG><BR>
- <DD>
- Returns the number of times the given name appears in the context list.
- If namespace processing is being used and you want to check
- against a name that may be in a namespace, then use the generate_ns_name
- method to create the NAME argument.
- <P></P>
- <DT><STRONG><A NAME="item_depth">depth</A></STRONG><BR>
- <DD>
- Returns the size of the context list.
- <P></P>
- <DT><STRONG><A NAME="item_element_index">element_index</A></STRONG><BR>
- <DD>
- Returns an integer that is the depth-first visit order of the current
- element. This will be zero outside of the root element. For example,
- this will return 1 when called from the start handler for the root element
- start tag.
- <P></P>
- <DT><STRONG><A NAME="item_skip_until"><CODE>skip_until(INDEX)</CODE></A></STRONG><BR>
- <DD>
- INDEX is an integer that represents an element index. When this method
- is called, all handlers are suspended until the start tag for an element
- that has an index number equal to INDEX is seen. If a start handler has
- been set, then this is the first tag that the start handler will see
- after skip_until has been called.
- <P></P>
- <DT><STRONG><A NAME="item_position_in_context"><CODE>position_in_context(LINES)</CODE></A></STRONG><BR>
- <DD>
- Returns a string that shows the current parse position. LINES should be
- an integer >= 0 that represents the number of lines on either side of the
- current parse line to place into the returned string.
- <P></P>
- <DT><STRONG><A NAME="item_xml_escape">xml_escape(TEXT [, CHAR [, CHAR ...]])</A></STRONG><BR>
- <DD>
- Returns TEXT with markup characters turned into character entities. Any
- additional characters provided as arguments are also turned into character
- references where found in TEXT.
- <P></P>
- <DT><STRONG><A NAME="item_parse">parse (SOURCE)</A></STRONG><BR>
- <DD>
- The SOURCE parameter should either be a string containing the whole XML
- document, or it should be an open IO::Handle. Only a single document
- may be parsed for a given instance of XML::Parser::Expat, so this will croak
- if it's been called previously for this instance.
- <P></P>
- <DT><STRONG><A NAME="item_parsestring"><CODE>parsestring(XML_DOC_STRING)</CODE></A></STRONG><BR>
- <DD>
- Parses the given string as an XML document. Only a single document may be
- parsed for a given instance of XML::Parser::Expat, so this will die if either
- parsestring or parsefile has been called for this instance previously.
- <P>This method is deprecated in favor of the parse method.</P>
- <P></P>
- <DT><STRONG><A NAME="item_parsefile"><CODE>parsefile(FILENAME)</CODE></A></STRONG><BR>
- <DD>
- Parses the XML document in the given file. Will die if parsestring or
- parsefile has been called previously for this instance.
- <P></P>
- <DT><STRONG><A NAME="item_is_defaulted"><CODE>is_defaulted(ATTNAME)</CODE></A></STRONG><BR>
- <DD>
- NO LONGER WORKS. To find out if an attribute is defaulted please use
- the specified_attr method.
- <P></P>
- <DT><STRONG><A NAME="item_specified_attr">specified_attr</A></STRONG><BR>
- <DD>
- When the start handler receives lists of attributes and values, the
- non-defaulted (i.e. explicitly specified) attributes occur in the list
- first. This method returns the number of specified items in the list.
- So if this number is equal to the length of the list, there were no
- defaulted values. Otherwise the number points to the index of the
- first defaulted attribute name.
- <P></P>
- <DT><STRONG><A NAME="item_finish">finish</A></STRONG><BR>
- <DD>
- Unsets all handlers (including internal ones that set context), but expat
- continues parsing to the end of the document or until it finds an error.
- It should finish up a lot faster than with the handlers set.
- <P></P>
- <DT><STRONG><A NAME="item_release">release</A></STRONG><BR>
- <DD>
- There are data structures used by XML::Parser::Expat that have circular
- references. This means that these structures will never be garbage
- collected unless these references are explicitly broken. Calling this
- method breaks those references (and makes the instance unusable.)
- <P>Normally, higher level calls handle this for you, but if you are using
- XML::Parser::Expat directly, then it's your responsibility to call it.</P>
- <P></P></DL>
- <P>
- <H2><A NAME="xml::parser::expatnb methods">XML::Parser::ExpatNB Methods</A></H2>
- <P>The class XML::Parser::ExpatNB is a subclass of XML::Parser::Expat used
- for non-blocking access to the expat library. It does not support the parse,
- parsestring, or parsefile methods, but it does have these additional methods:</P>
- <DL>
- <DT><STRONG><A NAME="item_parse_more"><CODE>parse_more(DATA)</CODE></A></STRONG><BR>
- <DD>
- Feed expat more text to munch on.
- <P></P>
- <DT><STRONG><A NAME="item_parse_done">parse_done</A></STRONG><BR>
- <DD>
- Tell expat that it's gotten the whole document.
- <P></P></DL>
- <P>
- <HR>
- <H1><A NAME="functions">FUNCTIONS</A></H1>
- <DL>
- <DT><STRONG><A NAME="item_load_encoding">XML::Parser::Expat::load_encoding(ENCODING)</A></STRONG><BR>
- <DD>
- Load an external encoding. ENCODING is either the name of an encoding or
- the name of a file. The basename is converted to lowercase and a '.enc'
- extension is appended unless there's one already there. Then, unless
- it's an absolute pathname (i.e. begins with '/'), the first file by that
- name discovered in the @Encoding_Path path list is used.
- <P>The encoding in the file is loaded and kept in the %Encoding_Table
- table. Earlier encodings of the same name are replaced.</P>
- <P>This function is automaticly called by expat when it encounters an encoding
- it doesn't know about. Expat shouldn't call this twice for the same
- encoding name. The only reason users should use this function is to
- explicitly load an encoding not contained in the @Encoding_Path list.</P>
- <P></P></DL>
- <P>
- <HR>
- <H1><A NAME="authors">AUTHORS</A></H1>
- <P>Larry Wall <<EM><A HREF="mailto:larry@wall.org">larry@wall.org</A></EM>> wrote version 1.0.</P>
- <P>Clark Cooper <<EM><A HREF="mailto:coopercc@netheaven.com">coopercc@netheaven.com</A></EM>> picked up support, changed the API
- for this version (2.x), provided documentation, and added some standard
- package features.</P>
- <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
- <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
- <STRONG><P CLASS=block> XML::Parser::Expat - Lowlevel access to James Clark's expat XML parser</P></STRONG>
- </TD></TR>
- </TABLE>
-
- </BODY>
-
- </HTML>
-