xpe(3) AFNIX Service xpe(3)
NAME
xpe - xml processing environment service
XML PROCESSING ENVIRONMENT SERVICE
The XML Processing Environmentservice is an original implementation that provides the sup‐
port for processing xml document that could be accessed locally or remotely. In particu‐
lar, the processing environment supports the XML includefacility.
XML content
The XmlContentclass 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 XmlContentoperates 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 XmlDocumentob‐
ject which contains the parsed tree with the XmlRootobject.
# 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 XmlContentobject is derived from the XmlContentobject, 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 con‐
structor name, while the document name is the normalized document name. The get-namemethod
returns the content name while the get-document-namemethod 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.xmldocument 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 charac‐
ter encoding associated with the stream. For this reason, the XmlContentconstructor pro‐
vides 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 XmlContentclass 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 encod‐
ing.
Predicate
xml-content-p
Inheritance
XmlDocumentMime
Constructors
XmlContent (String)
The XmlContentconstructor 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 XmlContentconstructor 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 XmlContentconstructor 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-urimethod returns the document normalized uri.
get-document-name -> String (none)
The get-document-namemethod returns the object document name. This method comple‐
ments the get-namemethod which returns the object name.
XmlFeature
The XmlFeatureclass 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-infomethod returns the xml feature information string. The feature name is
available from the get-nameprovided by the Nameablebase class.
set-processing-level -> none (Integer)
The set-processing-levelmethod sets the feature processing level. The integer argu‐
ment is the level to set.
get-processing-level -> Integer (none)
The get-processing-levelmethod returns the feature processing level.
processing-level-p -> Boolean (Integer)
The processing-level-ppredicate returns true if the integer argument equal the fea‐
ture processing level.
process -> XmlContent (XmlContent)
The processmethod process the input xml content and returns a new xml content. The
method is automatically called by the xml processor.
XmlProcessor
The XmlProcessorclass is a global class designed to operate on a xml content. The xml pro‐
cessor 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 XmlProcessorconstructor creates a default xml processor without any feature.
Methods
feature-length -> Integer (none)
The feature-lengthmethod returns the number of features defined in the xml proces‐
sor.
add-feature -> none (XmlFeature)
The add-featuremethod adds a feature object to the processor. The feature process‐
ing level does not have to be sorted prior the insertion. Adding multiple feature
creates a processor chain.
get-feature -> XmlFeature (Integer)
The get-featuremethod return a processor feature by index.
process -> XmlFeature (XmlFeature)
The processmethod create a new xml content by calling processing feature chain. The
feature chain consists of feature object sorted in ascending order. If the proces‐
sor contains only one feature, calling the processmethod is equivalent to call the
XmlFeaturesame method.
XmlInclude
The XmlIncludeclass 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 XmlIncludeconstructor creates a default xml include feature. The default fea‐
ture processing level is 10.
XmlInclude (Integer)
The XmlIncludeconstructor creates a xml include feature with a processing level.
The integer argument is the feature processing level to set.
AFNIX 2017-11-22 xpe(3)