sxml.serializer
- Serializing XML and HTML from SXML ¶This module contains a full-featured serializer from SXML into XML and HTML, partially conforming to XSLT 2.0 and XQuery 1.0 Serialization (http://www.w3.org/TR/2005/CR-xslt-xquery-serialization-20051103/). It’s more powerful than sxml:sxml->xml and sxml:sxml->html from sxml.tools.
The manual entry is mainly derived from the comments in the original source code.
• Simple SXML serializing: | ||
• Custom SXML serializing: |
The SXML serializer provides some convenient high-level converters which should be enough for most tasks.
{sxml.serializer
}
Serializes the sxml-obj into XML, with indentation to facilitate
readability by a human.
If port-or-filename is not supplied, the functions return a string that contains the serialized representation of the sxml-obj.
If port-or-filename is supplied and is a port, the functions write the serialized representation of sxml-obj to this port and return an unspecified result.
If port-or-filename is supplied and is a string, this string is treated as an output filename, the serialized representation of sxml-obj is written to that filename and an unspecified result is returned. If a file with the given name already exists, the effect is unspecified.
Note: Unlike sxml:sxml->xml
in sxml.ssax
, this
procedure requires XML attribute values to be strings.
{sxml.serializer
}
Serializes the sxml-obj into XML, without indentation.
Argument port-or-filename works like described in
srl:sxml->xml
.
{sxml.serializer
}
Serializes the sxml-obj into HTML, with indentation to
facilitate readability by a human.
Argument port-or-filename works like described in srl:sxml->xml
.
Note: Unlike sxml:sxml->html
in sxml.ssax
, this
procedure requires XML attribute values to be strings.
{sxml.serializer
}
Serializes the sxml-obj into HTML, without indentation.
Argument port-or-filename works like described in srl:sxml->xml
.
These functions provide full access to all configuration parameters of the XML serializer.
{sxml.serializer
}
Generalized serialization procedure, parameterizable with all the
serialization parameters supported by this implementation.
sxml-obj - an SXML object to serialize
port-or-filename - either #f
, a port or a string; works
like in srl:sxml->xml (Simple SXML serializing).
params - each parameter is a cons of param-name (a symbol) and param-value. The available parameter names and their values are described below:
method
- Either the symbol xml
or html
. For a
detailed explanation of the difference between XML and HTML methods,
see XSLT 2.0 and XQuery 1.0 Serialization (http://www.w3.org/TR/2005/CR-xslt-xquery-serialization-20051103/).
indent
- Whether the output XML should include whitespace for
human readability (#t
or #f
). You can also supply a
string, which will be used as the indentation unit.
omit-xml-declaration
- Whether the XML declaration should be
omitted. Default: #t
.
standalone
- Whether to define the XML document as standalone in
the XML declaration. Should be one of the symbols yes
,
no
or omit
, the later causing standalone declaration to
be suppressed. Default: omit
.
version
- The XML version used in the declaration. A string or
a number. Default: "1.0"
.
cdata-section-elements
- A list of SXML element names (as
symbols). The contents of those elements will be escaped as CDATA
sections.
ns-prefix-assig
- A list of (cons prefix namespace-uri)
,
where each prefix
is a symbol and each namespace-uri
a
string. Will serialize the given namespaces with the corresponding
prefixes.
ATTENTION: If a parameter name is unexpected or a parameter value is ill-formed, the parameter is silently ignored!
Example usage:
(srl:parameterizable '(tag (@ (attr "value")) (nested "text node") (empty)) (current-output-port) '(method . xml) ; XML output method is used by default '(indent . "\t") ; use a single tabulation to indent '(omit-xml-declaration . #f) ; add XML declaration '(standalone . yes) ; denote a standalone XML document '(version . "1.0")) ; XML version
param ::= (cons param-name param-value) param-name ::= symbol cdata-section-elements value ::= (listof sxml-elem-name) sxml-elem-name ::= symbol indent value ::= 'yes | #t | 'no | #f | whitespace-string method value ::= 'xml | 'html ns-prefix-assig value ::= (listof (cons prefix namespace-uri)) prefix ::= symbol namespace-uri ::= string omit-xml-declaration value ::= 'yes | #t | 'no | #f standalone value ::= 'yes | #t | 'no | #f | 'omit version value ::= string | number
{sxml.serializer
}
Same as srl:parameterizable
returning a string and without the
overhead of parsing parameters. This function interface may change in
future versions of the library.
{sxml.serializer
}
Same as srl:parameterizable
writing output to
port-or-filename and without the overhead of parsing parameters.
This function interface may change in
future versions of the library.