SXML is a representation for XML in Scheme, defined by Oleg Kiselyov. “SXML/xexp” is the temporary name for a format for Racket that’s based on SXML and is mostly compatible with it. SXML/xexp is used for both HTML and XML. The current plan is, hopefully, for the “/xexp” part of the name to go away, and for SXML and SXML/xexp to merge. For now, Racket language identifiers based on SXML/xexp will have “xexp”instead of “sxml”, because we do not want to call something “SXML” if it is not strictly SXML. (And, historically, “xexp” was much more different from SXML, while we experimented with unifying SXML, SHTML, and PLT xexpr, but we have decided to move back to as compatible with SXML as practical.)
1.1 Differences with SXML
SXML/xexp can be defined as differences from SXML:
xexp syntax must be ordered as in SXML first normal form (1NF). For example, any attributes list must precede child elements. SXML/xexp tools may be permissive about accepting other orderings, but generally should not emit any ordering but 1NF ordering.
The SXML keyword symbols, such as *TOP* may be in lowercase (e.g., *top*)
xexp adds a special & syntax for character entity references. The syntax is (& val), where val is the symbolic name of the character as a symbol, or an integer with the numeric value of the character.