Example 5-27: The xslt helper package specification

CREATE OR REPLACE PACKAGE xslt AS
  TYPE name_value IS RECORD( NAME VARCHAR2(40), VALUE VARCHAR2(200));
  TYPE paramlist IS TABLE OF name_value INDEX BY BINARY_INTEGER;

  none paramlist;

  -- Return an XSLT stylesheet based on XML document of the stylesheet source

  FUNCTION stylesheet(doc xmldom.DOMDocument) RETURN xslprocessor.Stylesheet;
  FUNCTION stylesheet(doc VARCHAR2)           RETURN xslprocessor.Stylesheet;
  FUNCTION stylesheet(doc CLOB)               RETURN xslprocessor.Stylesheet;
  FUNCTION stylesheet(doc BFILE)              RETURN xslprocessor.Stylesheet;
  FUNCTION stylesheetFromURL(url VARCHAR2)    RETURN xslprocessor.Stylesheet;

  -- Transform an XML Document by an XSLT stylesheet, returning a String

  FUNCTION transform(source xmldom.DOMDocument,
                      style xslprocessor.Stylesheet,
                     params paramlist := none) RETURN VARCHAR2;
  FUNCTION transform(source VARCHAR2,
                      style  xslprocessor.Stylesheet,
                     params paramlist := none) RETURN VARCHAR2;
  FUNCTION transform(source CLOB,
                      style xslprocessor.Stylesheet,
                     params paramlist := none) RETURN VARCHAR2;

  -- Transform an XML Document by an XSLT stylesheet, returning an XML doc

  FUNCTION transformToDOM(source xmldom.DOMDocument,
                          style  xslprocessor.Stylesheet,
                          params paramlist := none)
                          RETURN xmldom.DOMDocument;
  FUNCTION transformToDOM(source VARCHAR2,
                          style  xslprocessor.Stylesheet,
                          params paramlist := none)
                          RETURN xmldom.DOMDocument;
  FUNCTION transformToDOM(source CLOB,
                          style  xslprocessor.Stylesheet,
                          params paramlist := none)
                          RETURN xmldom.DOMDocument;

  -- Return a paramlist to be used for a transformation.

  FUNCTION params( n1 VARCHAR2,      v1 VARCHAR2,
                   n2 VARCHAR2:=NULL,v2 VARCHAR2:=NULL,
                   n3 VARCHAR2:=NULL,v3 VARCHAR2:=NULL,
                   n4 VARCHAR2:=NULL,v4 VARCHAR2:=NULL,
                   n5 VARCHAR2:=NULL,v5 VARCHAR2:=NULL) RETURN paramlist;

  -- Release the memory used by a Stylesheet

  PROCEDURE freeStylesheet( style xslprocessor.Stylesheet);

END;