Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a24408f339b42e5c

Jump to content

Expat (software)

From Wikipedia, the free encyclopedia
Expat
Original authorJames Clark
DevelopersClark Cooper, et al.
Release1998; 28 years ago (1998)
Stable release
2.8.2[1] Edit this on Wikidata / 25 June 2026; 37 days ago (25 June 2026)
Written inC
Operating systemPortable
TypeXML parser library
LicenseMIT License[2]
Websitelibexpat.github.io
Repository

Expat is a stream-oriented XML 1.0 parser library, written in C, more precisely C99.[3] As one of the first available open-source XML parsers, Expat has found a place in many open-source projects. Such projects include the Apache HTTP Server, Mozilla, Perl, Python and PHP. It is also bound in many other languages.

Naming

[edit]

According to the original creator, the name Expat came from the fact that he was an expat at the time.[citation needed] The "ex" and the "pa" are for XML and parsing.

Timeline

[edit]

Software developer James Clark released version 1.0 in 1998 while serving as technical lead on the XML Working Group at the World Wide Web Consortium.[citation needed] Clark released two more versions, 1.1 and 1.2, before turning the project over to a group led by Clark Cooper and Fred Drake in 2000. The new group released version 1.95.0 in September 2000 and continues to release new versions to incorporate bug fixes and enhancements.

Versions up to 2.5.0 have a Score 7.5 (High) DoS vulnerability CVE-2023-52425.[4][5]

Availability

[edit]

GitHub hosts the Expat project. Versions exist for most[quantify] major[citation needed] operating-systems.

Deployment

[edit]

To use the Expat library, programs first register handler functions with Expat. When Expat parses an XML document, it calls the registered handlers as it finds relevant tokens in the input stream. These tokens and their associated handler calls are called events. Typically, programs register handler functions for XML element start or stop events and character events. Expat provides facilities for more sophisticated event handling such as XML Namespace declarations, processing instructions and DTD events.

Expat's parsing events resemble the events defined in the Simple API for XML (SAX), but Expat is not a SAX-compliant parser. Projects incorporating the Expat library often build SAX and possibly DOM parsers on top of Expat. While Expat is mainly a stream-based (push) parser, it supports stopping and restarting parsing at arbitrary times, thus making the implementation of a pull parser relatively easy as well.

References

[edit]
  1. libexpat. "Release 2.8.2 · libexpat/libexpat". Retrieved 25 June 2026.
  2. "COPYING". Github. Retrieved 16 September 2019.
  3. Pipping, Sebastian (2024-02-06). "Expat 2.6.0 released, includes security fixes". www.xml.com. Retrieved 2024-09-04.
  4. "NVD - cve-2023-52425". nvd.nist.gov. Retrieved 2025-04-22.
  5. "CVE-2023-52425". security-tracker.debian.org. Retrieved 2025-04-22.
[edit]