Difference between revisions of "Inspection Module"

From BaseX Documentation
Jump to navigation Jump to search
Line 19: Line 19:
|The query {{Code|inspect:function(count#1)}} yields:
|The query {{Code|inspect:function(count#1)}} yields:
<pre class="brush:xquery">
<pre class="brush:xml">
<function name="count" uri="http://www.w3.org/2005/xpath-functions">
<function name="count" uri="http://www.w3.org/2005/xpath-functions">
   <parameter type="item()" occurrence="*" name="value1"/>
   <parameter type="item()" occurrence="*" name="value1"/>

Revision as of 10:13, 31 May 2013

This XQuery Module contains functions for extracting internal information on modules and functions and generating documentation.


All functions in this module are assigned to the http://basex.org/modules/inspect namespace, which is statically bound to the inspect prefix.
All errors are assigned to the http://basex.org/errors namespace, which is statically bound to the bxerr prefix.



Signatures inspect:function($function as function()) as element(function)
Summary Inspects the specified $function and returns an element that describs its structure.
Examples The query inspect:function(count#1) yields:
<function name="count" uri="http://www.w3.org/2005/xpath-functions">
  <parameter type="item()" occurrence="*" name="value1"/>
  <return type="xs:integer"/>


Signatures inspect:xqdoc($uri as xs:string) as element(xqdoc:xqdoc)
Summary Retrieves the string from the specified $input, parses it as XQuery module, and generates an xqDoc element.
xqDoc provides a simple vendor neutral solution for generating a documentation from XQuery modules. The documentation conventions have been inspired by the JavaDoc standard. Documentation comments begin with (:~ and end with :), and tags start with @. xqDoc comments can be specified for main and library modules and variable and function declarations. We have slightly extended the conventions and updated the xqDoc schema:
  • an <xqdoc:namespaces/> node lists all namespaces of a module
  • if annotations are attached to variables or functions, an <xqdoc:annotations/> node is added
  • variables now have a name and a type.
Example An example is shown below.


The query xqdoc:parse('sample.xq') will convert the following example module...

 : This module provides some sample functions to demonstrate
 : the features of the Inspection Module.
 : @author BaseX Team
 : @see http://docs.basex.org/wiki/XQDoc_Module
 : @version 1.0
module namespace samples = 'http://basex.org/modules/samples';

(:~ This is a sample string. :)
declare variable $samples:test-string
  as xs:string := 'this is a string';

 : This function simply returns the specified integer.
 : @param $number number to return
 : @return specified number
declare %private function samples:same(
  $number as xs:integer
) as xs:integer {

...to the following output:

<xqdoc:xqdoc xmlns:xqdoc="http://www.xqdoc.org/1.0">
  <xqdoc:module type="library">
    <xqdoc:namespace prefix="samples" uri="http://basex.org/modules/samples"/>
        <xqdoc:description>This is a sample string.</xqdoc:description>
    <xqdoc:function arity="1">
        <xqdoc:description>This function simply returns the specified integer.</xqdoc:description>
        <xqdoc:param>$number number to return</xqdoc:param>
        <xqdoc:return>specified number</xqdoc:return>
        <xqdoc:annotation name="private"/>
      <xqdoc:signature>declare %private function samples:same($number as xs:integer) as xs:integer</xqdoc:signature>


This module was introduced with Version 7.7.