Заводить, изменять свойства и удалять ресурсы в репозитарии XML DB можно с помощью пакета PL/SQL DBMS_XDB.
Примеры:
CONNECT scott/tiger
DECLARE retb BOOLEAN; BEGIN retb := DBMS_XDB.CREATEFOLDER ( '/public/myfolder' );
retb := DBMS_XDB.CREATERESOURCE ( '/public/myfolder/file1.txt' , 'First line' CHR ( 10 ) 'Second line' );
retb := DBMS_XDB.CREATERESOURCE ( '/public/myfolder/file2.xml' , '<doc><line>First line</line><line>Second line</line></doc>' );
END; /
Проверка:
SQL> SELECT r.res.EXTRACT ( 'Resource/Contents' ) AS xml 2 FROM resource_view r 3 WHERE EQUALS_PATH ( res, '/public/myfolder/file2.xml' ) = 1;
XML -------------------------------------------------------------- <Contents xmlns="http://xmlns.oracle.com/xdb/XDBResource.xsd"> <doc xmlns=""> <line>First line</line> <line>Second line</line> </doc> </Contents>
SQL> SELECT r.res.EXTRACT ( 'Resource/Contents/text/text()' ) AS text 2 FROM resource_view r 3 WHERE EQUALS_PATH ( res, '/public/myfolder/file1.txt' ) = 1;
TEXT -------------------------------------------------------------- First line Second line
Обратите внимание, что XML DB по-разному хранит файл в зависимости от его расширения (упражнение: убедитесь, что XML DB интерпретирует содержимое именно по расширению файла, а не оттого, что внутри). Соответствие расширений файлов типам MIME устанавливается и выясняется в файле-ресурсе /xdbconfig.xml.
Создание связи (link):
BEGIN DBMS_XDB.LINK ( '/public/myfolder/file1.txt' , '/public' , 'myfolderfile1.txt'
); END; /
Проверка:
SQL> SELECT r.res.EXTRACT ( 'Resource/Contents/text/text()' ) AS text 2 FROM resource_view r 3 WHERE EQUALS_PATH ( res, '/public/myfolderfile1.txt' ) = 1 SQL> /
TEXT ---------------------------------------------------------------- First line Second line
SQL> SELECT 2 p.path AS path 3 , p.link.extract('/LINK/ChildName/text()') AS link 4 FROM path_view p 5* WHERE UNDER_PATH ( p.res, '/public' ) = 1 SQL> /