Provided by: afnix_2.2.0-2ubuntu1_amd64 bug

NAME

       xml - standard xml module

STANDARD XML MODULE

       The  Standard  XML  module  is  an original implementation of the XML markup language. The
       module  provides  the  necessary  objects  for  parsing  a  xml  description  as  well  as
       manipulating  the parsed tree. The module can be extended to a service as a mean to act as
       a XML processor. The module also provides the support for a simple model which enable  the
       quick parsing of documents with a relaxed rule checking approach.

       XML tree representation
       A  xml  document is represented with a tree. At the top of the tree is the XmlRoot object.
       The root object is not part of the document, but acts as the primary container  for  other
       objects.  A  xml document starts with a root node and all other child elements are XmlNode
       objects.

       Node base object
       The xml tree is built with the XmlNode object. The node object  has  different  derivation
       depending  on the required representation. For example, the XmlRoot object is derived from
       the XmlNode object. A node object can have child object unless the node is  marked  as  an
       empty  node.  Trying to add node to an empty node results in an exception. A node can also
       be marked empty by the user. This situation typically arises with tag node which are  used
       alone  such like the <br/> xhtml empty tag or an empty paragraph <p/>. Although a xml node
       cannot be constructed directly, there is a predicate node-p that can be used to assert the
       node type.

       # check a node
       assert true (afnix:xml:node-p node)

       The  add-child method adds a child node to the calling node. If the calling node is marked
       empty, an exception is raised when attempting to add the node. There is no limit  for  the
       number  of  nodes  to add. In particular, when a text is to be added, care should be taken
       that there is no markup within that text. In doubt, the parse method should be used.

       # parse a text and add 3 child nodes
       p:parse "The quick brown <b>fox</b>
       jumps over the lazy dog"

       In the previous example, the first child node is a XmlText node with the value  The  quick
       brown  .  The  second node is a XmlTag node with name b. Finally, the third node is also a
       XmlText node with the value  jumps over the lazy dog. It should be noted that the tag node
       has  a  child  XmlText node with the value fox. This example also illustrates the power of
       the parse method which considerably simplify the creation of a xml tree. Finally, there is
       a  subtle  subject  to be treated later which concerns the use of character reference with
       the parse method. Like any other xml parser, character references are evaluated during the
       parsing  phase,  thus  providing no mechanism to create such reference. For this reason, a
       special class called XmlCref is provided in the module.

       Tag object
       The XmlTag class is one of  the  most  important  class  as  it  holds  most  of  the  xml
       constructs.  A  tag is defined by a name, a set of attributes and eventually a content. In
       its simplest form, a tag is created by name. With an additional boolean parameter, the tag
       can be marked as an empty node.

       # create an empty paragraph tag
       const p (afnix:xml:XmlTag "p" true)

       Adding  attributes  to  a  tag  is imply a matter of method call. The add-attribute method
       operates with a Property object while the set-attribute operates with a name and a literal
       value. As a matter of fact, the attributes are stored internally as a property list.

       # <p class="text">
       # create a paragraph tag
       const p (afnix:xml:XmlTag "p")
       # set the class attribute
       p:set-attribute "class" "text"

       The node empty flag determines whether or not there is a end tag associated with a tag. If
       the empty flag is false, the node can have children nodes and is  associated  with  a  end
       tag.  With  the empty flag set, there is no child nodes. Such situation corresponds to the
       xml /> notation.

       # <br/>
       # create a br empty tag
       const br (afnix:xml:XmlTag "br" true)

       Text objects
       The xml module provides two types of xml text node. The basic object is the  XmlText  node
       which  is  designed  to  hold  some text without markup. It is this kind of nodes which is
       automatically instantiated by the parse method, as described earlier. The other object  is
       the XmlData which corresponds to the xml CDATA special markup. With a character data node,
       the characters are not interpreted, including those that indicate markup starts like <  or
       end like >. The XmlData is particularly used to store scripts or other program text inside
       a xml description. As an example, it is recommended to use a character data node inside  a
       script tag with xhtml.

       Document reading
       A xml document is read by scanning an input stream an building a representation of the xml
       tree.

       The document object
       The XmlDocument object is a special object is designed to ease the reading process  of  an
       xml  document.  The  process  of  creating  a xml document consists of creating a document
       object, then binding a xml reader, parsing the input stream and finally storing  the  root
       node. When the operation is completed, the root node is available in the document object.

       # create a xml document
       const xdoc (afnix:xml:XmlDocument "example.xml")
       # get the root node
       const rppt (xdoc:get-root)

       The root node content
       When  a  document is parsed, the root node holds all the elements and markup sequentially.
       At this stage, it shall be noted that the element data are not expanded. Unlike  a  normal
       XML  reader, the parameter entity are kept in the node data, are expended later by the XML
       processor.

       Node tree operations
       The class XneTree provides a single framework to operate on  a  node  and  its  associated
       tree. Since a node always carries a sub-tree, the node tree term will be used to reference
       it.

       Creating a node tree
       A node tree is created either from a node at construction or with the help of the set-node
       method.

       # create a node tree at construction
       const tree (afnix:xml:XneTree root)
       # change the node tree
       tree:set-node node

       Once  a  tree  is  created, various methods are provided to operate on the whole tree. The
       depth method returns the depth of the node tree. The get-node methods returns the the node
       associated with the tree.

       # get the tree depth
       println (tree:depth)

       Namespace operations
       The  concept  of  namespace  is an extension to the xml standard. Unlike other programming
       language, the concept of namespace is designed to establish a binding between a  name  and
       an uri. Such binding permits to establish a scope for tags without too much burden. In the
       xml namespace terminology, an expanded name is composed of a prefix and a local name.  The
       basic operations provided at the tree level is the prefix cancellation and the tree prefix
       setting.

       # clear the prefix for the whole tree
       tree:clear-prefix
       # set a prefix for the whole tree
       tree:set-prefix "afnix"

       The set-prefix changes the prefix for the whole tree. It is not necessary to  clear  first
       the prefix.

       Attribute operations
       Each node in the node tree can have its attribute list modified in a single operation. The
       first operation is to clear all attributes for all nodes. Although this operation might be
       useful,  it  should  be  carried  with  caution.  The  attributes  can  also  cleared more
       selectively by using the tag name as a filter. For  more  complex  operation,  the  clear-
       attribute method of the XmlTag is the definitive answer.

       # clear all attributes
       tree:clear-attribute
       # clear all attributes by tag name
       tree:clear-attribute "p"

       The  set-attribute  method  sets an attribute to the whole tree. The first argument is the
       attribute name and the second is a literal value. For more selective operations, the  set-
       attribute method can be also called at the tag level.

       # clear all attributes
       tree:set-attribute "class" "text"

       When  it  comes  to  set  attributes,  there  is  a  special operation related to the "id"
       attribute. Such attribute is supposed to be unique for the whole tree.  For  this  reason,
       the  generate-id  generates  a  unique  id  for each node and assign the id attribute. The
       attribute is unique at the time of the call. If the tree is modified, and  in  particular,
       if new node are added, the method must be called again to regenerate the node id.

       # set a unique id for all nodes
       tree:generate-id

       Node location and searching
       The  node  location is the ability to locate one or several nodes in a xml tree. A node is
       generally located by name, path or id. Once a node has been located, it can be  processed.
       Note that the node locator operates operates almost exclusively with XmlTag node, although
       it might not be always the case.

       Node selection
       The process of finding a child node is  obtained  with  the  help  of  the  XneCond  class
       combined  with  the  select  method of the XneTree Object. The select method traverses the
       whole tree and attempts to match a condition for each node. If the condition is  evaluated
       successfully for a node, the node is added in the result vector. Note that the tree can be
       traversed entirely or with only the first layer of children.

       # creating a condition node
       const xcnd (afnix:xml:XneCond)
       # create a tree with a root node
       const tree (afnix:xml:XneTree root)
       # select all nodes for that condition
       trans result (tree:select xcnd)

       In the previous example, the condition object is  empty.  This  means  that  there  is  no
       condition,  and  thus  works for all nodes. This previous example will return all nodes in
       the tree.

       Node condition
       The XmlCond class provides several method to add a  conditions.  The  add  method  is  the
       method  of  choice  to  add  a  condition. The method operates with a condition type and a
       literal. Note that the object can contain several conditions.

       # creating a condition node
       const xcnd (afnix:xml:XneCond)
       # add a condition by name
       xcnd:add afnix:xml:xne:NAME "p"

       In the previous example, a condition is designed to operate with a tag name. Upon  a  call
       to  the  select method with this condition, all nodes in the tree that have the tag name p
       will be selected.

       # creating a condition node
       const xcnd (afnix:xml:XneCond)
       # add a condition by name
       xcnd:add afnix:xml:xne:NAME "p"
       # add an index condition
       xcnd:add afnix:xml:xne:INDEX 0

       In the previous example, a condition is designed to operate with a  tag  name  and  index.
       Upon  a call to the select method with this condition, all nodes in the tree that have the
       tag name p and those child index is 0 will be selected.

       Selection result
       The node selection operates by default on the whole tree. The select method,  when  called
       with a second boolean argument can restrict the search to the child nodes.

       # creating a condition node
       const xcnd (afnix:xml:XneCond)
       # create a tree with a root node
       const tree (afnix:xml:XneTree root)
       # select all nodes for that condition
       trans result (tree:select xcnd false)

       The selection results is stored in a vector object. The node order corresponds to the tree
       order obtained with a depth first search approach.

       Simple model node
       The XML simple model is designed to simplify the interpretation of a general sgml document
       such  like,  html  or  xhtml  document.  In  the  simple model approach, there is no tree.
       Instead, a vector of simple nodes is built, and a document interface can be used to access
       the  nodes.  Therefore,  this simple model should be considered as a mean to quickly parse
       document, but should not be used when tree operations come into play. In  such  case,  the
       xml  model  is  by  far  more  appropriate.  The  simple model can be used to parse a html
       document for instance. Note also that the simple model is a  relaxed  model  in  terms  of
       parsing rules. For example, the tag start/end consistency is not checked and the attribute
       parsing is not aggressive as it can be found generally in poorly  written  html  document.
       In  the  simple model, a XsmNode is just a text place holder. The node transports its type
       which can be either text, tag, reference of end node. For the tag  node,  a  subtype  that
       identifies reserved nodes versus normal type is also available.

       Creating a node
       A  xsm  node  is  created  by name or byte and name. In the first case, the node is a text
       node. In the second case, the node subtype is automatically detected for tag node.

       # create a xsm text node
       const ntxt (afnix:xml:XsmNode "afnix">
         # create a xsm tag node
         const ntag (
           afnix:xml:XsmNode afnix:xml:XsmNode:TAG "afnix">

       Note that the text corresponds to the node content. For example, the string  "!--  example
       --" might corresponds to a comment in html which is to say a reserved tag when the type is
       tag or a simple text if the type is a text node. A reserved tag is  defined  by  a  string
       which start either with the '!' character or the '[' character.

       # create a reserved tag
       const rtag (
         afnix:xml:XsmNode afnix:xml:XsmNode:TAG
         "!-- example --")

       Node representation
       The  xsm  node is a literal node. This means that the to-string and to-literal methods are
       available. When the to-literal method is called, the node text is automatically  formatted
       to reflect the node type.

       # create a reserved tag
       const rtag (
         afnix:xml:XsmNode afnix:xml:XsmNode:TAG
         "!-- example --")
       # print the node literal
       rtag:to-literal # <!-- example -->

       If  the  node  is  a  reference  node,  the  node literal is represented with the original
       definition while the to-string method will  produce  the  corresponding  character  if  it
       known.

       Node information
       With  a  xsm  node, the operation are a limited number of node information operations. The
       get-name method returns the first name found in a node. If the node is a normal  tag,  the
       get-name  will  return  the tag name. For the other node, the method will return the first
       available string. This also means, that the method will  behave  correctly  with  end  tag
       node.

       # create a tag node
       const ntag (
         afnix:xml:XsmNode afnix:xml:XsmNode:TAG "afnix">
         # get the tag name
         ntag:get-name

       There  is a predicate for all types. For example, the text-p predicate returns true if the
       node is a text node. The tag-p predicate returns true if the node is a normal or  reserved
       tag.

       Document reading
       A  document  is  read in a way similar to the XmlDocument with the help of the XsmDocument
       object. Once created, the document holds a vector of nodes.

       The document object
       The XsmDocument object is a special xsm object designed to ease the reading process  of  a
       document.  The process of creating a document consists of creating a document object, then
       binding a xsm reader, parsing the input stream and storing the nodes in a vector. When the
       operation is completed, the vector can be accessed by index.

       # create a xms document
       const xdoc (afnix:xml:XsmDocument "example.htm")
       # get the document length
       xdoc:length

       Node information object
       The  XsoInfo  object  is  a  node  information  object  designed  to  hold a node name, an
       attributes list and eventually a text associated with the node. For  example,  if  a  html
       document  contains a anchor node, the associated information node, will have the anchoring
       text stored as the node information text.

       # create a xso node by name and text
       const info (afnix:xml:XsoInfo "a" "click here")

       Simple model operations
       The XsmDocument is designed to perform simple operations such  like  searching  all  nodes
       that  matches  a  particular  name. While this operation can be done easily, it is done in
       such a way that a vector of node information is returned instead  of  a  vector  of  nodes
       which can always be constructed with a simple loop.

       # create a xsm document
       const xdoc (afnix:xml:XsmDocument "example.htm")
       # get all node named "a" - forcing lower case
       xdoc:get-info-vector "a" true

STANDARD XML REFERENCE

       XmlNode
       The XmlNode class is the base class used to represent the xml tree. The tree is built as a
       vector of nodes. Each node owns as well its parent node. Walking in the tree  is  achieved
       by  taking  the  child  node  and then moving to the child and/or next node. The node also
       manages an empty flags. It the empty flag is set, it is an error to add child nodes.

       Predicate

              node-p

       Inheritance

              Object

       Methods

              to-text -> String (none)
              The to-text method returns a text representation of the tree  content.  Unlike  the
              write  method,  the  tag  are  not  generated,  but  rather  the  text  content  is
              accumulated. This method is useful tor read the node content. If a  node  does  not
              have text, the nil string is returned.

              write -> none (none|OutputStream|Buffer)
              The  write  method  write the node contents as well as the child nodes to an output
              stream argument or a buffer. When node is written, the method attempts to  use  the
              stream  encoding  in  such  way  that  the  contents fits into the requested output
              encoding. Without argument, the node is written to the interpreter  output  stream.
              with one argument, the node is written to the specified stream or buffer.

              name-p -> Boolean (String)
              The name-p predicate checks if the name matches the node name. Care should be taken
              that not all node have a name, and in such case, the false value is returned.  This
              method is useful when the node is a tag.

              attribute-p -> Boolean (String| String String)
              The  attribute-p  predicate  checks  if  there is a node attribute that matches the
              string argument name. In the first form, the predicate returns true is an attribute
              exists  with  the  name argument. In the second form, the predicate returns true if
              the attribute name and value matches the  arguments.  The  first  argument  is  the
              attribute  name.  The  second  argument  is the attribute value. Not all nodes have
              attributes. In such case, the predicate always returns false.

              parse -> none (String)
              The parse method parses the string argument and adds the results as a set of  child
              node  to  the  calling  node.  If the node is an empty node, the method will almost
              fail. This method should be used when an attempt is made to add some text that  may
              contain some xml tags.

              get-parent -> XmlNode (none)
              The get-parent method returns the parent node. If the node is the root node, nil is
              returned.

              set-parent -> none (XmlNode)
              The set-parent method sets the parent node.

              copy -> XmlNode (none)
              The copy method copy the node tree by regenerating a new tree.

              del-child -> none (Integer | String | String String | String String String)
              The del-child method deletes one or several child nodes. In  the  first  form,  the
              children  is  deleted  either  by index or by name. When a string argument is used,
              several node might be removed.  In  the  second  form,  the  child  node  name  and
              attribute  name  must be matched. In the third form, the child node name, attribute
              name and value must be matched.

              del-attribute-child -> none (String | String String)
              The del-attribute-child method deletes one or several child  nodes.  In  the  first
              form,  the children are deleted by attribute name. In the second form, the children
              are delete by attribute name and value.

              clear-child -> none (none)
              The clear-child method clear the child node list, leaving the  node  without  child
              node.

              add-child -> none (XmlNode|XmlNode Integer)
              The  add-child  method adds a node argument as a child node to the calling node. In
              the first form, the node is added at the end of the node list. In the second  form,
              the node is added by index and all subsequent nodes are shifted by one position.

              get-child -> XmlNode (Integer String)
              The  get-child  method  returns  a  child  node by index or by name. If the calling
              argument is an integer, the node is returned by index. If the calling argument is a
              string,  the node is returned by name. If the node cannot be found, nil is returned
              raised.

              get-index -> Integer (XmlNode)
              The gett-index method returns a child node index. The node argument is the node  to
              find as a child node. If the node is not found, an exception is raised.

              merge -> none (XmlNode Integer)
              The merge method merge an existing node with another one. The first argument is the
              source node used for merging. The second argument the child node  index  to  merge.
              The  method  operates  by  first removing the child node at the specified index and
              then add in position, the child nodes of the source node.

              nil-child-p -> Boolean (none)
              The nil-child-p predicate returns true if the node does not have a child node.

              child-p -> Boolean (String | String String | String String String)
              The child-p predicate returns true if the  node  has  a  child  with  a  node  name
              argument.  In  the  first  form, the name is to be matched by the predicate. In the
              second form, the node nae and the attribute name must  be  matched.  In  the  third
              form, the node name, attribute name and value must be matched.

              attribute-child-p -> Boolean (String String | String String String)
              The  attribute-child-p  predicate  returns  true  if  the  node has a child with an
              attribute name argument. In the first form, the attribute name must be matched.  In
              the second form, the attribute name and value must be matched.

              lookup-child -> XmlNode (String)
              The  lookup-child method returns a child node by name. Unlike the get-child method,
              the method raises an exception if the node cannot be found.

              child-length -> Integer (none)
              The child-length method returns the number of children nodes.

              get-source-line -> Integer (none)
              The get-source-line method returns the node source line number if any.

              set-source-line -> none (Integer)
              The set-source-line method sets the node source line number.

              get-source-name -> String (none)
              The get-source-name method returns the node source name if any.

              set-source-name -> none (String)
              The set-source-name method sets the node source name.

       XmlTag
       The XmlTag class is the base class used to represent a xml tag. A tag is  defined  with  a
       name  and  an attribute list. The tag is derived from the xml node class and is not marked
       empty by default.

       Predicate

              tag-p

       Inheritance

              XmlNode

       Constructors

              XmlTag (String)
              The XmlTag constructor creates a tag node. The node is not marked empty.

              XmlTag (String Boolean)
              The XmlTag constructor creates a tag node. The first argument is the tag name.  The
              second argument is the empty flag.

       Methods

              set-name -> none (String)
              The set-name method sets the tag name.

              get-name -> String (none)
              The get-name method returns the tag name.

              clear-attribute -> none (node)
              The clear-attribute method clear the node attribute list.

              add-attribute -> none (Property)
              The add-attribute method adds a new attribute to the tag. The attribute must be new
              for this method to succeed. In doubt, the set-attribute is preferable.

              set-attribute -> none (String Literal)
              The set-attribute method sets an attribute to the tag. The first  argument  is  the
              attribute  name.  The  second  argument  is  the  attribute value. If the attribute
              already exists, the old value is replaced with the new one.

              get-attribute -> Property (Integer|String)
              The get-attribute method returns a tag attribute in the form o a  property  object.
              With  an  integer object, the attribute is returned by index. With a string object,
              the property is return by name. If the property is not found, nil is returned.

              get-attribute-value -> String (String)
              The get-attribute-value method returns a tag attribute value by  name.  The  string
              argument  is  the  attribute  name.  If  the property is not found, an exception is
              raised.

              lookup-attribute -> Property (String)
              The lookup-attribute method returns a tag attribute  by  name  in  the  form  of  a
              property.  The string argument is the attribute name. If the property is not found,
              an exception is raised.

              attribute-length -> Integer (none)
              The attribute-length method returns the number of attributes.

       XmlText
       The XmlText class is the xml text node. A text node is directly built by  the  xml  reader
       and the content placed into a string. By definition, a text node is an empty node.

       Predicate

              text-p

       Inheritance

              XmlNode

       Constructors

              XmlText (none)
              The  XmlText constructor creates a default text node. By definition, a text node is
              an empty node.

              XmlText (String)
              The XmlText constructor creates a text node with the string argument.

       Methods

              set-xval -> none (String)
              The set-xval method sets the text node value.

              get-xval -> String (none)
              The get-xval method returns the text node value.

              to-normal -> String (none)
              The to-normal method returns the normalized text node value.

       XmlData
       The XmlData class is the xml CDATA node. A data node differs from the  text  node  in  the
       sense  that  the data node contains characters that could be reserved characters such like
       markup delimiters. The data node is most of the time used to hold text used for scripting.
       The data node is an empty node.

       Predicate

              data-p

       Inheritance

              XmlNode

       Constructors

              XmlData (none)
              The  XmlData constructor creates a default data node. By definition, a data node is
              an empty node.

              XmlData (String)
              The XmlData constructor creates a data node with the string argument.

       Methods

              set-xval -> none (String)
              The set-xval method sets the data node value.

              get-xval -> String (none)
              The get-xval method returns the data node value.

       XmlComment
       The XmlComment class is the xml comment node. The comment node  is  a  special  node  that
       holds the comment text. The comment node is an empty node.

       Predicate

              comment-p

       Inheritance

              XmlNode

       Constructors

              XmlComment (none)
              The XmlComment constructor creates a default comment node. By definition, a comment
              node is an empty node.

              XmlComment (String)
              The XmlComment constructor creates a comment node with the string argument.

       Methods

              set-xval -> none (String)
              The set-xval method sets the comment node value.

              get-xval -> String (none)
              The get-xval method returns the comment node value.

       XmlDoctype
       The XmlDoctype class is the xml document type node. In its  simplest  form,  the  document
       type  has  just a name which acts the starting tag for the document. The document type can
       also be associated with a system or a public identifier. Note also that a local root  node
       can be attached to this node.

       Predicate

              doctype-p

       Inheritance

              XmlNode

       Constructors

              XmlDoctype (String)
              The  XmlDoctype constructor creates a document type with a starting tag name as the
              string argument. This is the simplest form of a document type definition.

              XmlDoctype (String String)
              The XmlDoctype constructor creates a document type with a starting tag name  and  a
              system  identifier.  The first string argument is the tag name. The second argument
              is the system identifier.

              XmlDoctype (String String String)
              The XmlDoctype constructor creates a document type with  a  starting  tag  name,  a
              public  and  a  system  identifier.  The first string argument is the tag name. The
              second argument is  the  public  identifier.  The  third  argument  is  the  system
              identifier.

       Methods

              get-xval -> String (none)
              The get-xval method returns the document type starting tag name.

              get-public-id -> String (none)
              The get-public-id method returns the document type public identifier.

              get-system-id -> String (none)
              The get-system-id method returns the document type system identifier.

       XmlPi
       The  XmlPi class is the xml processing node. The processing node is a tag node. Although a
       processing node is seen as tag with attributes, the specification describes the processing
       node as a special tag with a string value. The processing node is an empty node.

       Predicate

              pi-p

       Inheritance

              XmlNode

       Constructors

              XmlPi (String)
              The XmlPi constructor creates a processing node with the name string argument.

              XmlPi (String String)
              The  XmlPi  constructor creates a processing node with the name string argument and
              the string value. The first argument is the tag name. The second  argument  is  the
              processing node value.

       Methods

              set-name -> none (String)
              The set-name method sets the xml pi node name.

              get-name -> String (none)
              The get-name method returns the pi node name.

              set-xval -> none (String)
              The set-xval method sets the processing node value.

              get-xval -> String (none)
              The get-xval method returns the processing node value.

              map-xval -> Plist (String)
              The map-xval method map the processing node value to a property list.

       XmlDecl
       The  XmlDecl class is the xml declaration node. The declaration node is a processing node.
       A declaration node is defined with a version id, an encoding string and a standalone flag.
       Each value is represented by an attribute at the tag level.

       Predicate

              decl-p

       Inheritance

              XmlPi

       Constructors

              XmlDecl (none)
              The  XmlDecl  constructor  creates  a  default  declaration  node.  By default, the
              declaration node is set with the xml  version  1.0,  the  UTF-8  encoding  and  the
              standalone flag is not set.

              XmlDecl (String)
              The  XmlDecl  constructor  creates  a  declaration  node with a version. The string
              argument is the xml version version which must be a supported one.

              XmlDecl (String String)
              The XmlDecl constructor creates a declaration node with a version and an  encoding.
              The  string  argument is the xml version version which must be a supported one. The
              second argument is the xml encoding.

              XmlDecl (String String String)
              The XmlDecl constructor creates a declaration node with a version, an encoding  and
              a  standalone  flag. The string argument is the xml version version which must be a
              supported one. The second argument is the xml encoding. The third argument  is  the
              standalone flag.

       XmlRef
       The  XmlRef class is the xml reference node class. This class is a base class which cannot
       be instantiated directly. The class is designed to hold reference, the only element  which
       is in common is the string representation.

       Predicate

              ref-p

       Inheritance

              XmlNode

       Methods

              set-xref -> none (String)
              The set-xref method sets the node reference name.

              get-xref -> String (none)
              The get-xref method returns the node reference name.

       XmlCref
       The  XmlCref  class  is the xml character reference node class. Normally this class should
       only be used when building a xml tree manually. During a parsing  process,  the  character
       reference is automatically expanded.

       Predicate

              cref-p

       Inheritance

              XmlRef

       Constructors

              XmlCref (none)
              The  XmlCref  constructor  creates a default character reference those value is the
              null character.

              XmlCref (Character|Integer)
              The XmlCref constructor creates a character reference those value is the  character
              or integer argument.

       Methods

              set-value -> none (Character|Integer)
              The set-value method sets the character reference value by character or integer.

              get-value -> Character (none)
              The get-value method returns the character reference value.

       XmlEref
       The  XmlEref class is the xml entity reference node class. The entity reference is defined
       with a reference name.

       Predicate

              eref-p

       Inheritance

              XmlRef

       Constructors

              XmlEref (none)
              The XmlCref constructor creates an empty entity reference.

              XmlCref (String)
              The XmlEref constructor creates an entity  reference  those  value  is  the  string
              argument.

       XmlSection
       The  XmlSection  class  is  the  xml  section  type  node. A section node is used to model
       conditional section that are part of a  DTD.  The  section  value  is  a  string  that  is
       evaluated by the xml processor. Most of the time, it is a parameter entity reference which
       corresponds to the keyword INCLUDE or IGNORE , but it could be anything else.  A  node  is
       also attached to this section.

       Predicate

              section-p

       Inheritance

              xmlNode

       Constructors

              XmlSection (String)
              The XmlSection constructor creates a xml section node by value.

       Methods

              get-xval -> String (none)
              The get-xval method returns the section node value.

       XmlAttlist
       The  XmlAttlist  class  is  the  xml  attribute  list  node class. A xml attribute list is
       primarily defined with two names. The first name is the element and the second name is the
       attribute  name.  There are 3 types of attribute list. The string type, the token type and
       the enumeration type. The class manages each type by associating a type  descriptor  which
       is detected at construction.

       Predicate

              attlist-p

       Inheritance

              XmlNode

       Constructors

              XmlAttlist (String String)
              The  XmlAttlist constructor creates an attribute list by element name and attribute
              name. The first argument is the element name. The second argument is the  attribute
              name.

       Methods

              set-element-name -> none (String)
              The set-element-name method sets the attribute list element name.

              get-element-name -> String (none)
              The get-element-name method returns the attribute list element name.

              set-attribute-name -> none (String)
              The set-attribute-name method sets the attribute list name.

              get-attribute-name -> String (none)
              The get-attribute-name method returns the attribute list name.

              set-type -> none (String | Vector Boolean)
              The  set-type method set the attribute type by string or enumeration vector. In its
              first form, the attribute type is defined by a string.  The  type  can  be  either,
              "CDATA", "ID", "IDREF", "IDREFS", "ENTITY", "ENTITIES", "NMTOKEN" or "NMTOKENS". In
              the second form, the attribute type is an enumeration those values are  defined  in
              the  argument  vector.  The  boolean  argument  controls the notation flag for that
              enumeration.

              set-default -> none (String)
              The set-default method set the attribute value by string. The  string  can  be  any
              value  or  the  special  value  "#IMPLIED" and "#REQUIRED". If the default value is
              fixed, the set-fixed is the preferred method.

              set-fixed -> none (String)
              The set-fixed method set the fixed attribute default value by string.

       XmlRoot
       The XmlRoot class is the top level root instantiated by the xml reader  when  starting  to
       parse  a stream. There should be only one root node in a tree. The root node does not have
       a parent node.

       Predicate

              root-p

       Inheritance

              XmlNode

       Constructors

              XmlRoot (none)
              The XmlRoot constructor creates a default xml root node which is empty.

       Methods

              dup-body -> XmlBody (none)
              The dup-body method duplicates the root node by duplicating the root  body  without
              the declaration node.

              declaration-p -> Boolean (none)
              The  declaration-p  predicate returns true if a declaration node exists in the root
              node.

              get-declaration -> XmlDecl (none)
              The get-declaration method returns the declaration node associated  with  the  root
              node.  Normally,  the  declaration node is the first child node. If the declaration
              node does not exist, an exception is raised.

              get-encoding -> String (none)
              The get-encoding method returns the root encoding mode. The root encoding  mode  is
              extracted from the declaration node, if such node exists, or the default xml system
              encoding is returned.

       XmlDocument
       The XmlDocument class is the xml document class. The document class is the  root  document
       class  that  maintains  a  xml  document  along  with its associated tree and other useful
       information. Generally the class is constructed with a file name or a name  and  an  input
       stream  that  is  used  for  parsing  the input data. The document can also be designed by
       constructing manually the document tree. In that case,  the  document  name  must  be  set
       explicitly.

       Predicate

              document-p

       Inheritance

              Nameable

       Constructors

              XmlDocument (none)
              The XmlDocument constructor creates a default xml document.

              XmlDocument (String)
              The  XmlDocument  constructor  creates a xml document by parsing the file. The file
              name is the string argument.

              XmlDocument (String InputStream)
              The XmlDocument constructor creates a xml document by name and by parsing the input
              stream.  The  first  argument  is the xml document name. The second argument is the
              input stream to parse.

              XmlDocument (String XmlRoot)
              The XmlDocument constructor creates a xml document by name and root node. The first
              argument is the xml document name. The second argument is the xml root node.

       Methods

              set-name -> none (String)
              The  set-name  method  sets the xml document name. The get-name method is available
              from the nameable base class.

              get-root -> XmlRoot (none)
              The get-root method returns the document xml root node.

              get-body -> XmlRoot (none)
              The get-body method returns the document xml root node body without the declaration
              node.

       XmlElement
       The  XmlElement  class  is the xml element class node. A xml element is represented with a
       name and a value. It is during the processing phase that the element value is interpreted.
       An element is built with a name and a value.

       Predicate

              element-p

       Inheritance

              XmlNode

       Constructors

              XmlElement (String String)
              The  XmlElement  constructor  creates  a  xml  element by name and value. The first
              argument is the element name. The second argument is the argument value.

       Methods

              set-name -> none (String)
              The set-name method sets the xml element name.

              get-name -> String (none)
              The get-name method returns the element name.

              set-xval -> none (String)
              The set-xval method sets the xml element value.

              get-xval -> String (none)
              The get-xval method returns the element value.

       XmlEntity
       The XmlEntity class is the base class for the xml entity representation. A xml entity  can
       be  either a general entity or a parameter entity. They differ initially with the presence
       of the '%' character. Both entity model have a name which is path of the base class.

       Predicate

              entity-p

       Inheritance

              XmlNode

       Methods

              set-name -> none (String)
              The set-name method sets the entity name.

              get-name -> String (none)
              The get-name method returns the entity name.

       XmlGe
       The XmlGe class is the xml general entity node. In its simplest form, the  general  entity
       has  a  name and a value. The entity type can also be associated with a system or a public
       identifier with or without an extra type name.

       Predicate

              ge-p

       Inheritance

              XmlEntity

       Constructors

              XmlGe (String String)
              The XmlGe constructor creates a xml entity by name and value. The first argument is
              the  entity  name.  The  second argument is the entity value. Most of the time, the
              entity value is a parameter entity.

              XmlGe (String String String)
              The XmlGe constructor creates a xml  entity  by  name  and  identifier.  The  first
              argument  is  the entity name. The second argument is the entity public identifier.
              The third argument is the entity system identifier.

              XmlGe (String String String String)
              The XmlGe constructor creates a xml entity by name, identifier and data  type.  The
              first  argument  is  the  entity  name.  The  second  argument is the entity public
              identifier. the third argument is the entity system identifier. The fourth argument
              is the entity type name.

       Methods

              get-xval -> String (none)
              The get-xval method returns the entity value.

              get-data -> String (none)
              The get-data method returns the entity data type.

              get-public-id -> String (none)
              The get-public-id method returns the entity public identifier.

              get-system-id -> String (none)
              The get-system-id method returns the entity system identifier.

       XmlPe
       The  XmlPe  class  is  the  xml parameter entity node. In its simplest form, the parameter
       entity has a name and a value. The entity type can also be associated with a system  or  a
       public identifier.

       Predicate

              ge-p

       Inheritance

              XmlEntity

       Constructors

              XmlPe (String String)
              The XmlGe constructor creates a xml entity by name and value. The first argument is
              the entity name. The second argument is the entity value.

              XmlPe (String String String)
              The XmlGe constructor creates a xml  entity  by  name  and  identifier.  The  first
              argument  is  the entity name. The second argument is the entity public identifier.
              The third argument is the entity system identifier.

       Methods

              get-xval -> String (none)
              The get-xval method returns the entity value.

              get-public-id -> String (none)
              The get-public-id method returns the entity public identifier.

              get-system-id -> String (none)
              The get-system-id method returns the entity system identifier.

       XmlReader
       The XmlReader class is the xml parser that operates on an input stream. The reader creates
       a  tree  of  nodes  by  reading the input stream and returns the root node when an end-of-
       stream is reached. Multiple read can be done sequentially. If  the  reset  method  is  not
       called  between  multiple read passes, the reader will accumulate the nodes in the current
       tree.

       Predicate

              reader-p

       Inheritance

              Object

       Constructors

              XmlReader (none)
              The XmlReader constructor creates a default xml reader.

       Methods

              reset -> none (none)
              The reset method resets the xml reader. In particular, the root node is restored to
              the nil node.

              parse -> none (InputStream|String)
              The  parse method parses an input stream or a file. During the parsing process, the
              root node is filled with the parsed nodes.

              get-root -> XmlRoot (none)
              The get-root method returns the parsed root node.

              get-node -> XmlNode (String)
              The get-node method parse a string and returns a node.

       Xne
       The Xne is a nameset that binds constants used by the xne system.

       Constants

              ID
              The ID constant defines a node access by id.

              PI
              The PI constant defines an access selector for a processing instruction node.

              GE
              The GE constant defines an access selector for a general entity node.

              TAG
              The TAG constant defines an access selector for a tag node.

              ENT
              The ENT constant defines an access selector for an entity node.

              EREF
              The EREF constant defines an access selector for an entity reference node.

              CREF
              The CREF constant defines an access selector for an character reference node.

              ELEM
              The ELEM constant defines an access selector for an element node.

              TEXT
              The TEXT constant defines an access selector for a text node.

              NAME
              The NAME constant defines a node access by name.

              CDATA
              The CDATA constant defines an access selector for a character data node.

              INDEX
              The INDEX constant defines a node access by child index. The child  index  is  node
              index seen from the parent.

       XneTree
       The  XneTree  is  the xne node tree manipulation class. The class operates with a node and
       provides numerous methods to manipulate the tree as well as changing it. Before a tree  is
       manipulated,  it is recommended to make a copy of such tree with the help of the node copy
       method.

       Predicate

              xne-tree-p

       Inheritance

              Object

       Constructors

              XmlTree (none)
              The XmlTree constructor creates a default tree without a node.

              XmlTree (XmlNode)
              The XmlTree constructor creates a tree with a xml node.  The  node  stored  in  the
              object is the root of the tree subject to the operations.

       Methods

              depth -> Integer (none)
              The depth method returns the depth of the tree.

              generate-id -> Integer (none)
              The  generate-id  method  generate  a  unique  id  for all node in the tree. The id
              attribute is set by this method.

              set-node -> none (XmlNode)
              The set-node method sets the root tree node.

              get-node -> XmlNode (none)
              The get-node method returns the root tree node.

              set-attribute -> none (none|String)
              The set-attribute method sets an attribute to the whole tree. In  the  first  form,
              the  attribute is set to the whole tree. In the second form with a string argument,
              the attribute is set only on the tag node those name matches the name argument.

              clear-attribute -> none (none|String)
              The clear-attribute method clear all attributes of the nodes in the  tree.  In  the
              first  form,  the  node  attributes  are  cleared for all nodes in the tree. In the
              second form with a string argument, the attributes are cleared only  with  the  tag
              node those name matches the name argument.

              set-prefix -> none (String)
              The set-prefix method sets a prefix on all nodes in the tree.

              clear-prefix -> none (none)
              The clear-prefix method clear the prefix for all nodes in the tree.

              select -> Vector (XneCond [Boolean])
              The select method selects the node in the tree that matches the condition argument.
              In the first form, with one argument, the whole tree is  searched.  In  the  second
              form, with a boolean argument, the whole tree is searched if the second argument is
              false. If the boolean argument is true, the method call behaves like  a  call  with
              the condition only.

       XneChild
       The XneCond is the xne condition class. The sole purpose of this class is to define one or
       several condition that a node must satisfy in order to  be  selected.  The  condition  are
       accumulated  in  a  list  and  later  checked  for  a  particular node. Note that an empty
       condition always succeeds.

       Predicate

              xne-cond-p

       Inheritance

              Object

       Constructors

              XneCond (none)
              The XneCond constructor creates a  default  condition.  The  default  condition  is
              empty. The empty condition always succeeds.

       Methods

              add -> none (Xne [String|Integer])
              The  add  adds  a  condition by type. The first argument is the condition type. The
              second argument is a condition information such like a string or an integer.

              valid-p -> Boolean (XmlNode)
              The valid-p predicate checks that a node matches  a  condition.  If  the  condition
              succeeds, the predicate returns true.

       XsmNode
       The  XsmNode is a base class which is part of the xml simple model (xsm). In this model, a
       xml (or sgml, or html) text is represented by a node which can be either a tag, a text  or
       a reference node. There is no concept of tree. The node content is stored in the form of a
       text string. This simple model is designed to parse weak  data  representation  such  like
       html  text  and  later process it at the user discretion. The default representation is an
       empty text node.

       Predicate

              xsm-node-p

       Inheritance

              Object

       Constants

              TXT
              The TXT constant defines a xsm text node.

              TAG
              The TAG constant defines a xsm tag node.

              REF
              The REF constant defines a xsm reference node.

              END
              The END constant defines a xsm end node.

       Constructors

              XsmNode (none)
              The XsmNode constructor creates a default xsm node which is an empty text node.

              XsmNode (String)
              The XsmNode constructor creates a xsm text node by value. The  string  argument  is
              the text node value

              XsmNode (Item String)
              The  XsmNode  constructor  creates  a  xsm  text  node by type and value. The first
              argument is the node type. The second argument is the node text value.

       Methods

              text-p -> Boolean (none)
              The text-p predicate returns true if the node is a text node.

              tag-p -> Boolean (none)
              The tag-p predicate returns true if the node is a tag node.

              ref-p -> Boolean (none)
              The reference-p predicate returns true if the node is a reference node.

              end-p -> Boolean (none)
              The end-p predicate returns true if the node is a reference node.

              normal-p -> Boolean (none)
              The normal-p predicate returns true if the node is a normal tag node.

              reserved-p -> Boolean (none)
              The reserved-p predicate returns true if the node is a reserved tag node.

              textable-p -> Boolean (none)
              The textable-p predicate returns true if the node is a textable  node,  that  is  a
              text node or a reference node.

              get-source-line -> Integer (none)
              The get-source-line method returns the node source line number if any.

              set-source-line -> none (Integer)
              The set-source-line method sets the node source line number.

              get-source-name -> String (none)
              The get-source-name method returns the node source name if any.

              set-source-name -> none (String)
              The set-source-name method sets the node source name.

              get-name -> String (none)
              The get-name method returns the next available name. name.

       XsmReader
       The  XmlReader  class  is the simple model node reader. The reader operates with the parse
       method and returns a node or nil if the end of stream is reached. Unlike the  xml  reader,
       this  reader does not build a tree and the node content is not even parsed. In this model,
       the node content is to be interpreted at the user discretion.

       Predicate

              xsm-reader-p

       Inheritance

              Object

       Constructors

              XsmReader (none)
              The XsmReader constructor creates a default xsm reader. The reader is not bound  to
              any stream.

              XsmReader (InputStream)
              The  XsmReader  constructor creates a xsm reader with an input stream. The argument
              is the input bound to the reader.

              XsmReader (String)
              The XsmReader constructor creates a xsm reader with an  input  string  stream.  The
              argument  is  a  string which is used to create an input string stream bound to the
              reader.

       Methods

              set-input-stream -> none (InputStream)
              The set-input-stream method bind a new input stream to the reader. Subsequent  read
              will use the newly bound stream

              get-node -> XsmNode (none)
              The get-node method parses the input stream and returns the available node.

       XsmDocument
       The  XsmDocument  class is the document class that maintains a xsm document along with its
       associated list of nodes and other useful information. Generally the class is  constructed
       with  a  file  name or a name and an input stream that is used for parsing the input data.
       When the input stream has been parsed, the nodes are stored  in  a  vector  which  can  be
       access by index.

       Predicate

              document-p

       Inheritance

              Nameable

       Constructors

              XsmDocument (none)
              The XsmDocument constructor creates a default xsm document.

              XsmDocument (String)
              The  XsmDocument constructor creates a xsm document by name. The string argument is
              the file name to parse.

              XsmDocument (String InputStream)
              The XsmDocument constructor creates a xsm document by name and by parsing the input
              stream.  The  first  argument  is the xsm document name. The second argument is the
              input stream to parse.

       Methods

              set-name -> none (String)
              The set-name method sets the xsm document name. The get-name  method  is  available
              from the nameable base class.

              length -> Integer (none)
              The  length  method  returns  the  xsm  document length. The document length is the
              number of nodes parsed and stored in the document.

              get-node -> XsmNode (Integer)
              The get-node method returns a document node by index.

              get-info -> XsoInfo (Integer [Boolean])
              The get-info method returns a node  info  object  by  index.  The  info  object  is
              evaluated  dynamically  from the document node. In the first form, the node name is
              used to find the node end tag in order to construct the info  text  value.  In  the
              second form, the boolean argument, if true, forces the node name to be converted to
              lower case prior any comparison.

              get-info-vector -> XsoInfo (String [Boolean])
              The get-info-vetcor method returns an info object vector by name. Each info  object
              have  their  name  that  matches  the string argument. The info object is evaluated
              dynamically from the document node. In the first form, the node  name  is  used  to
              match a tag node and then find the node end tag in order to construct the info text
              value. In the second form, the boolean argument, if true, forces the node  name  to
              be converted to lower case prior any comparison.

       XsoInfo
       The  XsoInfo  class is a xml/xsm information node used to carry simple information about a
       tag. The node is constructed by name, with a set  of  attributes  and  eventually  a  text
       associated with the node. The text information is generally the one associated between the
       start tag and the end tag. In the case of complex tree, such text data might be empty.

       Predicate

              xso-info-p

       Inheritance

              Nameable

       Constructors

              XsoInfo (none)
              The XsoInfo constructor creates a default info object.

              XsoInfo (String)
              The XsoInfo constructor creates an info object by name. The string argument is  the
              node info name.

              XsoInfo (String String)
              The XsoInfo constructor creates an info object by name and text. The first argument
              is the node info name. The second argument is the node text information.

       Methods

              set-name -> none (String)
              The set-name method sets the info object name.

              set-attribute -> none (String Literal)
              The set-attribute method sets an attribute by name and value. The first argument is
              the attribute name. The second argument is the attribute value.

              get-attribute-list -> Plist (none)
              The  get-attribute-list  method  returns  the  node attribute list in the form of a
              property list object.

              get-attribute-value -> String (String)
              The get-attribute-value method returns the attribute  value  by  name.  The  string
              argument is the attribute name.

              set-text -> none (String)
              The set-text method sets the info object text.

              get-text -> String (none)
              The get-text method returns the text information.