[xquery-talk] What do people do about warnings?

James A. Robinson jim.robinson at stanford.edu
Thu Jan 11 10:32:32 PST 2007


If one is writing a library where a condition is encountered which
is not error but which is 'unexpected', I want to log a message
and proceed.  Is fn:trace the best technique for this?  Right now
this is what I came up with:

Some code executing in a 'public' library' might be like:
 
  ... 
  declare function resolve:externalize($uri as xs:anyURI)
  as schema-element(foo:bar)
  {
    if (doc-unavailable($uri))
    then (
       rp:_message($uri, 'resolve:externalize: uri unavailable')
    )
    else (
      let $doc := doc($uri)
      ...
    )  
  }

and in a private library:
  
  (:~
   : Private function to emit a messages. It uses fn:trace to
   : throw a message in an implementation defined method and
   : returns the empty sequence.
   :
   : @param $node a node() to display as part of the message.
   : @param the message to emit.
   : @return the empty sequence.
   :)
  declare function rp:_message($node, $message as xs:string)
  {
    (: Use $w to try and prevent optimizer from throwing this call away. :)
    let $w := trace($node, $message)
    return (
     if ($w) then () else ()
    )
  };

Are there better techniques someone could suggest?

Jim

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
James A. Robinson                       jim.robinson at stanford.edu
Stanford University HighWire Press      http://highwire.stanford.edu/
+1 650 7237294 (Work)                   +1 650 7259335 (Fax)


More information about the talk mailing list