Provided by: afnix_2.8.1-1_amd64 bug

NAME

       xpe - xml processing environment service

XML PROCESSING ENVIRONMENT SERVICE

       The  XML  Processing  Environmentservice  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 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
       XmlDocumentobject 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
       constructor 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
       character  encoding associated with the stream. For this reason, the XmlContentconstructor
       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 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
       encoding.

       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
              complements 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
              argument 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
              feature 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
       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 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
              processor.

              add-feature -> none (XmlFeature)
              The  add-featuremethod  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-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
              processor 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
              feature 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.