Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Expat (software)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Parser library}} {{Primary sources|date=November 2009}} {{Infobox software | name = Expat | logo = | screenshot = | caption = | author = [[James Clark (programmer)|James Clark]] | developer = Clark Cooper, et al. | released = {{Start date and age|1998}} | latest release version = {{wikidata|property|preferred|references|edit|P348|P548=Q2804309}} | latest release date = {{Start date and age|{{wikidata|qualifier|preferred|single|P348|P548=Q2804309|P577}}|df=yes}} | latest preview version = | latest preview date = | programming language = [[C (programming language)|C]] | operating system = Portable | platform = | genre = [[XML]] parser [[library (computer science)|library]] | license = [[MIT License]]<ref>{{cite web |title=COPYING |url=https://github.com/libexpat/libexpat/blob/master/expat/COPYING |website=Github |accessdate=16 September 2019}}</ref> | website = {{URL|https://libexpat.github.io}} }} '''Expat''' is a [[Stream (computing)|stream]]-oriented [[XML|XML 1.0]] parser [[library (computer science)|library]], written in [[C (programming language)|C]], more precisely [[C99]].<ref>{{Cite web |last=Pipping |first=Sebastian |date=2024-02-06 |title=Expat 2.6.0 released, includes security fixes |url=https://www.xml.com/news/2024-02-expat-260/ |access-date=2024-09-04 |website=www.xml.com}}</ref> As one of the first available [[open-source software|open-source]] XML parsers, Expat has found a place in many open-source projects. Such projects include the [[Apache HTTP Server]], [[Mozilla]], [[Perl]], [[Python (programming language)|Python]] and [[PHP]]. It is also [[Language binding|bound]] in many other languages. == Naming == According to the original creator, the name '''Expat''' came from the fact that he was an [[expat]] at the time.{{citation needed|date=September 2024}} The "ex" and the "pa" are for XML and parsing. == Timeline == Software developer [[James Clark (programmer)|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|date=November 2016}} 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.<ref>{{Cite web |title=NVD - cve-2023-52425 |url=https://nvd.nist.gov/vuln/detail/cve-2023-52425 |access-date=2025-04-22 |website=nvd.nist.gov}}</ref><ref>{{Cite web |title=CVE-2023-52425 |url=https://security-tracker.debian.org/tracker/CVE-2023-52425 |access-date=2025-04-22 |website=security-tracker.debian.org}}</ref> == Availability == [[GitHub]] hosts the Expat project. Versions exist for most{{Quantify|date=June 2011}} major{{Citation needed|date=June 2011}} operating-systems. == Deployment == 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|XML Namespace]] declarations, processing instructions and [[Document Type Definition|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 [[Document Object Model|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== {{Reflist}} ==External links== * [http://www.libexpat.org Expat Project Home Page] * [http://www.xml.com/pub/a/1999/09/expat/index.html ''Using Expat'', Clark Cooper, 1999] [[Category:XML parsers]] [[Category:C (programming language) libraries]] [[Category:Software using the MIT license]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite web
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Primary sources
(
edit
)
Template:Quantify
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)