Example 5-10: The xpath helper package specification

CREATE OR REPLACE PACKAGE xpath AS

  -- Return the value of an XPath expression, optionally normalizing whitespace

  FUNCTION valueOf(doc       xmldom.DOMDocument,
                   xpath     VARCHAR2,
                   normalize BOOLEAN:=FALSE) RETURN VARCHAR2;

  FUNCTION valueOf(node      xmldom.DOMNode,
                   xpath     VARCHAR2,
                   normalize BOOLEAN:=FALSE)   RETURN VARCHAR2;

  FUNCTION valueOf(doc       VARCHAR2,
                   xpath     VARCHAR2,
                   normalize BOOLEAN := FALSE) RETURN VARCHAR2;

  FUNCTION valueOf(doc CLOB,
                   xpath VARCHAR2,
                   normalize BOOLEAN := FALSE) RETURN VARCHAR2;

  -- Test whether an XPath predicate is true

  FUNCTION test(doc  xmldom.DOMDocument,xpath VARCHAR2) RETURN BOOLEAN;
  FUNCTION test(node xmldom.DOMNode,    xpath VARCHAR2) RETURN BOOLEAN;
  FUNCTION test(doc  VARCHAR2,          xpath VARCHAR2) RETURN BOOLEAN;
  FUNCTION test(doc  CLOB,              xpath VARCHAR2) RETURN BOOLEAN;

  -- Extract an XML Fragment for set of nodes matching an XPath pattern
  -- optionally normalizing whitespace (default is to normalize it)

  FUNCTION extract(doc       xmldom.DOMDocument,
                   xpath     VARCHAR2:='/',
                   normalize BOOLEAN:=TRUE)   RETURN VARCHAR2;
  FUNCTION extract(doc       VARCHAR2,
                   xpath     VARCHAR2 := '/',
                   normalize BOOLEAN := TRUE) RETURN VARCHAR2;
  FUNCTION extract(doc       CLOB,
                   xpath     VARCHAR2 := '/',
                   normalize BOOLEAN := TRUE) RETURN VARCHAR2;

  -- Select a List of Nodes Matching an XPath pattern
  -- Note: DOMNodeList returned has a zero-based index

  FUNCTION  selectNodes(doc xmldom.DOMDocument,
                        xpath VARCHAR2) RETURN xmldom.DOMNodeList;

  FUNCTION  selectNodes(node xmldom.DOMNode,
                        xpath VARCHAR2) RETURN xmldom.DOMNodeList;

  FUNCTION  selectNodes(doc VARCHAR2,
                        xpath VARCHAR2) RETURN xmldom.DOMNodeList;

  FUNCTION  selectNodes(doc CLOB,
                        xpath VARCHAR2) RETURN xmldom.DOMNodeList;

END;