Example 10-9: Helper package to simplify XML creation

CREATE PACKAGE xmlhelper IS

   PROCEDURE   prolog;
   PROCEDURE startTag( elementName VARCHAR2 );
   PROCEDURE      tag( elementName VARCHAR2,
                           content VARCHAR2 := NULL);
   PROCEDURE   endTag( elementName VARCHAR2 );

 END xmlhelper;

CREATE PACKAGE BODY xmlhelper IS

  PROCEDURE prolog IS
  BEGIN
    OWA_UTIL.MIME_HEADER('text/xml');
    HTP.P('<?xml version="1.0"?>');
  END prolog;

  PROCEDURE startTag( elementName VARCHAR2 ) IS
  BEGIN
    HTP.P('<'||elementName||'>');
  END startTag;

  PROCEDURE tag( elementName VARCHAR2, 
                     content VARCHAR2 := NULL) IS
  BEGIN
    HTP.P(  '<'||elementName||'>' 
               ||content    ||
           '</'||elementName||'>');
  END tag;

  PROCEDURE endTag( elementName VARCHAR2 ) IS
  BEGIN
    HTP.P('</'||elementName||'>');
  END endTag;

END xmlhelper;