AJAX Memory Tree

Hello,
Has anybody tried the http://www.oracle.com/technology/pub/articles/spendolini-tree.html example? On my Oracle XE for Windows it does not work...when executing the "Listing 1", I receive the "PL/SQL: Error on line 203"...and the line 203 is what follows:
for x in (select a.pid, a.id, a.name,
(select count(*) from tree_view b where
b.pid = a.id) branch_count
from tree_view a
where a.pid = v('P1_BRANCH_ID'))
loop
if(x.branch_count > 0) then
     -- There are sub-nodes - render with a +/- icon
     insert into tree_temp values(null, v('APP_USER'), v('APP_SESSION'), x.pid, x.id, x.name, 'Y', 'plus');
else
     -- This is an end-node - no need for a +/- icon
     insert into tree_temp values(null, v('APP_USER'), v('APP_SESSION'), x.pid, x.id, x.name, 'N', null);
end if;
end loop;
end expand;
Greetings,
HeCSa.

I've worked through the example and hit a problem. When I select an item within the tree, it appends another tree below the original tree...although it does update the current node. Has anyone has this problem?
eg
Manager
Emp1
Emp2
Emp3
click on emp2 and get
Manager
Emp1
Emp2
Emp3
Manager
Emp1
Emp2
Emp3
I had a quick look within the process_click procedure within Listing 1 and is reference to an item P1_SELECTED_FD_ID which I presume should be P1_SELECTED_NODE...although changing this didn't solve the problem.
Thought I would see if it is a general fault before I look further.

Similar Messages

  • Please can anyone help with ajax memory tree

    I need to have the ajax memory tree expanded on page load. Can anyone please give me some ideas or piece of code. I have the tree working perfectly but only, the users have to click on the + sign to see the branches. This is from Scott Spendolini's example.
    Thanks in advance,
    Suma

    Hi Suma,
    I posted this on the other thread but if you haven't checked that, here is the code I use to simulate the first button click (in a PL/SQL region after the tree region)
    declare
    l_id number;
    begin
    select id into l_id from tree_view where pid is null;
    htp.p('<script language="Javascript">var table = document.getElementsByName("level_1");
    if (table.item(0).name = "level_1")
    getTreeNode(table.item(0),'||l_id||');
    </script>');
    end;
    Cheers,
    Paul

  • Conceptual problem: AJAX Memory tree for navigation

    Hello,
    I have a conceptual problem with a navigation tree.
    I have to implement a AJAX memory tree for navigation purposes, which should be on page 0, so this tree is on the left side of every page.
    Therefore I searches some examples and found this: http://www.oracle.com/technology/pub/articles/spendolini-tree.html
    So I try to rebuild this example with my custom tables and recognised that this example is very slow. I have round about 100 nodes in the tree and my database and network connection is extremly fast(I`m sitting in a proffesional data center).
    So first of all I am wondering why the tree is so slow when I try to expand it and if it is possible to use this tree on the page 0.
    Because of the performance problem I searched for some alternatives, but I didn`t found one.
    Every custom APEX-tree is not dynamic(AJAX) and the dynamic APEX-lists can not base on a select-statement.
    So at this moment I don`t know how to build a AJAX memory tree for navigation which is fast, looks good and works as expected.
    Does anybody have an idea why the tree is so slow?
    Are there alternatives which I can try to use?
    Thank you,
    Tim

    Hi Tim
    100 nodes is not a lot of data for a tree, so why bother with AJAX at all.
    Just render the entire tree, and let the user expand and collapse nodes as they like.
    APEX has a dhtml tree in the standard themes which is enough to get you started.
    The issue I had with it is that it isn't stateful, so doesn't remember which nodes are open between page refreshes.
    That's what got me into ExtJS originally.
    If you look at my demo, I have a couple of examples worth looking at:
    - [tree using APEX lists|http://apex.oracle.com/pls/otn/f?p=200801:2025:0::NO:::] uses APEX built in hierarchical lists, which allows conditional logic on nodes
    - [AJAX editable tree|http://apex.oracle.com/pls/otn/f?p=200801:2013:0::NO:::] which is fully AJAX enabled.
    The other point worth mentioning is if you are using hierarchical queries for your tree you should consider restructuring your data set.
    Typically trees are fairly static, in that the data changes very little over time.
    This makes a very strong case for maintaining the node sequence and level in a denormalised way.
    Data updates become more expensive, but read operations, which will be the bulk of your operations will be very fast.
    Many choices on how to implement, e.g. materialized views with refresh on demand.
    Regards
    Mark
    [Random Insights into Oracle|http://oracleinsights.blogspot.com/] | [Marks Playpen|http://apex.oracle.com/pls/otn/f?p=200801]

  • "+" sign on top of the label in ajax memory tree. Please help..

    Hi all,
    I am following Spendolini's example of creating a ajax memory tree. Everything is working fine, but for the display. The "+" or "-" sign is being displayed on top the label as follows:
    +
    OPTION1
    I placed the tree in sidebar region. Can anyone give me some suggestions?
    Regards,
    Suma.

    Suma,
    That is simply an issue with putting the tree in the sidebar of the template, which has a fixed width. You'll need to change the HTML of the template for that page in order to prevent the "+" from being displayed on its own line. Otherwise, you can put the Tree in a standard region and put your report adjacent to it by selecting Column 2 for the report.
    Thanks,
    - Scott -

  • Ajax memory tree can't expand when searching for a specific node.

    Hi,
    I've just followed the ajax tree example. Everything is working except when the find node windows pop up and a node is selected. the corresponding report is displayed but the ajax tree doesn't expand accordingly.
    Any help would be appreciated.
    Thanks
    Venus

    I too am having this issue with Scott's search ajax tree example listed here..
    http://www.oracle.com/technology/pub/articles/spendolini-tree.html
    The correct node is highlighted if that level of the tree happens to be expanded, but the tree is not automatically expanding to show the correct node. Which part of the code is meant to "automatically expand" the tree? Is it the
    "if tree_rec.id = y.id and tree_rec.id != v('P1_SELECTED_NODE') then..."
    section of "find_node" in
    http://www.oracle.com/technology/pub/listings/spendolini-tree-l1.html
    Any help appreciated.
    Thanks, Penny

  • Have an ajax memory tree in a pl/sql region be rendered only once in a page

    Hi all,
    I have a pl/sql region with region source calling a function "ajax_memory_tree.render". Everytime I come back to this particular page, I am having a tree being rendered. Can you give any suggestion as to how I can have only one tree. Thank you for your help/ideas.
    regards,
    Suma.

    procedure render_branch
      (p_type in varchar2, p_icon in varchar2, p_class in varchar2, p_id in number, p_pid in number, p_name in varchar2)
    is
    x varchar2(1000);
    y varchar2(2000);
    begin
    -- If the branch has sub nodes, render it with a +/- sign
    if p_type = 'exp' then
        htp.prn('&lt;li style="vertical-align:right;">&lt;img style="cursor:pointer;margin-right:15px;"
             src="/i/' || p_icon || '.gif" onClick="getTreeNode(this,''' || p_id || ''')" />
       &lt;a class="' || p_class || '" href="f?p=' ||
       v('APP_ID') || ':1:' || v('APP_SESSION') || '::::P1_SELECTED_NODE:' || p_id || '">' || p_name ||
       '&lt;/a>&lt;/span>&lt;/li>');
    -- Otherwise, just render the item
    else
    if p_id = 5000 then
        select opt_path into x from e_navopts where opt_num = p_id and popt_num = p_pid
        and userid = v('APP_USER');
            htp.prn('&lt;li style="vertical-align:right;margin-left:15px;">&lt;img src="/i/wwv_bullet.gif" style="padding-right:8px;"/>&lt;a
      class="' || p_class || '" href="'||x || v('APP_SESSION')|| '::::'||
      '">' || p_name ||'&lt;/a>&lt;/span>&lt;/li>');
    elsif  p_id = 3000 then
        select opt_path into x from e_navopts where opt_num = p_id and popt_num = p_pid
        and userid = v('APP_USER');
        select opt_params into y from e_navopts where opt_num = p_id and popt_num = p_pid
        and userid = v('APP_USER');
           htp.prn('&lt;li style="vertical-align:right;margin-left:15px;">&lt;img src="/i/wwv_bullet.gif" style="padding-right:8px;"/>&lt;a
      class="' || p_class || '" href="'||x || v('APP_SESSION')|| '::::'||
      '">' || p_name ||'&lt;/a>&lt;/span>&lt;/li>');
    else
      htp.prn('&lt;li style="vertical-align:right;margin-left:15px;">&lt;img src="/i/wwv_bullet.gif" style="padding-right:8px;"/>&lt;a
      class="' || p_class || '" href="f?p=' || v('APP_ID') || ':1:' || v('APP_SESSION') ||
      '::::P1_SELECTED_NODE:' || p_id || '">' || p_name || '&lt;/a>&lt;/span>&lt;/li>');
        end if;
    end if;
    end render_branch;

  • Is it possible to create a tree with drag-and-drop functionality using ajax

    I saw these samples;
    Scott Spendolini's AJAX Select List Demo
    http://htmldb.oracle.com/pls/otn/f?p=33867:1:10730556242433798443
    Building an Ajax Memory Tree by Scott Spendolini
    http://www.oracle.com/technology/pub/articles/spendolini-tree.html
    Carl Backstrom ApEx-AJAX & DHTML examples;
    http://htmldb.oracle.com/pls/otn/f?p=11933:5:8901671725714285254
    Do you think is it possible to create a tree with drag-and-drop functionality using ajax and apex like this sample; http://www.scbr.com/docs/products/dhtmlxTree/
    Thank you,
    Kind regards.
    Tonguç

    Hello,
    Sure you can build it, I just don't think anyone has, you could also use their solution as well in an APEX page it's just a matter of integration.
    Carl

  • Ajaxed Tree

    Hi all,
    I have created a tree which is working as my navigation aid to tabs, it is using following query
    select "PAGE_NO" id,
    "PARENT_PAGE_NO" pid,
    "NAME" name,
    CASE WHEN NAVIGATION = 'Y' THEN 'f?p=&APP_ID.:'||page_no||':&SESSION.::NO::P0_PARENT_TAB:'||PARENT_TAB||'' ELSE null END LINK,
    null a1,
    null a2
    from "#OWNER#"."APEX_PAGES" where page_no not in (select "PAGE_NO" from "#OWNER#"."APEX_USER_PAGES" where "APP_USER"=:APP_USER)
    order by IDENTIFIER
    But my problem is that page even refreshes when i just click its expand or collapse icon. How can i stop page from refreshing when i click expand or collapse button??? The answer is probably AJAX. But i don't know how can i implement ajax in application express. I have seen few examples, such as BUILDING AJAX MEMORY TREE, but was unable to proceed any furthur. Can anyone explain me step by step, how can i implement ajax in my application on the tree.
    Thanks a lot
    Sunil Bhatia

    Hi,
    OK - In my example, page 1 shows the tree but it is defined on page 2.
    To set this up, do the following:
    1 - Create TWO application items (through Shared Components, Application Items):
    G_TREE_ROOT
    TEMP_REQUEST
    2 - Create an Application Computation (through Shared Components, Application Computations):
    Application Item: G_TREE_ROOT
    Computation Point: Before Header
    Computation Type: Static Assignment
    Computation: 7839
    These settings are based on using the EMP table for the test pages - 7839 is KING, the top person in the tree, so I just need to set this value. Adjust these as required for your tree.
    This computation should be conditional on G_TREE_ROOT being NULL - this ensures that this item gets an initial value
    3 - Create a new Page template (through Shared Compenents, Templates) - this should be created "From scratch" rather than as a copy of an existing template. This new template is so that we can output only the contents of a page region rather than an entire page - I call this template "Page Snippet"
    When created, edit it. You only need two settings:
    Header: (enter a space)
    Body: #BOX_BODY#
    The space is required as the Header definition is required. #BOX_BODY# will be replaced by the contents of the region on the page
    4 - Now create a new page in your app. This should be a "Tree" page - in my example, this is page 2.
    The tree's SQL query should be:
    select "EMPNO" id,
           "MGR" pid,
           "ENAME" name,
           null link,
           EMPNO a1,
           'f?p=&APP_ID.:1:&SESSION.::::P1_EMPNO:' || EMPNO A2
    from "#OWNER#"."EMP"On my page 1, I will have a page item (P1_EMPNO) and a report filtered using this value - A2 is going to be used to create a link to populate P1_EMPNO. The link is not set using the normal LINK item.
    The Application Item for the tree needs to be set to G_TREE_ROOT. You should, though, create it as P2_TREE_ROOT to start with and we can change this later
    5 - When the tree page has been created set the page to use your new "Page Snippet" page template
    6 - You must only have one region on this page - this should, of course, be the region containing the tree. As you don't need anything else on the page, including the buttons, delete everything except for the tree region
    7 - On your tree page, add in a new Process:
    Name: P2_SET_REQUEST
    Process Point: On Load - Before Header
    Process:
    BEGIN
    APEX_APPLICATION.G_REQUEST := :TEMP_REQUEST;
    END;8 - Now click on the Tree link in the region to go to the tree's definition.
    Change the tree's Application Item setting to: G_TREE_ROOT
    Then, you need to adjust a number of the settings in the tree's templates:
    Unexpanded Parent:
    &lt;td&gt;
    &lt;a href="#" onclick="javascript:getTree('EXPAND,#A1#');"&gt;
      &lt;img src="#IMAGE_PREFIX#Fndtre02.gif" width="16" height="22" border="0"&gt;
    &lt;/a&gt;
    &lt;/td&gt;Unexpanded Parent Last:
    &lt;td&gt;
    &lt;a href="#" onclick="javascript:getTree('EXPAND,#A1#');"&gt;
      &lt;img src="#IMAGE_PREFIX#Fndtre03.gif" width="16" height="22" border="0"&gt;
    &lt;/a&gt;
    &lt;/td&gt;Expanded Parent:
    &lt;td&gt;
    &lt;a href="#" onclick="javascript:getTree('CONTRACT,#A1#');"&gt;
      &lt;img src="#IMAGE_PREFIX#Fndtre05.gif" width="16" height="22" border="0"&gt;
    &lt;/a&gt;
    &lt;/td&gt;Expanded Parent Last:
    &lt;td&gt;
    &lt;a href="#" onclick="javascript:getTree('CONTRACT,#A1#');"&gt;
      &lt;img src="#IMAGE_PREFIX#Fndtre06.gif" width="16" height="22" border="0"&gt;
    &lt;/a&gt;
    &lt;/td&gt;Parent Node Template:
    &lt;tr&gt;
    #INDENT#
    &lt;td colspan="#COLSPAN#" valign="CENTER" class="tiny"&gt;
      #NAME# #DRILL_UP#
    &lt;/td&gt;
    &lt;/tr&gt;Node Text Template:
    &lt;tr&gt;
    #INDENT#
    &lt;td colspan="#COLSPAN#" valign="CENTER" class="tiny"&gt;
      #NAME#
    &lt;/td&gt;
    &lt;/tr&gt;Name Link Anchor Tag:
    &lt;a href="#A2#"&gt;#NAME#&lt;/a&gt;Name Link Not Anchor Tag:
    &lt;a href="#A2#"&gt;#NAME#&lt;/a&gt;8 - On your page 1 (where the tree will actually be displayed), set the page template to one that includes ".. with Sidebar" - this allows you to use region position 2 to show the tree on the left
    9 - Then create a new HTML region and put this in the Page Template Region Position 2 display point. The source of this region should be:
    &lt;div id="MyTree"&gt;&lt;/div&gt;10 - Then add another HTML region on your page. This should use No Template and be in the Before Footer display point. The source of this should be:
    &lt;script type="text/javascript"&gt;
    function getTree(req)
      var get = new htmldb_Get(null,$x('pFlowId').value, null, 2);
      get.add('TEMP_REQUEST', req);
      var gReturn = get.get(null,'&lt;htmldb:BOX_BODY&gt;','&lt;/htmldb:BOX_BODY&gt;');
      document.getElementById('MyTree').innerHTML = gReturn;
      document.getElementById('MyTree').innerHTML += "";
      get = null;
      gReturn = null;
    getTree('');
    &lt;/script&gt;11 - Then add a report on the page. The source of this should be:
    SELECT EMPNO, ENAME, JOB, SAL, COMM
    FROM EMP
    WHERE EMPNO = :P1_EMPNO12 - Add a new page item to the report region. This should be a "Display as Text (saves state)" item and called P1_EMPNO
    To explain how this works:
    Firstly, a Region Pull should only pull contents of a region that does not contain any page items. The region should be the only thing on the page and the page itself must not contain the normal page layout (that is, there should be no tabs etc) - hence the "Page Snippet" page template
    When you click on a normal tree's + or - icons for an item, it actually passes a request of either CONTRACT,xxx or EXPAND,xxx (where xxx is the ID for the node being expanded/collapsed).
    The getTree() function receives as a parameter a value that we can use for the request. Initially, this is an empty string, so the tree will display in its default state.
    Then, as you click on a + or - on our adjusted tree, a call is made to the getTree() function passing in the desired CONTRACT or EXPAND value.
    In the Ajax call (the htmldb_Get() function), we do not call an application process (the second null parameter) but tell it that we want the output from page 2 (the final parameter)
    The get.add(..) line passes our request value into the TEMP_REQUEST application item. This is done before the get.get(..) call - which does the actual pull.
    When page 2 is being rendered on the server, the "On Load - Before Header" takes the value from the TEMP_REQUEST item and sets it as the proper request value for the page. The tree then renders using this (in the same way as it would if the request value was passed via the URL)
    The get.get(..) line, retrieves everything on page 2 and updates the DIV tag contents in our page 1 region - which now shows the expanded or collapsed node(s).
    As we have updated the tree's definition to call javascript when the + or - are clicked, the actual links are defined in the additional A1 and A2 fields that are available on a tree's SQL. We position #A1# and #A2# on the tree's templates where we want the link to appear - hence having to update so many of the tree's template definitions.
    Hopefully, you should be able to adjust the above to fit your application - just remember that my page 1 is the page that is being displayed to the user and page 2 contains the tree. As long as you follow the same steps as above and adjust for your page numbers and SQL, you should be able to achieve your results
    Andy

  • Possible to use Beehive tags inside Workshop for AJAX?

    All,
    Our application is built using Workshop on WLS SP2, and we were thinking of adding some AJAX features in, especially an AJAX tree control. We know of the BEA WebLogic Tree control, but it doesnt support AJAX. On the other hand, the same control has been re-worked under Apache Beehive to support AJAX. Could anyone please tell me if they have managed to get Beehive tags work inside Workshop? Any pointers/suggestions on other AJAX-enabled Tree controls are welcome too!
    Thanks ,
    Vikram.

    At this point, Beehive tags can't be used in Workshop 8.1 apps. Beehive depends on JDK 1.5 features that are not available in Workshop 8.1.
    Thanks,
    David Gorton
    Workshop Customer Centric Engineering (CCE)

  • Is there a way to extract information from a registered schema ?

    Hello,
    with the aid of the XSOM project in java.net, and using the following after I loaded the appropriate jars and creating the wrapper PL/SQL
    CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED GMS10.XSOMNAVIGATOR AS
    import java.util.Vector;
    import com.sun.xml.xsom.XSComplexType;
    import com.sun.xml.xsom.XSElementDecl;
    import com.sun.xml.xsom.XSFacet;
    import com.sun.xml.xsom.XSModelGroup;
    import com.sun.xml.xsom.XSModelGroupDecl;
    import com.sun.xml.xsom.XSParticle;
    import com.sun.xml.xsom.XSRestrictionSimpleType;
    import com.sun.xml.xsom.XSSimpleType;
    import com.sun.xml.xsom.XSTerm;
    import com.sun.xml.xsom.parser.XSOMParser;
    public class XSOMNavigator
        public static class SimpleTypeRestriction
            public String[] enumeration = null;
            public String   maxValue    = null;
            public String   minValue    = null;
            public String   length      = null;
            public String   maxLength   = null;
            public String   minLength   = null;
            public String[] pattern     = null;
            public String   totalDigits = null;
            public String toString()
                String enumValues = "";
                if (enumeration != null)
                    for(String val : enumeration)
                        enumValues += val + ", ";
                    enumValues = enumValues.substring(0, enumValues.lastIndexOf(','));
                String patternValues = "";
                if (pattern != null)
                    for(String val : pattern)
                        patternValues += "(" + val + ")|";
                    patternValues = patternValues.substring(0, patternValues.lastIndexOf('|'));
                String retval = "";
                retval += maxValue    == null ? "" : "[MaxValue  = "   + maxValue      + "]\t";
                retval += minValue    == null ? "" : "[MinValue  = "   + minValue      + "]\t";
                retval += maxLength   == null ? "" : "[MaxLength = "   + maxLength     + "]\t";
                retval += minLength   == null ? "" : "[MinLength = "   + minLength     + "]\t";
                retval += pattern     == null ? "" : "[Pattern(s) = "  + patternValues + "]\t";
                retval += totalDigits == null ? "" : "[TotalDigits = " + totalDigits   + "]\t";
                retval += length      == null ? "" : "[Length = "      + length        + "]\t";         
                retval += enumeration == null ? "" : "[Values = "      + enumValues    + "]\t";
                return retval;
        private static void initRestrictions(XSSimpleType xsSimpleType, SimpleTypeRestriction simpleTypeRestriction)
            XSRestrictionSimpleType restriction = xsSimpleType.asRestriction();
            if (restriction != null)
                Vector<String> enumeration = new Vector<String>();
                Vector<String> pattern     = new Vector<String>();
                for (XSFacet facet : restriction.getDeclaredFacets())
                    if (facet.getName().equals(XSFacet.FACET_ENUMERATION))
                        enumeration.add(facet.getValue().value);
                    if (facet.getName().equals(XSFacet.FACET_MAXINCLUSIVE))
                        simpleTypeRestriction.maxValue = facet.getValue().value;
                    if (facet.getName().equals(XSFacet.FACET_MININCLUSIVE))
                        simpleTypeRestriction.minValue = facet.getValue().value;
                    if (facet.getName().equals(XSFacet.FACET_MAXEXCLUSIVE))
                        simpleTypeRestriction.maxValue = String.valueOf(Integer.parseInt(facet.getValue().value) - 1);
                    if (facet.getName().equals(XSFacet.FACET_MINEXCLUSIVE))
                        simpleTypeRestriction.minValue = String.valueOf(Integer.parseInt(facet.getValue().value) + 1);
                    if (facet.getName().equals(XSFacet.FACET_LENGTH))
                        simpleTypeRestriction.length = facet.getValue().value;
                    if (facet.getName().equals(XSFacet.FACET_MAXLENGTH))
                        simpleTypeRestriction.maxLength = facet.getValue().value;
                    if (facet.getName().equals(XSFacet.FACET_MINLENGTH))
                        simpleTypeRestriction.minLength = facet.getValue().value;
                    if (facet.getName().equals(XSFacet.FACET_PATTERN))
                        pattern.add(facet.getValue().value);
                    if (facet.getName().equals(XSFacet.FACET_TOTALDIGITS))
                        simpleTypeRestriction.totalDigits = facet.getValue().value;
                if (enumeration.size() > 0)
                    simpleTypeRestriction.enumeration = enumeration.toArray(new String[] {});
                if (pattern.size() > 0)
                    simpleTypeRestriction.pattern = pattern.toArray(new String[] {});
        private static void printParticle(XSParticle particle, String occurs, String absPath, String indent)
            occurs = "  MinOccurs = " + particle.getMinOccurs() + ", MaxOccurs = " + particle.getMaxOccurs();
            XSTerm term = particle.getTerm();
            if (term.isModelGroup())
                printGroup(term.asModelGroup(), occurs, absPath, indent);   
            else if(term.isModelGroupDecl())
                printGroupDecl(term.asModelGroupDecl(), occurs, absPath, indent);   
            else if (term.isElementDecl())
                printElement(term.asElementDecl(), occurs, absPath, indent);
            else
        private static void printGroup(XSModelGroup modelGroup, String occurs, String absPath, String indent)
            System.out.println(indent + "[Start of " + modelGroup.getCompositor() + occurs + "]" );
            for (XSParticle particle : modelGroup.getChildren())
                printParticle(particle, occurs, absPath, indent + "\t");
            System.out.println(indent + "[End of " + modelGroup.getCompositor() + "]");
        private static void printGroupDecl(XSModelGroupDecl modelGroupDecl, String occurs, String absPath, String indent)
            System.out.println(indent + "[Group " + modelGroupDecl.getName() + occurs + "]");
            printGroup(modelGroupDecl.getModelGroup(), occurs, absPath, indent);
        private static void printComplexType(XSComplexType complexType, String occurs, String absPath, String indent)
            System.out.println();
            XSParticle particle = complexType.getContentType().asParticle();
            if (particle != null)
                printParticle(particle, occurs, absPath, indent);
        private static void printSimpleType(XSSimpleType simpleType, String occurs, String absPath, String indent)
            SimpleTypeRestriction restriction = new SimpleTypeRestriction();
            initRestrictions(simpleType, restriction);
            System.out.println(restriction.toString());
        private static void printElement(XSElementDecl element, String occurs, String absPath, String indent)
            absPath += "/" + element.getName();
            System.out.print(indent + "[Element " + absPath + "   " + occurs + "] of type [" + element.getType().getBaseType().getName() + "]");
            if (element.getType().isComplexType())
                printComplexType(element.getType().asComplexType(), occurs, absPath, indent);
            else
                printSimpleType(element.getType().asSimpleType(), occurs, absPath, indent);
        public static void xsomNavigate(String xsdFile, String rootElement)
            String occurs  = "";
            String absPath = "";
            String indent  = "";
            try
                XSOMParser parser = new XSOMParser();
                parser.parse(xsdFile);
                printElement(parser.getResult().getSchema(1).getElementDecl(rootElement), occurs, absPath, indent);
            catch (Exception exp)
                exp.printStackTrace(System.out);
    /I obtained the following (correct) result
    [Element /CD026A   ] of type [anyType]
    [Start of sequence  MinOccurs = 1, MaxOccurs = 1]
         [Group HEADER  MinOccurs = 1, MaxOccurs = 1]
         [Start of sequence  MinOccurs = 1, MaxOccurs = 1]
              [Element /CD026A/SynIdeMES1     MinOccurs = 1, MaxOccurs = 1] of type [string][Values = UNOC]     
              [Element /CD026A/SynVerNumMES2     MinOccurs = 1, MaxOccurs = 1] of type [string][Values = 3]     
              [Element /CD026A/MesSenMES3     MinOccurs = 1, MaxOccurs = 1] of type [string][MaxLength = 70]     
              [Element /CD026A/SenIdeCodQuaMES4     MinOccurs = 0, MaxOccurs = 1] of type [string][MaxLength = 4]     
              [Element /CD026A/MesRecMES6     MinOccurs = 1, MaxOccurs = 1] of type [string][MaxLength = 35]     
              [Element /CD026A/RecIdeCodQuaMES7     MinOccurs = 0, MaxOccurs = 1] of type [string][MaxLength = 4]     
              [Element /CD026A/DatOfPreMES9     MinOccurs = 1, MaxOccurs = 1] of type [nonNegativeInteger][Pattern(s) = ([1-2][0-9]{3}[0][1-9][0][1-9])|([1-2][0-9]{3}[0][1-9][1|2][0-9])|([1-2][0-9]{3}[0][1-9][3][0|1])|([1-2][0-9]{3}[1][0-2][0][1-9])|([1-2][0-9]{3}[1][0-2][1|2][0-9])|([1-2][0-9]{3}[1][0-2][3][0|1])|([0-9]{2}[0][1-9][0][1-9])|([0-9]{2}[0][1-9][1|2][0-9])|([0-9]{2}[0][1-9][3][0|1])|([0-9]{2}[1][0-2][0][1-9])|([0-9]{2}[1][0-2][1|2][0-9])|([0-9]{2}[1][0-2][3][0|1])]     
              [Element /CD026A/TimOfPreMES10     MinOccurs = 1, MaxOccurs = 1] of type [string][Pattern(s) = ([0-1]{1}[0-9]{1}[0-5]{1}[0-9]{1})|([2]{1}[0-3]{1}[0-5]{1}[0-9]{1})]     [Length = 4]     
              [Element /CD026A/IntConRefMES11     MinOccurs = 1, MaxOccurs = 1] of type [string][MaxLength = 14]     
              [Element /CD026A/RecRefMES12     MinOccurs = 0, MaxOccurs = 1] of type [string][MaxLength = 14]     
              [Element /CD026A/RecRefQuaMES13     MinOccurs = 0, MaxOccurs = 1] of type [string][Length = 2]     
              [Element /CD026A/AppRefMES14     MinOccurs = 0, MaxOccurs = 1] of type [string][MaxLength = 14]     
              [Element /CD026A/PriMES15     MinOccurs = 0, MaxOccurs = 1] of type [string][MaxLength = 1]     
              [Element /CD026A/AckReqMES16     MinOccurs = 0, MaxOccurs = 1] of type [nonNegativeInteger][Values = 0, 1]     
              [Element /CD026A/ComAgrIdMES17     MinOccurs = 0, MaxOccurs = 1] of type [string][MaxLength = 35]     
              [Element /CD026A/TesIndMES18     MinOccurs = 0, MaxOccurs = 1] of type [nonNegativeInteger][Values = 0, 1]     
              [Element /CD026A/MesIdeMES19     MinOccurs = 1, MaxOccurs = 1] of type [string][MaxLength = 14]     
              [Element /CD026A/MesTypMES20     MinOccurs = 1, MaxOccurs = 1] of type [string][Values = CC004A, CC005A, CC007A, CC008A, CC009A, CC013A, CC014A, CC015A, CC016A, CC017A, CC019A, CC021A, CC023A, CC025A, CC026A, CC028A, CC029A, CC035A, CC043A, CC044A, CC045A, CC051A, CC054A, CC055A, CC058A, CC060A, CC062A, CC100A, CC102A, CC103A, CC224A, CC225A, CC228A, CC229A, CC231A, CC907A, CC917A, CD001A, CD002A, CD003A, CD006A, CD010A, CD018A, CD020A, CD024A, CD027A, CD030A, CD031A, CD032A, CD033A, CD034A, CD037A, CD038A, CD050A, CD059A, CD063A, CD104A, CD105A, CD106A, CD111A, CD112A, CD114A, CD115A, CD118A, CD200A, CD201A, CD203A, CD204A, CD205A, CD209A, CD411A, CD901A, CD904A, CD905A, CD906A, CD907A, CD912A, CD913A, CD914A, CD916A, CD931A, CD932A, AT004A, AT005A, AT007A, AT008A, AT009A, AT013A, AT014A, AT015A, AT016A, AT017A, AT019A, AT021A, AT023A, AT025A, AT026A, AT028A, AT029A, AT035A, AT043A, AT044A, AT045A, AT051A, AT054A, AT055A, AT058A, AT060A, AT062A, AT100A, AT102A, AT103A, AT224A, AT225A, AT228A, AT229A, AT231A, AT907A, AT917A, BE004A, BE005A, BE007A, BE008A, BE009A, BE013A, BE014A, BE015A, BE016A, BE017A, BE019A, BE021A, BE023A, BE025A, BE026A, BE028A, BE029A, BE035A, BE043A, BE044A, BE045A, BE051A, BE054A, BE055A, BE058A, BE060A, BE062A, BE100A, BE102A, BE103A, BE224A, BE225A, BE228A, BE229A, BE231A, BE907A, BE917A, CY004A, CY005A, CY007A, CY008A, CY009A, CY013A, CY014A, CY015A, CY016A, CY017A, CY019A, CY021A, CY023A, CY025A, CY026A, CY028A, CY029A, CY035A, CY043A, CY044A, CY045A, CY051A, CY054A, CY055A, CY058A, CY060A, CY062A, CY100A, CY102A, CY103A, CY224A, CY225A, CY228A, CY229A, CY231A, CY907A, CY917A, CZ004A, CZ005A, CZ007A, CZ008A, CZ009A, CZ013A, CZ014A, CZ015A, CZ016A, CZ017A, CZ019A, CZ021A, CZ023A, CZ025A, CZ026A, CZ028A, CZ029A, CZ035A, CZ043A, CZ044A, CZ045A, CZ051A, CZ054A, CZ055A, CZ058A, CZ060A, CZ062A, CZ100A, CZ102A, CZ103A, CZ224A, CZ225A, CZ228A, CZ229A, CZ231A, CZ907A, CZ917A, DE004A, DE005A, DE007A, DE008A, DE009A, DE013A, DE014A, DE015A, DE016A, DE017A, DE019A, DE021A, DE023A, DE025A, DE026A, DE028A, DE029A, DE035A, DE043A, DE044A, DE045A, DE051A, DE054A, DE055A, DE058A, DE060A, DE062A, DE100A, DE102A, DE103A, DE224A, DE225A, DE228A, DE229A, DE231A, DE907A, DE917A, DK004A, DK005A, DK007A, DK008A, DK009A, DK013A, DK014A, DK015A, DK016A, DK017A, DK019A, DK021A, DK023A, DK025A, DK026A, DK028A, DK029A, DK035A, DK043A, DK044A, DK045A, DK051A, DK054A, DK055A, DK058A, DK060A, DK062A, DK100A, DK102A, DK103A, DK224A, DK225A, DK228A, DK229A, DK231A, DK907A, DK917A, EE004A, EE005A, EE007A, EE008A, EE009A, EE013A, EE014A, EE015A, EE016A, EE017A, EE019A, EE021A, EE023A, EE025A, EE026A, EE028A, EE029A, EE035A, EE043A, EE044A, EE045A, EE051A, EE054A, EE055A, EE058A, EE060A, EE062A, EE100A, EE102A, EE103A, EE224A, EE225A, EE228A, EE229A, EE231A, EE907A, EE917A, ES004A, ES005A, ES007A, ES008A, ES009A, ES013A, ES014A, ES015A, ES016A, ES017A, ES019A, ES021A, ES023A, ES025A, ES026A, ES028A, ES029A, ES035A, ES043A, ES044A, ES045A, ES051A, ES054A, ES055A, ES058A, ES060A, ES062A, ES100A, ES102A, ES103A, ES224A, ES225A, ES228A, ES229A, ES231A, ES907A, ES917A, FI004A, FI005A, FI007A, FI008A, FI009A, FI013A, FI014A, FI015A, FI016A, FI017A, FI019A, FI021A, FI023A, FI025A, FI026A, FI028A, FI029A, FI035A, FI043A, FI044A, FI045A, FI051A, FI054A, FI055A, FI058A, FI060A, FI062A, FI100A, FI102A, FI103A, FI224A, FI225A, FI228A, FI229A, FI231A, FI907A, FI917A, FR004A, FR005A, FR007A, FR008A, FR009A, FR013A, FR014A, FR015A, FR016A, FR017A, FR019A, FR021A, FR023A, FR025A, FR026A, FR028A, FR029A, FR035A, FR043A, FR044A, FR045A, FR051A, FR054A, FR055A, FR058A, FR060A, FR062A, FR100A, FR102A, FR103A, FR224A, FR225A, FR228A, FR229A, FR231A, FR907A, FR917A, GB004A, GB005A, GB007A, GB008A, GB009A, GB013A, GB014A, GB015A, GB016A, GB017A, GB019A, GB021A, GB023A, GB025A, GB026A, GB028A, GB029A, GB035A, GB043A, GB044A, GB045A, GB051A, GB054A, GB055A, GB058A, GB060A, GB062A, GB100A, GB102A, GB103A, GB224A, GB225A, GB228A, GB229A, GB231A, GB907A, GB917A, GF004A, GF005A, GF007A, GF008A, GF009A, GF013A, GF014A, GF015A, GF016A, GF017A, GF019A, GF021A, GF023A, GF025A, GF026A, GF028A, GF029A, GF035A, GF043A, GF044A, GF045A, GF051A, GF054A, GF055A, GF058A, GF060A, GF062A, GF100A, GF102A, GF103A, GF224A, GF225A, GF228A, GF229A, GF231A, GF907A, GF917A, GP004A, GP005A, GP007A, GP008A, GP009A, GP013A, GP014A, GP015A, GP016A, GP017A, GP019A, GP021A, GP023A, GP025A, GP026A, GP028A, GP029A, GP035A, GP043A, GP044A, GP045A, GP051A, GP054A, GP055A, GP058A, GP060A, GP062A, GP100A, GP102A, GP103A, GP224A, GP225A, GP228A, GP229A, GP231A, GP907A, GP917A, GR004A, GR005A, GR007A, GR008A, GR009A, GR013A, GR014A, GR015A, GR016A, GR017A, GR019A, GR021A, GR023A, GR025A, GR026A, GR028A, GR029A, GR035A, GR043A, GR044A, GR045A, GR051A, GR054A, GR055A, GR058A, GR060A, GR062A, GR100A, GR102A, GR103A, GR224A, GR225A, GR228A, GR229A, GR231A, GR907A, GR917A, HU004A, HU005A, HU007A, HU008A, HU009A, HU013A, HU014A, HU015A, HU016A, HU017A, HU019A, HU021A, HU023A, HU025A, HU026A, HU028A, HU029A, HU035A, HU043A, HU044A, HU045A, HU051A, HU054A, HU055A, HU058A, HU060A, HU062A, HU100A, HU102A, HU103A, HU224A, HU225A, HU228A, HU229A, HU231A, HU907A, HU917A, IE004A, IE005A, IE007A, IE008A, IE009A, IE013A, IE014A, IE015A, IE016A, IE017A, IE019A, IE021A, IE023A, IE025A, IE026A, IE028A, IE029A, IE035A, IE043A, IE044A, IE045A, IE051A, IE054A, IE055A, IE058A, IE060A, IE062A, IE100A, IE102A, IE103A, IE224A, IE225A, IE228A, IE229A, IE231A, IE907A, IE917A, IT004A, IT005A, IT007A, IT008A, IT009A, IT013A, IT014A, IT015A, IT016A, IT017A, IT019A, IT021A, IT023A, IT025A, IT026A, IT028A, IT029A, IT035A, IT043A, IT044A, IT045A, IT051A, IT054A, IT055A, IT058A, IT060A, IT062A, IT100A, IT102A, IT103A, IT224A, IT225A, IT228A, IT229A, IT231A, IT907A, IT917A, LT004A, LT005A, LT007A, LT008A, LT009A, LT013A, LT014A, LT015A, LT016A, LT017A, LT019A, LT021A, LT023A, LT025A, LT026A, LT028A, LT029A, LT035A, LT043A, LT044A, LT045A, LT051A, LT054A, LT055A, LT058A, LT060A, LT062A, LT100A, LT102A, LT103A, LT224A, LT225A, LT228A, LT229A, LT231A, LT907A, LT917A, LU004A, LU005A, LU007A, LU008A, LU009A, LU013A, LU014A, LU015A, LU016A, LU017A, LU019A, LU021A, LU023A, LU025A, LU026A, LU028A, LU029A, LU035A, LU043A, LU044A, LU045A, LU051A, LU054A, LU055A, LU058A, LU060A, LU062A, LU100A, LU102A, LU103A, LU224A, LU225A, LU228A, LU229A, LU231A, LU907A, LU917A, LV004A, LV005A, LV007A, LV008A, LV009A, LV013A, LV014A, LV015A, LV016A, LV017A, LV019A, LV021A, LV023A, LV025A, LV026A, LV028A, LV029A, LV035A, LV043A, LV044A, LV045A, LV051A, LV054A, LV055A, LV058A, LV060A, LV062A, LV100A, LV102A, LV103A, LV224A, LV225A, LV228A, LV229A, LV231A, LV907A, LV917A, MC004A, MC005A, MC007A, MC008A, MC009A, MC013A, MC014A, MC015A, MC016A, MC017A, MC019A, MC021A, MC023A, MC025A, MC026A, MC028A, MC029A, MC035A, MC043A, MC044A, MC045A, MC051A, MC054A, MC055A, MC058A, MC060A, MC062A, MC100A, MC102A, MC103A, MC224A, MC225A, MC228A, MC229A, MC231A, MC907A, MC917A, MQ004A, MQ005A, MQ007A, MQ008A, MQ009A, MQ013A, MQ014A, MQ015A, MQ016A, MQ017A, MQ019A, MQ021A, MQ023A, MQ025A, MQ026A, MQ028A, MQ029A, MQ035A, MQ043A, MQ044A, MQ045A, MQ051A, MQ054A, MQ055A, MQ058A, MQ060A, MQ062A, MQ100A, MQ102A, MQ103A, MQ224A, MQ225A, MQ228A, MQ229A, MQ231A, MQ907A, MQ917A, MT004A, MT005A, MT007A, MT008A, MT009A, MT013A, MT014A, MT015A, MT016A, MT017A, MT019A, MT021A, MT023A, MT025A, MT026A, MT028A, MT029A, MT035A, MT043A, MT044A, MT045A, MT051A, MT054A, MT055A, MT058A, MT060A, MT062A, MT100A, MT102A, MT103A, MT224A, MT225A, MT228A, MT229A, MT231A, MT907A, MT917A, NL004A, NL005A, NL007A, NL008A, NL009A, NL013A, NL014A, NL015A, NL016A, NL017A, NL019A, NL021A, NL023A, NL025A, NL026A, NL028A, NL029A, NL035A, NL043A, NL044A, NL045A, NL051A, NL054A, NL055A, NL058A, NL060A, NL062A, NL100A, NL102A, NL103A, NL224A, NL225A, NL228A, NL229A, NL231A, NL907A, NL917A, PL004A, PL005A, PL007A, PL008A, PL009A, PL013A, PL014A, PL015A, PL016A, PL017A, PL019A, PL021A, PL023A, PL025A, PL026A, PL028A, PL029A, PL035A, PL043A, PL044A, PL045A, PL051A, PL054A, PL055A, PL058A, PL060A, PL062A, PL100A, PL102A, PL103A, PL224A, PL225A, PL228A, PL229A, PL231A, PL907A, PL917A, PT004A, PT005A, PT007A, PT008A, PT009A, PT013A, PT014A, PT015A, PT016A, PT017A, PT019A, PT021A, PT023A, PT025A, PT026A, PT028A, PT029A, PT035A, PT043A, PT044A, PT045A, PT051A, PT054A, PT055A, PT058A, PT060A, PT062A, PT100A, PT102A, PT103A, PT224A, PT225A, PT228A, PT229A, PT231A, PT907A, PT917A, RE004A, RE005A, RE007A, RE008A, RE009A, RE013A, RE014A, RE015A, RE016A, RE017A, RE019A, RE021A, RE023A, RE025A, RE026A, RE028A, RE029A, RE035A, RE043A, RE044A, RE045A, RE051A, RE054A, RE055A, RE058A, RE060A, RE062A, RE100A, RE102A, RE103A, RE224A, RE225A, RE228A, RE229A, RE231A, RE907A, RE917A, SE004A, SE005A, SE007A, SE008A, SE009A, SE013A, SE014A, SE015A, SE016A, SE017A, SE019A, SE021A, SE023A, SE025A, SE026A, SE028A, SE029A, SE035A, SE043A, SE044A, SE045A, SE051A, SE054A, SE055A, SE058A, SE060A, SE062A, SE100A, SE102A, SE103A, SE224A, SE225A, SE228A, SE229A, SE231A, SE907A, SE917A, SI004A, SI005A, SI007A, SI008A, SI009A, SI013A, SI014A, SI015A, SI016A, SI017A, SI019A, SI021A, SI023A, SI025A, SI026A, SI028A, SI029A, SI035A, SI043A, SI044A, SI045A, SI051A, SI054A, SI055A, SI058A, SI060A, SI062A, SI100A, SI102A, SI103A, SI224A, SI225A, SI228A, SI229A, SI231A, SI907A, SI917A, SK004A, SK005A, SK007A, SK008A, SK009A, SK013A, SK014A, SK015A, SK016A, SK017A, SK019A, SK021A, SK023A, SK025A, SK026A, SK028A, SK029A, SK035A, SK043A, SK044A, SK045A, SK051A, SK054A, SK055A, SK058A, SK060A, SK062A, SK100A, SK102A, SK103A, SK224A, SK225A, SK228A, SK229A, SK231A, SK907A, SK917A, CH004A, CH005A, CH007A, CH008A, CH009A, CH013A, CH014A, CH015A, CH016A, CH017A, CH019A, CH021A, CH023A, CH025A, CH026A, CH028A, CH029A, CH035A, CH043A, CH044A, CH045A, CH051A, CH054A, CH055A, CH058A, CH060A, CH062A, CH100A, CH102A, CH103A, CH224A, CH225A, CH228A, CH229A, CH231A, CH907A, CH917A, IS004A, IS005A, IS007A, IS008A, IS009A, IS013A, IS014A, IS015A, IS016A, IS017A, IS019A, IS021A, IS023A, IS025A, IS026A, IS028A, IS029A, IS035A, IS043A, IS044A, IS045A, IS051A, IS054A, IS055A, IS058A, IS060A, IS062A, IS100A, IS102A, IS103A, IS224A, IS225A, IS228A, IS229A, IS231A, IS907A, IS917A, NO004A, NO005A, NO007A, NO008A, NO009A, NO013A, NO014A, NO015A, NO016A, NO017A, NO019A, NO021A, NO023A, NO025A, NO026A, NO028A, NO029A, NO035A, NO043A, NO044A, NO045A, NO051A, NO054A, NO055A, NO058A, NO060A, NO062A, NO100A, NO102A, NO103A, NO224A, NO225A, NO228A, NO229A, NO231A, NO907A, NO917A, SJ004A, SJ005A, SJ007A, SJ008A, SJ009A, SJ013A, SJ014A, SJ015A, SJ016A, SJ017A, SJ019A, SJ021A, SJ023A, SJ025A, SJ026A, SJ028A, SJ029A, SJ035A, SJ043A, SJ044A, SJ045A, SJ051A, SJ054A, SJ055A, SJ058A, SJ060A, SJ062A, SJ100A, SJ102A, SJ103A, SJ224A, SJ225A, SJ228A, SJ229A, SJ231A, SJ907A, SJ917A]     
              [Element /CD026A/ComAccRefMES21     MinOccurs = 0, MaxOccurs = 1] of type [string][MaxLength = 35]     
              [Element /CD026A/MesSeqNumMES22     MinOccurs = 0, MaxOccurs = 1] of type [nonNegativeInteger][TotalDigits = 2]     
              [Element /CD026A/FirAndLasTraMES23     MinOccurs = 0, MaxOccurs = 1] of type [string][Values = F, L]     
         [End of sequence]
         [Element /CD026A/TRAPRIPC1     MinOccurs = 1, MaxOccurs = 1] of type [anyType]
         [Start of sequence  MinOccurs = 1, MaxOccurs = 1]
              [Element /CD026A/TRAPRIPC1/TINPC159     MinOccurs = 1, MaxOccurs = 1] of type [string][MaxLength = 17]     
         [End of sequence]
         [Element /CD026A/CUSTOFFGUARNT     MinOccurs = 1, MaxOccurs = 1] of type [anyType]
         [Start of sequence  MinOccurs = 1, MaxOccurs = 1]
              [Element /CD026A/CUSTOFFGUARNT/RefNumRNT1     MinOccurs = 1, MaxOccurs = 1] of type [string][Length = 8]     
         [End of sequence]
         [Element /CD026A/GUAREF2     MinOccurs = 1, MaxOccurs = 1] of type [anyType]
         [Start of sequence  MinOccurs = 1, MaxOccurs = 1]
              [Element /CD026A/GUAREF2/GuaRefNumGRNREF21     MinOccurs = 1, MaxOccurs = 1] of type [string][MaxLength = 24]     
              [Element /CD026A/GUAREF2/ACCDOC728     MinOccurs = 0, MaxOccurs = 99] of type [anyType]
              [Start of sequence  MinOccurs = 1, MaxOccurs = 1]
                   [Element /CD026A/GUAREF2/ACCDOC728/AccCodCOD729     MinOccurs = 1, MaxOccurs = 1] of type [string][Length = 4]     
              [End of sequence]
              [Element /CD026A/GUAREF2/ACCDOCPC4     MinOccurs = 1, MaxOccurs = 1] of type [anyType]
              [Start of sequence  MinOccurs = 1, MaxOccurs = 1]
                   [Element /CD026A/GUAREF2/ACCDOCPC4/AccCodPC41     MinOccurs = 1, MaxOccurs = 1] of type [string][Length = 4]     
              [End of sequence]
              [Element /CD026A/GUAREF2/ACCCODPC3     MinOccurs = 1, MaxOccurs = 1] of type [anyType]
              [Start of sequence  MinOccurs = 1, MaxOccurs = 1]
                   [Element /CD026A/GUAREF2/ACCCODPC3/AccCodPC31     MinOccurs = 1, MaxOccurs = 1] of type [string][Length = 4]     
              [End of sequence]
         [End of sequence]
    [End of sequence]I still thing this is a bit of an overkill, but I will use it as a last resort in order to substitute the built-in parser so I can collect all the errors of an XML source in one go.
    Is there a way to obtain the same information from the XDB registry where my schemas will reside ? If yes, I will gladly substitute this Java class with whatever your suggestion is :)
    If not, I intend to store the extracted information in suitably constructed database tables and use a PL/SQL procedure to do the validation by traversing the table information accordingly (XPath by XPath) collecting the errors as I traverse the XML. Hopefully, due to the XPaths being very targeted towards the information that will be checked, I will avoid the DOM memory tree overhead.
    Finally, if I follow the path I described, is there a way to put some sort of trigger for the cases of copyEvolve(), inPlaceEvolve() and drop-and-reinsert so that my process will be called again for the new data ?
    Apologies for the lengthy code and result set.
    Best Regards
    Philip
    PS: I did not include the XSD file itself because it includes another four XSDs. If needed I will do it in a reply post though ...

    Good morning Marco,
    I am back at the office today, so I am trying to catch up with everything.
    If I remember though, RESOURCE_VIEW and PATH_VIEW are related to the "exploration" of the XDB registry (but I may very well be wrong !).
    What I want is to retrieve schema information (if XDB actually shreds the XML schema on registration) like elements paths, simple and complex type contents, sequence information, particle occurence information, groups and group declarations etc.
    I think it makes sense that Oracle stores these somewhere, since it uses the information on OR storage to generate types and tables anyway ;) That is of course if the whole OR shredding is not done totally on-the-fly...
    I managed to get clearance to release partial information about some of the schemas and their related documentation, so I will be passing them to you and Mark through private emails (of course) in order to give you a clearer understanding of the whole project.
    Just give me a day to write a few pages that explain how the whole operation is performed.
    Best Regards
    Philip

  • Is there an ON LOAD difference between IE and Firefox?

    I am experiencing a problem where a page does one thing in IE and something different in Firefox. Just wondering if anyone knows if this is normal behaviour or not.
    I have an ApEx page which is building a dynamic AJAX hierarchy tree based on the example outlined in Carl Backstrom's MacDaddy Example apex.oracle.com site (http://htmldb.oracle.com/pls/otn/f?p=11933:49). As I click down the tree, each node is a hyperlink which takes me to a detail page about that node. I have an onload process on the Hierarchy Tree page which attempts to traverse down the tree to the node which I was "last at" when I was last on the page. This is so that when I am on the detail page of a node, I can click the "Back" button on the browser to navigate back to the Hierarchy Tree page and be presented with the "view" of the tree as when I left.
    When I click the "Back" button to navigate back to the Hierarchy Tree page, the ONLOAD javascript code runs in IE, but not in Firefox. This has been verified by adding a simple "alert" function to the ONLOAD. The "alert" does not appear in Firefox when navigating back, but does in IE. By the way... when I initially navigate to the Hierarchy Tree page, the "alert" shows up in both IE and Firefox. It's the navigation BACK to the page where it doesn't show up in Firefox.
    First of all, is this normal functionality? Meaning, when you use the Back button on the browser, is the ONLOAD code suppose to be run or does it only run when you navigate TO a page (not BACK TO a page)?
    Secondly, is this normal functionality within ApEx? Is the ApEx environment doing anything in the background to screw up IE or Firefox from doing or not doing the ONLOAD code when navigating back to my Hierarchy Tree page?

    Please stop posting with your off-topic link.
    Murray --- ICQ 71997575
    Adobe Community Expert
    (If you *MUST* email me, don't LAUGH when you do so!)
    ==================
    http://www.projectseven.com/go
    - DW FAQs, Tutorials & Resources
    http://www.dwfaq.com - DW FAQs,
    Tutorials & Resources
    ==================
    "seomax" <[email protected]> wrote in
    message
    news:g7es1a$hhi$[email protected]..
    > wht is different between IE and firefox browser, and how
    to implement css
    > option(if related option exists) in firefox to see
    appropriate
    > output(which is
    > not showing in firefox), wil not it mend ever? or is
    there any solution
    > for it?
    > lots of people asked this question suggestion
    appreciated.
    >

  • How to limit repainting to 75 hz in a Panel?

    Hello all, I have created a geometrical editor and I want to limit refresh rate of the repaints when I am moving an object on the screen to 75hz (or to the monitor refresh rate) because it uses 90% of CPU when moving an object.
    When user drags an object I:
    - detect it in the mouse listener (drag method)
    - move the object in the memory (tree of objects)
    - I call repaint of the panel
    How can I enable t his limiting? I know there is some class called BufferStrategy, can I use something similar in JPanel? Or does this swing automatically? Thanks

    Everybody gave you very good advices, but nobody
    answer the question "how to limit to 75Hz ?" !
    What is the best way to do this ? I don't know, but I
    can give my own solution until a Java2D freak give
    the ultimate one :
    Create a framecounter
    1)Create a counter : each time you execute the method
    that render a frame, increase the counter.
    2) in paint method, get the
    System.currentTimeMillis(). Compare it with the last
    value to compute de delta of time. Compare the
    current framecounter value with the last value. You
    have the delta of framecount. Compute framecount
    delta over delta of time then multiply the result by
    1000 to get the current framecount by seconds. If
    result is over 75, paint method should return. Else
    you call the method that render a frame.
    What do you think about that ? I'm using this
    solution, and it gives a quite good Fps control. Note
    that I do not compute the curent Fps until an amount
    of time is past. Exemple : I'm waiting for the delta
    of time to reach about 300ms before computing delta
    of framecount. That give a better current Fps average
    but approximates the Fps control.
    Have you a better method ?For timing that accurate you would need to use System.nanoTime().
    Another way of achieving a framerate lock of 75 fps, is to change to a fullscreen mode, with a DisplayMode that is refreshing at 75hz, then create a BufferStrategy.
    The BufferStrategy will be vsync locked (if the hardware driver allows vsync'ing), this will make BufferStrategy.show() block until the next vsync signal occurs.

  • Performance sax vs dom

    Hi All,
    I have build a xml interface for a java application.
    I parse the xml files using dom parser, get the data
    and pass it to the java application. I know that DOM
    builds a in memory tree of the xml file.
    Will this degrade the performance of my application.
    Will it be better to use a SAX parser instead?
    Regards
    Milind

    It really depends on the size of the data that you are parsing. Parsing big XML files with DOM means you have a big tree in memory using up lots of memory and CPU. With SAX it will just take more time to process the XML than it would a smaller file.
    The only way to know for sure if it makes a difference for you is to try both approaches using live data. It doesn't help to profile them if you are using a test XML file that is half the size of what you are planning on using in production.
    So, the answer to your question is "It depends".

  • Parsing a xml file

    i need a code for this...
    write a class for "myxmlparser" to parse "*.xml" fileto "*.dtd" file.
    sundar

    You do not parse a XML file into a DTD. The DTD is a tool you may use to constrain the contents of the XML document. In short, the DTD allows you to define whether a given XML document is valid, apart from simply being well-formed.
    You parse XML either in one of three ways:
    SAX: respond to XML parsing events in your Java app.
    DOM: build an in-memory tree of XML data
    Custom: anything goesIf your task is to take an arbitrary XML document and generate an associated DTD (thought this would not be a standard methodology), you would have to write this code yourself and familiarize yourself with both XML and DTD's.
    - Saish
    "My karma ran over your dogma." - Anon

  • Problem with trees and memory handling.

    Hi there, I just want to know if, when I create a large binary tree, and I re-"pointed" the root pointer to another node somewhere below in that same tree (say, a terminal node), will the "upper" parts of the tree (starting from the new root node) be removed/deleted from memory? Please explain your answers.
    Thank you.

    f I changed the root to B, will A and its children be
    deleted from memory?If you do root = B, AND if nothing else is referring to A or C or anything else beneath them, then A, C, and all of C's children will become eligible for garbage collection.
    Whether the memory actually gets cleaned up is something you can't really predict or control, but it doesn't really matter. If it's needed, it will get cleaned up. If it's not needed, it may or may not get cleaned up, but your program won't care.
    So, in short, yes, for all intents and purposes, A's, C's, and C's descendants' memory is released when you re-root to B.

Maybe you are looking for

  • No OpenGL in "Save For Web and Devices"?

    My Mac Pro has an NVIDIA 8800 GT, listed among tested cards for CS5.  I have OpenGL accelleration on and set for Vertical Sync, but I notice significant tearing when dragging an image about in the "Save for Web" window.

  • Date in menu bar

    Not sure why but the date does not show in my menu bar. I've been to System Preferences and selected Show Date and Time in Menu Bar but only the day and time shows, not the date, e.g. April 18. Any ideas?

  • When paste a web link to some web sites it's not pasted correctly.

    When I try to paste a link (for example I've copied an image adress by pressing right mouse botton "copy image url") than i try to paste it in conversation or a new thread on forum but it's not pasted correctly. Only image name is pasted including .j

  • How do I get a driver for my soundblaser? I can't find

    Hi Here is my DXDIAG information for my sound card -------------Sound Devices------------- Description: SB Audigy Audio [DF80] Default Sound Playback: Yes Default Voice Playback: Yes Hardware ID: PCI\VEN_02&DEV_0004&SUBSYS_005802&REV_03 Manufacturer

  • Questions about ALV object model

    Hi, for a new report i´m planing to use the "new" ALV object model to create the ALV list. Now I´ve got two questions concerning this topic: - is it possible to switch the ALV into the edit mode like it´s possible if  the "old" CL_GUI_ALV_GRID class