Provided by: afnix_3.8.0-1_amd64 bug

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.