racket/collects/xml/private/core.rkt
Matthew Flatt 7a8ebdab7b add `xml/xexpr'
Exports `xexpr?' and `xexpr/c' without dependencies on the rest of
the `xml' library.
2012-09-11 17:17:38 -06:00

37 lines
1.0 KiB
Racket

#lang racket/base
(require racket/contract/base)
;; Core structures needed for `xml/xexpr'
(provide (all-defined-out))
; permissive-xexprs : parameter bool
(define permissive-xexprs (make-parameter #f))
; Source = (make-source Location Location)
(define-struct source (start stop) #:transparent)
; Comment = (make-comment String)
(define-struct comment (text) #:transparent)
; Processing-instruction = (make-p-i Location Location String String)
; also represents XMLDecl
(define-struct (p-i source) (target-name instruction) #:transparent)
; Pcdata = (make-pcdata Location Location String)
(define-struct (pcdata source) (string) #:transparent)
; Cdata = (make-cdata Location Location String)
(define-struct (cdata source) (string) #:transparent)
; Section 2.2 of XML 1.1
; (XML 1.0 is slightly different and looks less restrictive)
(define (valid-char? i)
(and (exact-nonnegative-integer? i)
(or (= i #x9)
(= i #xA)
(= i #xD)
(<= #x20 i #xD7FF)
(<= #xE000 i #xFFFD)
(<= #x10000 i #x10FFFF))))