afnix-xpe(3)
afnix-us-xpe - xml processing environment service
Description
afnix-us-xpe
NAME
afnix-us-xpe - xml processing environment service
XML PROCESSING ENVIRONMENT SERVICE
The XML Processing Environment service is an original implementation that provides the support for processing xml document that could be accessed locally or remotely. In particular, the processing environment supports the XML include facility.
XML
content
The XmlContent class is an extension of the XML document
object that provides the service for loading a XML document
locally or from the Internet. The class operates with an
uri, which permits to selects the appropriate loader from
the uri scheme.
Content
creation
The XmlContent operates with an uri that permits to select
the appropriate loader. If the uri scheme is a file scheme,
the content is retrieved locally. If the uri scheme is http,
the content is retrieved by establishing a http connection
over the Internet.
# create a
document from a local file
const xdoc (
afnix:xpe:XmlContent
"file:///home/afnix/file.xml")
When the uri scheme is a file, the uri authority is empty (hence the double //) and the path indicates the file to parse. The XmlContent object is derived from the XmlDocument object which contains the parsed tree with the XmlRoot object.
# create a
document from a http connection
const xdoc (
afnix:xpe:XmlContent
"http://www.afnix.org/index.xht")
When the uri scheme is a http scheme, the document is downloaded by establishing an http connection with the uri authority. When the http header is received, the content is parsed to create a valid xml document. If the http response header indicates that the page has moved and a new location is provided, the object manages automatically to follow such location.
Content and
document name
Since the XmlContent object is derived from the XmlContent
object, the content object is defined with a uri name and a
document name. Under normal circumstances, the document name
is derived from the content name by normalizing it. The
content name is the object constructor name, while the
document name is the normalized document name. The get-name
method returns the content name while the get-document-name
method returns the document name.
# create a
document by name
const xdoc (afnix:xpe:XmlContent "file"
"file.xml")
In the previous example, a xml content object is created by name with a document name. It is the document name that gets normalized. Therefore in the previous example, the file.xml document name is normalized into a file uri. The normalization rule always favor the file scheme. This means that without a scheme, the file scheme is automatically added.
Content
type
Many times, the content type cannot be detected from the uri
name. Once opened, if the content header provides a clue
about the content type, the opened input stream get adjusted
automatically to reflect this fact. However, this situation
does not occurs often and with http scheme, the content type
header response does not often provides the character
encoding associated with the stream. For this reason, the
XmlContent constructor provides a mechanism to accept the
encoding mode.
# create a new
content by name and encoding mode
const xdoc (
afnix:xpe:XmlContent "file" "file.xml"
"UTF-8")
XML PROCESSING ENVIRONMENT SERVICE REFERENCE
XmlContent
The XmlContent class is an extension of the xml document
class that operates at the uri level. If the uri is a local
file the xml document is created from an input file stream.
If the uri is an url, the content is fetched automatically.
The class constructors permit to separate the content name
from the document name and also to specify the content
encoding.
Predicate
xml-content-p
Inheritance
XmlDocumentMime
Constructors
XmlContent
(String)
The XmlContent constructor creates a xml document by name.
The document name is the normalized uri name that always
favor a file scheme in the absence of it.
XmlContent
(String String)
The XmlContent constructor creates a xml document by name.
The first argument is the content name. The second argument
is the document name which is normalized to form the uri
name used to load the document.
XmlContent
(String String String)
The XmlContent constructor creates a xml document by name
and encoding mode. The first argument is the content name.
The second argument is the document name which is normalized
to form the uri name used to load the document. The third
argument is the content character encoding.
Methods
get-document-uri
-> String (none)
The get-document-uri method returns the document normalized
uri.
get-document-name
-> String (none)
The get-document-name method returns the object document
name. This method complements the get-name method which
returns the object name.
XmlFeature
The XmlFeature class is a xml processor base class that
defines a processing feature. A processing feature is
defined by name and information with a processing level. The
default processing level is null. When the processor is
called, it calls sequentially and in ascending order all
features.
Predicate
xhtml-feature-p
Inheritance
Nameable
Methods
get-info
-> String (none)
The get-info method returns the xml feature information
string. The feature name is available from the get-name
provided by the Nameable base class.
set-processing-level
-> none (Integer)
The set-processing-level method sets the feature processing
level. The integer argument is the level to set.
get-processing-level
-> Integer (none)
The get-processing-level method returns the feature
processing level.
processing-level-p
-> Boolean (Integer)
The processing-level-p predicate returns true if the integer
argument equal the feature processing level.
process
-> XmlContent (XmlContent)
The process method process the input xml content and returns
a new xml content. The method is automatically called by the
xml processor.
XmlProcessor
The XmlProcessor class is a global class designed to operate
on a xml content. The xml processor provides several
features that can be enabled prior the document processor.
Once the features are defined, the ’process’
method can be called and a new xml content can be
produced.
Predicate
xml-processor-p
Inheritance
Object
Constructors
XmlProcessor
(none)
The XmlProcessor constructor creates a default xml processor
without any feature.
Methods
feature-length
-> Integer (none)
The feature-length method returns the number of features
defined in the xml processor.
add-feature
-> none (XmlFeature)
The add-feature method adds a feature object to the
processor. The feature processing level does not have to be
sorted prior the insertion. Adding multiple feature creates
a processor chain.
get-feature
-> XmlFeature (Integer)
The get-feature method return a processor feature by
index.
process
-> XmlFeature (XmlFeature)
The process method create a new xml content by calling
processing feature chain. The feature chain consists of
feature object sorted in ascending order. If the processor
contains only one feature, calling the process method is
equivalent to call the XmlFeature same method.
XmlInclude
The XmlInclude class is a xml processor feature class
designed to handle the "XInclude" schema that
permits to include xml document. The feature operates
recursively by scanning the document for a
"xi:include" tag and replacing the content by the
appropriate tree. The feature operates recursively unless
specified otherwise.
Predicate
xml-include-p
Inheritance
XmlFeature
Constructors
XmlInclude
(none)
The XmlInclude constructor creates a default xml include
feature. The default feature processing level is 10.
XmlInclude
(Integer)
The XmlInclude constructor creates a xml include feature
with a processing level. The integer argument is the feature
processing level to set.