Previous: XML Names, Up: XML Support [Contents][Index]
The output from the XML parser and the input to the
XML output procedure is a complex data structure composed of
a hierarchy of typed components. Each component is a record whose
fields correspond to parts of the XML structure that the
record represents. There are no special operations on these records;
each is a tuple with named subparts. The root record type is
xml-document
, which represents a complete XML
document.
Each record type type has the following associated bindings:
<type>
is a variable bound to the record-type descriptor for type. The record-type descriptor may be used as a specializer in SOS method definitions, which greatly simplifies code to dispatch on these types.
type?
is a predicate for records of type type. It accepts one
argument, which can be any object, and returns #t
if the object
is a record of this type, or #f
otherwise.
make-type
is a constructor for records of type type. It accepts one argument for each field of type, in the same order that they are written in the type description, and returns a newly-allocated record of that type.
type-field
is an accessor procedure for the field field in records of type type. It accepts one argument, which must be a record of that type, and returns the contents of the corresponding field in the record.
set-type-field!
is a modifier procedure for the field field in records of type type. It accepts two arguments: the first must be a record of that type, and the second is a new value for the corresponding field. The record’s field is modified to have the new value.
The xml-document
record is the top-level record representing a
complete XML document. Declaration is either an
xml-declaration
object or #f
. Dtd is either an
xml-dtd
object or #f
. Root is an xml-element
object. Misc-1, misc-2, and misc-3 are lists of
miscellaneous items; a miscellaneous item is either an
xml-comment
object, an xml-processing-instructions
object,
or a string of whitespace.
The xml-declaration
record represents the ‘<?xml …
?>’ declaration that optionally appears at the beginning of an
XML document. Version is a version string, typically
"1.0"
. Encoding is either an encoding string or
#f
. Standalone is either "yes"
, "no"
, or
#f
.
The xml-element
record represents general XML elements;
the bulk of a typical XML document consists of these elements.
Name is the element name (an XML name).
Attributes is a list of XML attribute objects.
Contents is a list of the contents of the element. Each element
of this list is either a string, an xml-element
record or an
xml-processing-instructions
record.
The xml-processing-instructions
record represents processing
instructions, which have the form ‘<?name … ?>’.
These instructions are intended to contain non-XML data that
will be processed by another interpreter; for example they might
contain PHP programs. The name field is the processor
name (a symbol), and the text field is the body of the
instructions (a string).
The xml-dtd
record represents a document type declaration. The
root field is an XML name for the root element of the
document. External is either an xml-external-id
record
or #f
. Internal is a list of DTD element
records (e.g. xml-!element
, xml-!attlist
, etc.).
The remaining record types are valid only within a DTD.
The xml-!element
record represents an element-type
declaration. Name is the XML name of the type being
declared (a symbol). Content-type describes the type and can
have several different values, as follows:
The xml-!attlist
record represents an attribute-list
declaration. Name is the XML name of the type for
which attributes are being declared (a symbol). Definitions is
a list of attribute definitions, each of which is a list of three
elements (name type default)
. Name is
an XML name for the name of the attribute (a symbol).
Type describes the attribute type, and can have one of the
following values:
Default describes the default value for the attribute, and can have one of the following values:
The xml-!entity
record represents a general entity declaration.
Name is an XML name for the entity. Value is the
entity’s value, either a string or an xml-external-id
record.
The xml-parameter-!entity
record represents a parameter entity
declaration. Name is an XML name for the entity.
Value is the entity’s value, either a string or an
xml-external-id
record.
The xml-unparsed-!entity
record represents an unparsed entity
declaration. Name
is an XML name for the entity.
Id is an xml-external-id
record. Notation is an
XML name for the notation.
The xml-!notation
record represents a notation declaration.
Name
is an XML name for the notation. Id is an
xml-external-id
record.
The xml-external-id
record is a reference to an external
DTD. This reference consists of two parts: id is a
public ID literal, corresponding to the ‘PUBLIC’
keyword, while uri is a system literal, corresponding to the
‘SYSTEM’ keyword. Either or both may be present, depending on
the context. Id is represented as a string, while uri is
represented as a URI record.
Previous: XML Names, Up: XML Support [Contents][Index]