1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
--PL/sql dom API
--PL/sql xml parser
--PL/sql xslt Processor
--Création d'un document DOM avec XMLtype
declare
document DBMS_XMLDOM.DOMDocument;
buffer VARCHAR2(30000);
begin
document:=DBMS_XMLDOM.newDOMDocument(sys.XMLTYPE('<personne><nom>LENGLET</nom><prenom>Thierry</prenom></personne>'));
DBMS_XMLDOM.writeToBuffer(document,buffer);
DBMS_OUTPUT.PUT_LINE(buffer);
end;
--Création d'un noeud d'élément à partir d'un document vide
declare
document DBMS_XMLDOM.DOMDocument;
element Dbms_XmlDOM.DOMElement;
noeud DBMS_XMLDOM.DOMNode;
begin
document:=DBMS_XMLDOM.newDOMDocument;
element:=DBMS_XMLDOM.createElement(document,'MON ELEMENT');
noeud:=DBMS_XMLDOM.makeNode(element);
DBMS_OUTPUT.PUT_LINE(DBMS_XMLDOM.getNodeName(noeud));
DBMS_OUTPUT.PUT_LINE(DBMS_XMLDOM.getNodeValue(noeud)));
end;
--PLSQL xml parser pour XMLType
--traitement d'un document XML avec le XMLPARSER plsql
DECLARE
document VARCHAR2(2000);
documentDOM DBMS_XMLDOM.DOMDocument;
noeud DBMS_XMLDOM.DOMNode;
monParser DBMS_XMLPARSER.Parser;
begin
document:='personne><nom>LENGLET</nom><prenom>Thierry</prenom></personne>';
monParser:=DBMS_XMLPARSER.newParser;
DBMS_XMLPARSER.parseBuffer(monParser,document);
documentDOM:=DBMS_XMLPARSER.getDocument(monParser);
noeud:=DBMS_XMLDOM.makeNode(documentDOM);
end;
--PL/sql xslt processor pour xmltype
declare
document VARCHAR2(2000);
xsldocument VARCHAR2(2000);
monParser DBMS_XMLPARSER.Parser;
documentDOM DBMS_XMLDOM.DOMDocument;
documentDOMxslt DBMS_XMLDOM.DOMDocument;
xsl DBMS_XSLPROCESSOR.Stylesheet;
documentDOMFragment DBMS_XMLDOM.DOMDocumentFragment;
noeud DBMS_XMLDOM.DOMNode;
processeur DBMS_XSLPROCESSOR.Processor;
buffer VARCHAR2(2000);
begin
document:='<Employe>
<Nom>SAMMARCO</Nom>
<Prenom>Thierry</Prenom>
<Salaire>1200</Salaire>
<Emploi>Consultant</Emploi>
</Employe>';
xsldocument:='<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="UTF-8"/>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates select="*|text()">
<xsl:sort select="name(.)" data-type="text" order="ascending" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="normalize-space()"/>
</xsl:template>
</xsl:stylesheet>';
monParser:=DBMS_XMLPARSER.newParser;
DBMS_XMLPARSER.parseBuffer(monParser,document);
documentDOM:=DBMS_XMLPARSER.getDocument(monParser);
DBMS_XMLPARSER.parseBuffer(monParser,xsldocument);
documentDOMxslt:=DBMS_XMLPARSER.getDocument(monParser);
xsl:=DBMS_XSLPROCESSOR.newStylesheet(documentDOMxslt, '');
processeur:=DBMS_XSLPROCESSOR.newProcessor;
--Application de la feuille de style
documentDOMFragment:=DBMS_XSLPROCESSOR.processXSL(processeur,xsl,documentDOM);
noeud:=DBMS_XMLDOM.makeNode(documentDOMFragment);
--l'API DOM pour XMLType peut être utilisée ici
DBMS_XMLDOM.writeToBuffer(noeud,buffer);
DBMS_OUTPUT.PUT_LINE(buffer);
end; |
Partager