-- package declaration
CREATE OR REPLACE PACKAGE pls IS

    -- print whole document (on Web page)
    PROCEDURE printXML;

    -- print a form which may be used to add a new element
    PROCEDURE addElementForm(parent IN NUMBER);

    -- perform adding an element as child of the given parent or as root if the parent is 0
    PROCEDURE doAddElement(parent IN NUMBER, name IN VARCHAR2, submit IN VARCHAR2); 

    -- prints a form which may be used to add a new attribute
    PROCEDURE addAttributeForm(owner IN NUMBER);

    -- adds a attribute of the given element, the owner must be > 0
    PROCEDURE doAddAttribute(owner IN NUMBER, name IN VARCHAR2, 
                           value IN VARCHAR2, atype IN VARCHAR2, submit IN VARCHAR2);

    -- print a form which may be used to change the attribute's value
    PROCEDURE changeAttributeValueForm(id IN NUMBER);

    -- change the attribute's value
    PROCEDURE doChangeAttributeValue(id IN NUMBER, value IN VARCHAR2, submit IN VARCHAR2);

    -- delete everything from Elements and Attributes
    PROCEDURE clearXML;

    -- delete an element
    PROCEDURE doDeleteElement(id IN NUMBER);

    -- delete an attribute
    PROCEDURE doDeleteAttribute(id IN NUMBER);

    -- like attributes:
    PROCEDURE addTextForm(parent IN NUMBER);
    PROCEDURE doAddText(parent IN NUMBER, value IN VARCHAR2, submit IN VARCHAR2);
    PROCEDURE changeTextValueForm(id IN NUMBER);
    PROCEDURE doChangeTextValue(id IN NUMBER, value IN VARCHAR2, submit IN VARCHAR2);
    PROCEDURE doDeleteText(id IN NUMBER);
END pls;
/