Provided by: tdom_0.9.6-2_amd64 bug

NAME

       ::dom::xpathFunc - Scripted XPath functions

SYNOPSIS

       ::dom::xpathFunc::funcName ctxNode pos nodeListType nodeList ?type arg type arg...?
       ::dom::xpathFunc::namespaceURL::funcName ctxNode pos nodeListType nodeList ?type arg type arg...?
_________________________________________________________________

DESCRIPTION

       tDOM's  XPath  engine  supports  custom XPath functions implemented by Tcl commands. When it encounters a
       function call to an unknown function name without a namespace qualifier, the XPath engine looks for a Tcl
       command of the same name in the ::dom::xpathFunc  namespace.  If  it  encounters  an  unknown  namespace-
       qualified  function call, it looks for a Tcl namespace with a name equal to the function's full namespace
       URI inside ::dom::xpathFunc, and a Tcl command named for the local part of  the  function's  name  inside
       that  namespace. If it finds such a Tcl command, it is executed with at least the following arguments, to
       describe the current XPath context:

       ctxNode
              The domNode object command of the XPath context node.

       pos    The XPath context position, in zero-based form - that is, the return value of the  standard  XPath
              position() function in the context would be $pos - 1.

       nodeListType
              The type name for nodeList, as for the selectNodes method's typeVar.

       nodeList
              The list of the current worked on XPath step result (as selectNodes would return them) in document
              order. ctxNode will be equal to [lindex $nodeList $pos].

       If  the  function  call  includes any arguments, two arguments will be appended to the command's argument
       list for each one:

       type   The argument's type name, as for selectNodes's typeVar.

       val    The argument's value, as selectNodes would return it in an XPath expression's result set.

       The command is required to return a 1- or 2-element Tcl list to provide the result of the XPath  function
       call.  If  the result list has two elements, the first is the result's XPath type name, and the second is
       an appropriately encoded value (note that the attrnodes type name is not supported):

       bool   Tcl boolean value acceptable to Tcl_GetBooleanFromObj.

       number Tcl numeric value acceptable to Tcl_GetSizeIntFromObj or Tcl_GetDoubleFromObj.

       string Simple string.

       nodes  Tcl list of domNode object commands.

       attrvalues
              Alias for string.

       If the result list has only one element, it is treated as a simple string.  It is an error for the result
       to have zero elements, more than two elements, or to be invalid as a Tcl list, and it is an error if  the
       val of a two-part result does not match the requirements described above for its type.

EXAMPLES

       A  simple  workalike  for  the  XPath  2/3 fn:matches() function, not otherwise available in an XPath 1.0
       engine such as tDOM's:
              proc ::dom::xpathFunc::regmatch {
                  ctxNode pos nodeListType nodeList
                  inputType inputVal patternType patternVal
              } {
                  set input [::dom::xpathFuncHelper::coerce2string $inputType $inputVal]
                  set pattern [::dom::xpathFuncHelper::coerce2string $patternType $patternVal]
                  return [list bool [regexp -- $pattern $input]]
              }

HELPER PROCS

       The ::dom::xpathFuncHelper namespace  contains  helper  procs  for  the  convenience  of  scripted  XPath
       functions:

       coerce2number type val
               Given a type and val as provided to scripted XPath functions in their argument lists, convert the
              val to a number in a manner appropriate for its type:

              empty  Always zero.

              number Unchanged.

              string Unchanged. (Note that no error is raised if val is not numeric.)

              attrvalues
                     value's first element.

              nodes  The result of the number() XPath function called on the first node in the list.

              attrnodes
                     The  value of the single attribute assumed to be in value.  Note that no error is raised if
                     this value is non-numeric.

       coerce2string type val
               As for coerce2number, but convert val to a pure string:

              empty  The empty string.

              number Unchanged.

              string Unchanged.

              attrvalues
                     value's first element.

              nodes  The result of the string() XPath function called on the first node in the list.

              attrnodes
                     The value of the single attribute assumed to be in value.

LIMITS

       Custom XPath function names are limited to 200 characters, including any namespace URI  and  the  ::  Tcl
       namespace separator between it and the local part. Function calls may have a maximum of 22 arguments (the
       argument  values  itself  may  be large nodesets). If you really need more this limits may be adjusted by
       build time defines. Tcl commands created with the deprecated Tcl_CreateCommand interface cannot  be  used
       as scripted XPath functions.

       You  must  not  alter  any of the DOM trees from which nodes are provided to a scripted XPath function as
       argument (this is true for the ctxNode argument as well as for the nodes in the nodeList  argument).  Use
       them  strictly  read-only. Ignoring this advice may have any unpredictable results including segmentation
       faults or security problems.

KEYWORDS

       XPath

Tcl                                                                                              xpathFunc(3tcl)