XML & XPath vs databse & SQL

Hey people. I was wondering what people think of the above. Take for example a website a bit like autotrader.co.uk...
A website with a database back-end where registered users can view and modify a part of the database (some but not all tables and their entries) via a search and addition/deletion of its content respecively.
Now when users of your website use its search facility you can use SQL to query the database accordingly.
My question is whether or not it would be feasible to represent the whole/relevant part of the database in XML, and update this XML representation every time content is added/removed from the database. Then use XPath for all database queries (by users via the website)?
My thoughts are that although the update of the XML representation would require one big read of the database each time it is modified (more server-side work than otherwise when it comes to updates) no reads would be required for database quieries (there would be less server-side work when it comes quieries as no database connection would be required).
Also assuming the number of searches on the database heavily outweights modifications of it leads me to think that the above might be a good idea. Your opinions please...

I think attempting to represent all the database as XML (at any time except when it has hardly any data) will rapidly result in a memory scaling lmitation.
XML, generally, should be used for remote communication, exposing services and/or persisting small amounts of data, such as configuration settings. XML parsing is generally an expensive operation.
That having been said, there are database vendors, notably Oracle, that allow data within the database itself to be stored as XML and queried using SQL or x-Path. This, IMO, would be a more valid implementation. However, storing XML should always be more inefficient, from a disk space perspective, than simply storing the actual data values contained within the XML.
- Saish

Similar Messages

  • Generating an xml from a pl/sql procedure

    Hi Friends,
    I have come up with a requirement to generate an xml from a pl/sql procedure.
    I did some R & D and also got some sample procedures but could not understand the datatypes being used.
    The procedure declares variables like this:
    doc                  xmldom.DOMDocument;
    mainNode         xmldom.DOMNode;
    headerElem      xmldom.DOMElement; Pls could anyone tell what do these xmldom.DOMDocument, xmldom.DOMNode and xmldom.DOMElement mean?
    Later in the procedure, these variables are assigned values like
    doc      := xmldom.newDOMDocument;
    mainNode := xmldom.makenode(doc); This went a bouncer on me.
    Pls help.
    Thanks in advance ...!

    You can check this one -- Learned this from michael.
    satyaki>
    satyaki>
    satyaki>select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
    PL/SQL Release 10.2.0.1.0 - Production
    CORE    10.2.0.1.0      Production
    TNS for Linux: Version 10.2.0.1.0 - Production
    NLSRTL Version 10.2.0.1.0 - Production
    satyaki>
    satyaki>
    satyaki>with person_h
      2  as
      3    (
      4      select 1 id, 'M' gender, 'W' race, '170' weight from dual union all
      5      select 1, 'M', 'W', '170' from dual union all
      6      select 1, 'M', 'W', '180' from dual union all
      7      select 1, 'M', NULL, '175' from dual union all
      8      select 1, NULL, 'W', NULL from dual
      9    )
    10    select xmlelement("Person",(
    11                                 select xmlagg(xmlelement("Sex", gender))
    12                                 from (
    13                                        select distinct gender
    14                                        from person_h
    15                                        where id = 1
    16                                        and gender is not null
    17                                      ) pg
    18                                ),
    19                                (
    20                                  select xmlagg(xmlforest(race as "Race"))
    21                                  from (
    22                                         select distinct race
    23                                         from person_h
    24                                         where id = 1
    25                                       ) pg
    26                                ),
    27                                (
    28                                  select xmlagg(xmlforest(weight as "Weight"))
    29                                  from (
    30                                         select distinct weight
    31                                         from person_h
    32                                         where id = 1
    33                                       ) pg
    34                                 )
    35                     ).getstringval() Res
    36    from dual;
    RES
    <Person><Sex>M</Sex><Race>W</Race><Weight>170</Weight><Weight>175</Weight><Weight>180</Weight></Person>
    satyaki>Regards.
    Satyaki De.

  • Creating XML report using PL/SQL Stored Procedure

    Hi Friends,
    I am working on an xml report with the xml source as PL/SQL Stored Procedure.
    I am referring the exercise shown in the following link to understand the process:
       http://orclapp.blogspot.com/2012/02/developing-xml-publisher-report-using.html
    In the example shown in the above link I could not understand the following:
    1) In the following procedure, the out parameter 'retcode' is not used at all.
       What is the importance of this parameter.
        PROCEDURE REPORT (errbuf  OUT VARCHAR2, retcode  OUT VARCHAR2, p_product_id   IN     NUMBER)
    2)  After the xml data is prepared and put to 'l_result' Clob variable, the following
        Loop is executed. I am not able to appreciate why the following loop is required.
         LOOP
             EXIT WHEN l_length = l_retrieved;
             IF (l_length - l_retrieved) < 32000
             THEN
                SELECT SUBSTR (l_result, l_retrieved + 1) INTO l_xmlstr FROM DUAL;
                l_retrieved := l_length;
                fnd_file.put_line (fnd_file.output, l_xmlstr);
             ELSE
                SELECT SUBSTR (l_result, l_retrieved + 1, l_offset)
                  INTO l_xmlstr
                  FROM DUAL;
                l_retrieved := l_retrieved + l_offset;
                fnd_file.put_line (fnd_file.output, l_xmlstr);
             END IF;
         END LOOP;
    3) In the example it is not explained how the concurrent program gets the xml data?
       I assume it is written to a file using the following line of code:
        fnd_file.put_line (fnd_file.output, l_xmlstr);
       I would appreciate if anyone can throw some light into my above queries so that I can understand the process clearly.
    Thanks & Regards
    Hawker

    Hi 32000 in the code is a 'safe' size smaller than the max available 32767, the loops purpose is to move through the entire thing in chunks that will be manageable in the limits of the data type.
    Btw; if you are in Oracle e-business suite then you can also use Oracle reports very simply to create XML output.
    If you have reports developer all you need to do is put raw sql (without any 'artifice' to create XML) in the report SQL and then set the reports output to XML in the program definition in Oracle e-business.
    best regards,
    Robert.

  • Loading XML parser for PL/SQL

    I am working my way thru 'Building Oracle XML Applications' by Steve Muench.
    I am getting a problem when I try to install the XML parser for PL/SQL
    The following errors occur when I try to do
    loadjava -v -r -u xmlbook/xmlbook xmlparserv2.jar
    initialization complete
    loading : oracle/xml/parser/v2/XMLByteReader
    creating : oracle/xml/parser/v2/XMLByteReader
    Error while creating class oracle/xml/parser/v2/XMLByteReader
    ORA-29545: badly formed class: User has attempted to load a class (oracle.xml.parser.v2.XMLByteReader) into a restricted package. Permission can be granted using dbms_java.grant_permission(<user>, LoadClassInPackage...
    loading : oracle/xml/parser/v2/PrintDriver
    creating : oracle/xml/parser/v2/PrintDriver
    Error while creating class oracle/xml/parser/v2/PrintDriver
    ORA-29545: badly formed class: User has attempted to load a class (oracle.xml.parser.v2.PrintDriver) into a restricted package. Permission can be granted using dbms_java.grant_permission(<user>, LoadClassInPackage...
    resolving: oracle/xml/parser/v2/PrintDriver
    Error while resolving class oracle/xml/parser/v2/PrintDriver
    ORA-04043: object /a065289c_PrintDriver does not exist
    resolving: org/w3c/dom/html/HTMLAnchorElement
    Error while resolving class org/w3c/dom/html/HTMLAnchorElement
    ORA-04043: object /564607d_HTMLAnchorElement does not exist
    About 20 classes get loaded correctly. All the rest get ORA-29545 or ORA-04043 errors.
    I expect the ORA-04043 errors are a result of the earlier errors.
    The documentation seems to indicate that there is no need to do
    dbms_java.grant_permission to load into your own schema.
    I have NT4 (sp6)
    Oracle 8.1.7
    xmlparserv2.jar dated 24/8/2001 17:01 size 1,177,259
    xmlparserv2_2027.jar gives the same errors.
    Any help would be appreciated.
    null

    Was it definitely xmlparsev2.jar that you had to load?
    I recently started going through some of these examples as well and found that the standard xml parser was there but that I needed to load the xml parser for PL/SQL. I did this using loadjava from a subdirectory within the xdk directory and everything worked fine.

  • XML parsing problems with Oracle XML parser for PL/SQL

    I am using the Oracle XML parser for PL/SQL to transform XML into HTML usign XSL. The parser gives me sporadic errors trying to parse various XML documents. For the same XML source, the XMLPARSER will parse without errors one day and the next day will give me errors such as "invalid char in text", "Expected ';'.", or even Java null pointer exceptions.
    I have verified that the XML sources are well formed, so I am pretty certain that the problems I am having are bugs in the XMLPARSER.
    Is there going to be a XML parser for PL/SQL version 2 that will fix these bugs? If so, when??? If not, is there anything else I could do to fix these problems?
    Thanks!

    You can use the latest version.

  • Oracle8.1.5 and XML parser for PL/SQL

    Hi,
    Does XML parser for PL/SQL work with Oracle 8.1.5? Did any one install the
    same and if so what are steps to follow? I ran initjvm.sql to install
    JServer and then tried to load jar files using loadjava, but it's giving
    error. It's working fine with Oracle8.1.6.
    Any idea?
    Thanks,
    Jayanta
    null

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Jayanta Ghosh ([email protected]):
    Hi,
    Does XML parser for PL/SQL work with Oracle 8.1.5? Did any one install the
    same and if so what are steps to follow? I ran initjvm.sql to install
    JServer and then tried to load jar files using loadjava, but it's giving
    error. It's working fine with Oracle8.1.6.
    Any idea?
    Thanks,
    Jayanta<HR></BLOCKQUOTE>
    Oracle XML Parser has differents distributions for 8.1.5 and 8.1.6 databases, try the correct version, then runs the oraclexmlsqlload.csh from the lib directory of XSU distribution.
    Best regards, Marcelo.
    null

  • Error with XML Generation throgh PL/SQL

    Hi All,
    I am generating an XML Script through PL/SQL Procedure i.e. FND_FILE.PUT_LINE(FND_FILE.OUTPUT, '<SOMETAG>') like this.
    When I tried to run this PL/SQL Procedure from Apps, it is generating the OUTPUT file correctly and I am able to see the XML script also in OUTPUT File. But when I tried to save it to my local machine and Open in Notepad then it contains the follwing data.
    Authentication failed.
    When I tried to open the XML through IE, I am getting the following Error message.
    The XML page cannot be displayed
    Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.
    Invalid at the top level of the document. Error processing resource 'file:///C:/Documents and Settings/rxr4669/Desktop/OTL_...
    Authentication failed.
    +^+
    Even I am unable to load this XML Data into Template Builder for BI Publisher in order to generate the Layout Temlate (RTF).
    What is this Error ? How to get rid of this ?
    Please help me.
    Thanks !

    Found the issue.
    This is because of some special characters in XML. For more information on this please view the below page.
    [http://www.devx.com/tips/Tip/14068]
    Thanks !
    Edited by: Rajasekhar Reddy on May 9, 2012 3:37 AM

  • How to validate XML Digital Signature with XML DB (o PL/SQL) in Oracle 11g

    Hi,
    Do you know if there is possibility to validate XML Digital Signature using XML DB (or PL/SQL) in Oracle 11g?
    Let say I have CLOB/XMLType containing Digitally Signed XML, and I want to validate, that thsi is proper signature. I also have public key of signer (I could store it in CLOB or file or Oracle wallet).
    Is it possible to do?
    If there is need to install additional component - then which one?
    Regards,
    Paweł

    Hi,
    this is what i got from someone...
    but the links he gave are not opening up...
    u have to place a picture there and have to load the digital signatures as Jpegs on to the server to OA top
    and have to refer them in the XML for dynamically get the signature on the reports
    when u select the properties of the picture placed in the XML template,
    there will be one tab with "URL"... in that u have to give the path for that jpegs
    Pls refer the following documents for enabling digital signature on pdf documents.
    http://iasdocs.us.oracle.com/iasdl/bi_ee/doc/bi.1013/e12187/T421739T481159.htm#5013638    (refer section 'Adding or Designating a Field for Digital Signature'
    http://iasdocs.us.oracle.com/iasdl/bi_ee/doc/bi.1013/e12188/T421739T475591.htm#5013688
    (Implementing a Digital Signature
    Is the BI Publisher installed on your instance of version 10.1.3.4 or higher?
    Pls procure a digital signature as soon as possible. The process can take time. OR we could use any certificate that you already might have OR generate a certificate using Oracle Certificate Authority for demo.

  • 2-byte error in XML Parser for PL/SQL

    environment:
    oracle 8.1.5
    XML parser for Java 2.0.2.6.0
    XML parser for PL/SQL 1.0.1.0.0
    we use CLOB as xml data container, but it does not work properly with 2 byte chracter set.
    I tested same situation except using VARCHAR2 instead of CLOB, it works without problem.
    I think there is some bug in method parseClob of oracle.xml.parser.plsql.XMLParserCover about converting CLOB into String.
    I appreciate any help to work around this problem.

    Hi,
    We couldn't reproduce this error with our test case. Can you please post a test case that gives you this problem so we can assist you further?
    Thank you,
    Oracle XML Team

  • XML Parser for PL/SQL

    Hi,
    I have to produce and manipulate XML documents in PL/SQL. I have downloaded the XML Parser for PL/SQL from Oracle's web site.
    Can anyone please:
    1. Point me to some examples illustrating XML DOM manipulation with PL/SQL.
    2. Any information about PL/SQL packages used for XML manipulation.
    I am using Oracle 8i version 8.1.6
    Thanks,
    Rossen

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Rossen Petkov ([email protected]):
    Hi,
    I have to produce and manipulate XML documents in PL/SQL. I have downloaded the XML Parser for PL/SQL from Oracle's web site.
    Can anyone please:
    1. Point me to some examples illustrating XML DOM manipulation with PL/SQL.
    2. Any information about PL/SQL packages used for XML manipulation.
    I am using Oracle 8i version 8.1.6
    Thanks,
    Rossen<HR></BLOCKQUOTE>
    Hope this will do something
    set serveroutput on
    create or replace procedure domsample(dir varchar2, inpfile varchar2, errfile varchar2) is
    p xmlparser.parser;
    doc xmldom.DOMDocument;
    -- Print elements
    procedure printElements( doc xmldom.DOMDocument) is
    nl xmldom.DOMNodeList;
    len number;
    n xmldom.DOMNode;
    t xmldom.DOMNode;
    begin
    -- get all elements.
    nl := xmldom.getElementsByTagName(doc,'*');
    len := xmldom.getLength(nl);
    -- loop through elements.
    for i in 0..len-1 loop
    if xmldom.isnull(nl) = FALSE then
    n := xmldom.item(nl,i);
    IF xmldom.hasChildNodes(n) then
    t := xmldom.getFirstChild(n);
    dbms_output.put(xmldom.getNodeName(n) &#0124; &#0124;':');
    dbms_output.put_line(xmldom.getNodeValue(t));
    end if;
    end if;
    end loop;
    dbms_output.put_line(' ');
    end printElements;
    -- print the attributes of each element in a document.
    procedure printElementAttributes(doc xmldom.DOMDocument) is
    nl xmldom.DOMNodelist;
    len1 number;
    len2 number;
    n xmldom.DOMNode;
    e xmldom.DOMElement;
    nnm xmldom.DOMNamedNodeMap;
    attrname varchar2(100);
    attrval varchar2(100);
    begin
    -- get all Elements
    nl := xmldom.getElementsByTagName(doc,'*');
    len1 := xmldom.getLength(nl);
    -- loop through elements.
    for j in 0 .. len1 - 1 loop
    n := xmldom.item(nl,j);
    e := xmldom.makeElement(n);
    dbms_output.put_line(xmldom.getTagName(e) &#0124; &#0124; ':');
    -- get all attributes of element
    nnm := xmldom.getAttributes(n);
    if (xmldom.isNull(nnm) = FALSE) then
    len2 := xmldom.getLength(nnm);
    -- loop through attributes
    for i in 0..len2 -1 loop
    n := xmldom.item(nnm,i);
    attrname := xmldom.getNodeName(n);
    attrval := xmldom.getNodeValue(n);
    dbms_output.put(' '&#0124; &#0124;attrname&#0124; &#0124;' = '&#0124; &#0124;attrval);
    end loop;
    dbms_output.put_line(' ');
    end if;
    end loop;
    end printElementAttributes;
    begin
    -- new parser.
    p := xmlparser.newParser;
    -- set some charecterstics.
    xmlparser.setValidationMode(p,FALSE);
    xmlparser.setErrorLog(p, dir&#0124; &#0124;'/'&#0124; &#0124;errfile);
    xmlparser.setBaseDir(p,dir);
    -- parse input file
    xmlparser.parse(p,dir&#0124; &#0124;'/'&#0124; &#0124;inpfile);
    -- get document
    doc := xmlparser.getDocument(p);
    -- print document elements.
    dbms_output.put_line('The elements are: ');
    printElements(doc);
    -- print document element attributes
    dbms_output.put_line('The attributes of each element are: ');
    printElementAttributes(doc);
    -- deal with exception
    exception
    when xmldom.INDEX_SIZE_ERR then
    raise_application_error(-20120,'Index Size Error');
    when xmldom.DOMSTRING_SIZE_ERR then
    raise_application_error(-20120,'String Size Error');
    when xmldom.HIERARCHY_REQUEST_ERR then
    raise_application_error(-20120,'Hierarchy Request Error');
    when xmldom.WRONG_DOCUMENT_ERR then
    raise_application_error(-20120,'Worng Document Error');
    when xmldom.INVALID_CHARACTER_ERR then
    raise_application_error(-20120,'Invalid Character Error');
    when xmldom.NO_DATA_ALLOWED_ERR then
    raise_application_error(-20120,'No Data Allowed Error ');
    when xmldom.NO_MODIFICATION_ALLOWED_ERR then
    raise_application_error(-20120,'No Modification Allowed Error');
    when xmldom.NOT_FOUND_ERR then
    raise_application_error(-20120,'Not Found Error');
    when xmldom.NOT_SUPPORTED_ERR then
    raise_application_error(-20120,'Not Supported Error');
    when xmldom.INUSE_ATTRIBUTE_ERR then
    raise_application_error(-20120,'In Use Attribute Error');
    end domsample;
    show errors;
    Cheers
    Srianth

  • XML Parser for PL/SQL - charset

    Hi,
    I'm using XML Parser for PL/SQL and have some trouble with encoding of results xmldom.writeToBuffer and xmldom.writeToCLOB procedures.
    Some tags in my DOM documents contain text values in RUSSIAN (server nls_charset is CL8ISO8859P5). When I write document in varchar2 variable, buffer content is in UTF8 encoding ( convert UTF8->CL8ISO8859P5 -OK).
    xmldom.setCharset(doc, 'ISO-8859-5') just after xmldom.newDOMDocument has no effect.
    xmldom.setCharset(doc, 'CL8ISO8859P5') has no effect also.
    Explicit charset direction in third parameter of
    xmldom.writeToBuffer and xmldom.writeToCLOB procedure has no effect.
    When I write document in CLOB, and then read part of CLOB in varchar2 buffer - result contain '?' in place of all russian text characters.
    What's a problem?
    How can I force XML Parser write XML in server charset?
    Platform:
    Oracle8i Enterprise Edition Release 8.1.6.1.0
    JServer Release 8.1.6.1.0
    Oracle XML Parser for PL/SQL v 1.0.2

    I have the same problem. But in my case I am allowed only to use XML Parser for PL/SQL.
    Characterset 'WE8ISO8859P1' is used. And the language is latvian.
    After parsing a XML document and printing its contents, all latvian characters are replaced by "f".
    xmldom.setcharset(doc,'WE8ISO8859P1') has no effect.

  • Validation XML documnet with XML Schema in PL/SQL

    Hello,
    can someone please explain
    How to validate an XML document with XML schema using PL/SQL code (with out writing Java code).
    Thanks for your Help in Advance
    Surendra.

    see the posting: Schema validation routine?
    regards, Bart

  • XML validation in pl/sql without installing java?

    Hi!
    Is it possible to validate xml documents in pl/sql without installing java in Oracle 10.2?

    What do you mean?
    We can manuplate [url http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements001.htm#i160550]XML Datatype in SQL, additionaly we can use some packages such as [url http://download-west.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_xmlgen.htm#sthref11099]DBMS_XMLGEN, [url http://download-west.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_xmlpar.htm#sthref11213]DBMS_XMLPARSER etc in PL/SQL.

  • Oracle XML Parser for PL/SQL - troubles with charset

    Hi,
    I'm using Oracle XML Parser for PL/SQL and have some troubles with charset of results xmldom.writeToBuffer and xmldom.writeToCLOB procedures.
    Some tags in my DOM documents contain text values in RUSSIAN (server nls_charset is CL8ISO8859P5). When I write document in varchar2 variable, buffer content is in UTF8 charset ( convert UTF8->CL8ISO8859P5 -OK).
    xmldom.setCharset(doc, 'ISO-8859-5') just after xmldom.newDOMDocument has no effect.
    xmldom.setCharset(doc, 'CL8ISO8859P5') has no effect also.
    Explicit charset direction in third parameter of
    xmldom.writeToBuffer and xmldom.writeToCLOB procedure has no effect.
    When I write document in CLOB, and then read part of CLOB in varchar2 buffer - result contain '?' in place of all russian text characters.
    What's a problem?
    How can I force XML Parser write XML in server charset?
    Oracle XML Parser for PL/SQL v 1.0.2

    I have the same problem. But in my case I am allowed only to use XML Parser for PL/SQL.
    Characterset 'WE8ISO8859P1' is used. And the language is latvian.
    After parsing a XML document and printing its contents, all latvian characters are replaced by "f".
    xmldom.setcharset(doc,'WE8ISO8859P1') has no effect.

  • URGENT!! Generating XML in a PL/SQL stored proc

    Hi,
    I need to generate XML from a PL/SQL stored proc.
    I need to do it in Oracle 7.3.4 as well as 8.1.6 databases.
    I need to have my own defined tags in the xml.
    Say I have the table Person like
    Person (
    id number,
    fname varchar2(40),
    lname varchar2(40)
    I need a stored proc will will select * from Person and output the data in XML form as
    <Person Names>
    <Employee>
    <First Name personid="<<value from id field>>">
    <<value from fname field>>
    </First Name>
    <Last Name>
    << value from lname field>>
    </Last Name>
    </Employee>
    </Person Names>
    I want to minimise hard coding also.
    how can I do this ? any pointers ?
    Thanks in advance, Hari
    null

    Hi,
    We are not having a Web Agent here. So i am unable to use PLSXML utility.
    I installed XSU and is now able to create the XML, but with the table attribute names as the tags. So
    1. Is there a way I can transform this XML to another XML with custom tags ( using an XSL ) in a PL/SQL procedure ?
    2. Is there a way I can install and use PLSXML without the web agent ?
    Thanks, Hari

Maybe you are looking for

  • How do I get voice memos from an un-synced iPhone onto a MacBookPro?

    How do I get voice memos from an un-synced iPhone onto a MacBookPro? Problem: when I click Sync I get a warning stating "Are you sure you want to sync music? All existing songs and playlists on the iPhone "Jarrod Vassallo's iPhone" will be replaced w

  • Vendor Account group assign recon. account

    Hi Experts, I'm looking tcode to assing recon. account for vendor account group. I created Vendor account group and recon. account. I would like to have in tcode fk01 assing Vendor account group to recon. account. Now in tcode fk01 I choose vendor ac

  • Labview software problem.

    Hi All, I just installed LabView 2009 32 bit Student Edition on my 64 bit Windows XP Computer.  The product has been activated and I am able to get to the "Getting Started" Window.  When I click on a "New VI", the corresponding vi windows pop up, but

  • Button wont work after Swipe

    Hello everybody, I have this script to scroll a movieclip on Ipad: import fl.transitions.Tween; import fl.transitions.easing.*; text_asco.addEventListener(TransformGestureEvent.GESTURE_SWIPE, onSwipe8); function onSwipe8 (e:TransformGestureEvent):voi

  • GoPro 3+ Burst Mode ?

    I have a Gopro Hero 3+ and want to make the cool shot using burst mode putting the pictures together.  Is there a way to do that with FCPX?  Thanks for your help.