This page was generated
August  8,  2011
2:24  AM
XQuery Built-In and Modules Function Reference

Module: Modular Documents

This is the XInclude module, which is used with the modular documents CPF application.

To use the XInclude module as part of your own XQuery module, include the following line in your XQuery prolog:

import module namespace xinc = "http://marklogic.com/xinclude" at "/MarkLogic/xinclude/xinclude.xqy";

The library namespace prefix xinc is not predefined in the server.

This is the XPointer module, which is used with the modular documents CPF application.

To use the XPointer module as part of your own XQuery module, include the following line in your XQuery prolog:

import module namespace xp = "http://marklogic.com/xinclude/xpointer" at "/MarkLogic/xinclude/xpointer.xqy";

The library namespace prefix xp is not predefined in the server.

Function Summary
xinc:link-expand This function performs a single level expansion of a single XInclude reference.
xinc:link-references This function returns a list of all the distinct URIs of documents referenced (either directly or indirectly) in the expansion of the node.
xinc:node-expand This function recursively examines the node for XInclude references and expands them, following the rules of the XInclude specification.
xp:dereference This function resolves an XPointer in the context of a particular node.
Function Detail
xinc:link-expand(
$context as node(),
$ref as element(xi:include)
)  as   node()*
Summary:

This function performs a single level expansion of a single XInclude reference. XInclude references in the referenced node will not be expanded.

Parameters:
$context : The root node containing the XInclude reference, which is used for the interpretation of relative links with empty href attributes.
$ref : An XInclude include element.

Usage Notes:

Since this function only performs a single-level expansion of a single reference, applications will typically call node-expand instead.

Example:
  xquery version "1.0-ml";
  import module namespace xinc = "http://marklogic.com/xinclude" 
		  at "/MarkLogic/xinclude/xinclude.xqy";

  declare namespace xi="http://www.w3.org/2001/XInclude";

  let $root := fn:doc("http://example.org/mydoc.xml")
  return xinc:link-expand( $root, $root/section[1]/xi:include[1] )
  

xinc:link-references(
$node as node()
)  as   xs:string*
Summary:

This function returns a list of all the distinct URIs of documents referenced (either directly or indirectly) in the expansion of the node.

Parameters:
$node : The node containing XInclude references.

Example:
  xquery version "1.0-ml";
  import module namespace xinc = "http://marklogic.com/xinclude" 
		  at "/MarkLogic/xinclude/xinclude.xqy";

  xinc:link-references(fn:doc("http://example.org/mydoc.xml"))
  

xinc:node-expand(
$node as node()
)  as   node()
Summary:

This function recursively examines the node for XInclude references and expands them, following the rules of the XInclude specification. The result is a node in which all the XInclude references have been resolved, or an error if there were unresolvable references with no fallback specifications.

Parameters:
$node : The node to expand.

Usage Notes:

URI references are resolved against the current database.

Example:
  xquery version "1.0-ml";
  import module namespace xinc = "http://marklogic.com/xinclude" 
		  at "/MarkLogic/xinclude/xinclude.xqy";

  xinc:node-expand( fn:doc("http://example.org/mydoc.xml") )
  

xp:dereference(
$context as node(),
$xpointer as xs:string
)  as   node()*
Summary:

This function resolves an XPointer in the context of a particular node.

Parameters:
$context : The node against which the XPointer evaluates.
$xpointer : An XPointer.

Example:
  xquery version "1.0-ml"
  import module namespace xp = "http://marklogic.com/xinclude/xpointer" 
		  at "/MarkLogic/xinclude/xpointer.xqy";

  let $node :=
     <root xmlns="http://marklogic.com/myns">
       <this>
         This is text before the referenced element.
         <that>The referenced element.</that>
         This is text after the referenced element.
       </this>
     </root>
  return 
     xp:dereference($node, 
        "xmlns(ns=http://marklogic.com/myns) xpath(//ns:this/ns:that)")
    
===> <that xmlns="http://marklogic.com/myns">The referenced element.</that>