SXML in Racket:   Tools for XML and HTML
1 Introduction
2 Confusion
3 Tools
4 Appendix:   SXML/  xexp
5 History
6 Legal

SXML in Racket: Tools for XML and HTML

Neil Van Dyke <>

License: LGPLv3   Web:

1 Introduction

SXML is a computer representation of XML, originally defined by Oleg Kiselyov for the Scheme programming language. SXML is one of the representations of XML and HTML that is used by Racket tools. This document first clears up some confusion about the various representations, and then lists Racket tools available for SXML.

People writing SXML-related packages for Racket might wish to link to this document from the documentation of their package. For example:

This package fooifies
         #:doc '(lib "sxml-intro/sxml-intro.scrbl")
         #:indirect? #true]{SXML}
for great justice.  You know what you are doing.

Authors of SXML-related Racket packages should also have Neil add their SXML-related package to this document.

2 Confusion

First, to get some confusion out of the way... For historical reasons, there are a few different representations of XML and HTML that different Racket-based tools support:

Only the first two bulleted items above are considered “SXML” and discussed further in this document.

3 Tools

The original SXML tools by Kiselyov, et al., are all provided by the Racket sxml package:

General-purpose SXML-related tools by others include:

Packages that use SXML but are not general-purpose SXML tools:

If you’ve written an SXML-related Racket tool not listed here, please contact Neil.

4 Appendix: SXML/xexp

“SXML/xexp” and “xexp” were intended to be temporary names, to acknowledge that some tools were not strictly compliant with SXML. These names would be dropped once the SXML standard adopted the extensions and/or the tools were modified to not use the extensions. For example, the html-parsing package currently provides a html->xexp procedure, and eventually a later version of that package might provide a strictly-compliant html->sxml procedure. (In retrospect, the different names might have caused more confusion than simply calling things “SXML” even when not strictly compliant.)

The known differences of some “SXML/xexp” tools from strict SXML may include:

The above are itemized to document the known differences, not to encourage their use.

5 History

6 Legal

This document is Copyright 2016 Neil Van Dyke. Licensed under the GNU Lesser General Public License, version 3 (LGPLv3).