Nested XML filter / freezing

Hi Spry,
I'm currently working on a nested DataSet filter, but it
freezes up the browser and keeps eating memory.
I cannot give / grant any1 access to our test servers,
because they run on a secure router. So i can only provide the
filter and the current on line page.
The filter function:
function filter_rooms(){
var els =
document.forms['searchpannel'].getElementsByTagName('input');
var filter = '';
for (var j=0; j < els.length; j++){
var input = els[j];
if (input.type == 'checkbox' &&
input.id.match(/^p[0-9]$/) && input.checked){
filter += input.id.replace(/^p/, '');
if (typeof myRoom == 'function')dsRooms.removeFilter(myRoom,
true);
if (filter !== ''){
filter = new RegExp('^['+filter + ']');
document.getElementById('allrooms').checked = false;
myRoom = function(dataSet, row, rowNumber) {
return filter.exec(row["numpersons"])? row : null;
}else{
document.getElementById('allrooms').checked = true;
myFilter = false;
}if (typeof myRoom == 'function')dsRooms.addFilter(myRoom,
true);
this is just the basic of the filter, when this is working i
still have to figure out how im gonna check if a hotel has any
rooms left after filtering, if none i have to remove the hotel for
the result page. (but this is something to do later :P )
Page of problems + instructions of getting there:
Url:
http://www.hotels.nl/indexen.html
Press the button: Find best deals!
(because u need the correct param's to view the page).
I cant give the link to the xml feed, but u all know to view
it in firebug so i highly doubt this will be a problem
Here u will see the current search environment. The filter is
activated in the same way as the Star Rating filter. (same amount
of check boxes, and values send etc).
I wonder why it crashes. Is it because i linked dsRooms to as
nested xml set to the paging? Or am i just doing something wrong
here.
Note: I am aware that the current core file that we are using
still contains the old filter error (the if statement) But on our
test server we are working with the fixed version, so this is not
the issue.
The core file is a bunch of spry scripts packed together so
we have less HTTP requests.
If u require information on what is packed in it, feel free
to ask. But i highly doubt its needed.
Nutshell version: help :)
V1

Hello Kin, your solution worked okay, but i seem to found a
little problem using nested filters.
When u apply a filter to a nested xml, it will be deleted
when u apply or postload the parent dataset.
U could ofcourse use a observ for that, for some that would
be a solution, but for me, not really. <-- i tryed to use that.
But in my case i have a problem with that, becouse when there
are no rooms left in the Nested list. i have to filter out the
hotel. So i call a filter on the parent hotel, wich will delete the
rooms filter, wich will be called again on postload, and create a
loop.
I tryed using Spry:if statement, it does hide the hotel, but
it doesnt update the paged view ( it only "hides" the rows, but
doesnt update the amount of items per page, so u could have 10
results on a page instead of the set 30).
I dont know if spry:if would work like that. Or if its a
small error. If it all works like it supposed to work, than maby i
should try to use flattend nested xml using xpath(subpath).
If u got any idea's or suggestions, feel free to post
;)

Similar Messages

  • Using Non-destructive filter with Nested XML data

    Hi,
    How do you use Non-destructive filter with Nested XML data?
    I am using the non-destructive filter sample with my own xml which is setup to search for the <smc></smcs> in my xml below. But when i test it it only searches the last row of the "smc". How can i make it work so it can search for repeating nodes? or does it have something to with how my xml is setup?
        <ja>
            <url>www.sample.com</url>
            <jrole>Jobrole goes here</jrole>
            <prole>Process role goes here...</prole>
            <role>description...</role>
            <prole>Process role goes here...</prole>
            <role>description....</role>
            <prole>Process role goes here...</prole>
            <role>description...</role>
            <sjc>6K8C</sjc>
            <sjc>6B1B</sjc>
            <sjc>6B1F</sjc>
            <sjc>6B1D</sjc>
            <smc>6C9</smc>
            <smc>675</smc>
            <smc>62R</smc>
            <smc>62P</smc>
            <smc>602</smc>
            <smc>622</smc>
            <smc>642</smc>
            <smc>65F</smc>
            <smc>65J</smc>
            <smc>65L</smc>
            <smc>623</smc>
            <smc>625</smc>
            <smc>624</smc>
            <smc>622</smc>
            <audience>Target audience goes here....</audience>
        </ja>
    here is the javascript that runs it.
    function FilterData()
        var tf = document.getElementById("filterTF");
        if (!tf.value)
            // If the text field is empty, remove any filter
            // that is set on the data set.
            ds1.filter(null);
            return;
        // Set a filter on the data set that matches any row
        // that begins with the string in the text field.
        var regExpStr = tf.value;
    if (!document.getElementById("containsCB").checked)
            regExpStr = "^" + regExpStr;
        var regExp = new RegExp(regExpStr, "i");
        var filterFunc = function(ds, row, rowNumber)
            var str = row["smc"];
            if (str && str.search(regExp) != -1)
            return row;
            return null;
        ds1.filter(filterFunc);
    function StartFilterTimer()
        if (StartFilterTimer.timerID)
            clearTimeout(StartFilterTimer.timerID);
        StartFilterTimer.timerID = setTimeout(function() { StartFilterTimer.timerID = null; FilterData(); }, 100);
    I really need help on this, or are there any other suggestions or samples that might work?
    thank you!

    I apologize, im using Spry XML Data Set. i guess the best way to describe what im trying to do is, i want to use the Non-desctructive filter sample with the Spry Nested XML Data sample. So with my sample xml on my first post and with the same code non-destructive filter is using, im having trouble trying to search repeating nodes, for some reason it only searches the last node of the repeating nodes. Does that make sense? let me know.
    thank you Arnout!

  • Working With Nested XML Data

    Hello,
    I'm doing my best to create a page in Dreamweaver CS4 utilizing Spry datasets and, I hope, a valid nested XML file. What I want to do is use one XML file that provides the content for my nav div and my content div. It would, in essence, display as an outline. When a user clicks on an item in the nav div the content would be displayed. What I'm guessing would work for the XML file would be this format:
    <content>
      <topic name="Elements">   //--this would serve as the nav element and trigger
        <header>Non-editable</header>   //--this would serve as a header in the content area
        <info>
          <detail id="1">CSS, javascript</detail>   //--this would serve as detail under the headers in the content area.
          <detail id="2">Headers</detail>
          <detail id="3">Footers</detail>
          <detail id="4">Areas within navigation panel</detail>
        </info>
      </topic>
    </content>
    I got the idea from this page in Live Docs: Create a Spry nested data set. Also from a Labs page called Nested XML Data Sample. I've been able to make various parts of the page work but I don't know what is broken. My issues are this:
    I once saw but can no longer find a method for preventing redundant display of data. In this case, the nav elements which are attributes in my XML file.
    The details are showing up in my content area. I must be doing the code for the nesting incorrectly.
    I want to then use the details in the content area to trigger spry tooltips, the content for whih would be genereated from an XML file or HTML frags.
    Here is my latest, ill-fated attempt:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:spry="http://ns.adobe.com/spry">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Menu - Content Example</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
    <script src="SpryAssets/SpryNestedXMLDataSet.js" type="text/javascript"></script>
    <script src="SpryAssets/xpath.js" type="text/javascript"></script>
    <script src="SpryAssets/SpryData.js" type="text/javascript"></script>
    <link href="SpryAssets/SpryStackedContainers.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">
    <!--
    var dsContent5 = new Spry.Data.XMLDataSet("navigation/content5.xml", "content/topic", {useCache: false});
    var dsInfo = new Spry.Data.NestedXMLDataSet(dsContent5, "info/detail");
    //-->
    </script>
    </head>
    <body>
    <div id="wrapper">
      <div id="header">
        <h1>CSU Website Clinic</h1>
        <h3>Bill Milhoan, IS&amp;T Technical Trainer</h3>
      </div>
      <div id="content" spry:region="dsInfo">
        <ul spry:repeatchildren="dsInfo">
          <li>{dsContent5::info}</li>
        </ul>
      </div>
      <div class="nav" spry:region="dsContent5">
        <ul spry:repeatchildren="dsContent5" spry:choose="">
          <li spry:when="{dsContent5::ds_CurrentRowID} == {dsContent5::ds_RowID}" spry:setrow="dsContent5" spry:select="select" spry:hover="hover" spry:selected="">{dsContent5::@name}</li>
          <li spry:default="" spry:setrow="dsContent5" spry:select="select" spry:hover="hover">{dsContent5::@name}</li>
        </ul>
      </div>
    </div>
    </body>
    </html>
    Thoughts? My hope is to distill this process so I can teach others how to do it in the hopes that they will find it easier to keep their department/program websites up-to-date.
    Thanks for the help.
    Bill Milhoan
    Cleveland State University

    I apologize, im using Spry XML Data Set. i guess the best way to describe what im trying to do is, i want to use the Non-desctructive filter sample with the Spry Nested XML Data sample. So with my sample xml on my first post and with the same code non-destructive filter is using, im having trouble trying to search repeating nodes, for some reason it only searches the last node of the repeating nodes. Does that make sense? let me know.
    thank you Arnout!

  • Populating Spry Table using button action and Nested XML

    Ah, yet another question.
    So I have a catalog page with a Spry repeating table. The XML
    has 2 sets of nodes -- one for outfits and one for line sheets (the
    technical drawings for clothes). What i want to do is have the
    outfits show and populate the table to start off with, but
    re-populate with the line sheet info if a user clicks on a button.
    currently the page is set up and works perfectly by sucking
    in the XML and populating the table. What I can't seem to do is get
    the button (when clicked) to switch the outfit info with the line
    sheet info.
    I have the following
    // javascript:
    var siracusafall08 = new
    Spry.Data.XMLDataSet("fall_collection.xml",
    "collection/siracusa/outfits", { filterFunc: MyPagingFunc });
    var siracusaLS = new
    Spry.Data.NestedXMLDataSet(siracusafall08, "linesheet",
    {filterFunc:MyPagingFunc });
    siracusafall08.setColumnType("photoURL", "image");
    siracusafall08.setColumnType("lrgphoto", "image");
    var pageOffset = 0;
    var pageSize = 1;
    var pageStop = pageOffset + pageSize;
    //var dssiracusafall08 = new
    Spry.Data.XMLDataSet("fall_collection.xml", "collection/outfits", {
    filterFunc: MyPagingFunc });
    function MyPagingFunc(ds, row, rowNumber)
    if (rowNumber < pageOffset || rowNumber >= pageStop)
    return null;
    return row;
    function chooseLS()
    // no idea what to put here...
    function UpdatePage(offset)
    var numRows = siracusafall08.getUnfilteredData().length;
    if (offset > (numRows - pageSize))
    offset = numRows - pageSize;
    if (offset < 0)
    offset = 0;
    pageOffset = offset;
    pageStop = offset + pageSize;
    // Re-apply our non-destructive filter on dsStates1:
    siracusafall08.filter(MyPagingFunc);
    html
    <div spry:region="siracusafall08">
    <table>
    <tr spry:repeatchildren="siracusafall08">
    <td valign="top">{name}<br />{desc}</td>
    <td rowspan="8" valign="top" width="300"><img
    src="imx/{photoURL}"/></td>
    </tr>
    <tr spry:repeatchildren="siracusafall08">
    <td valign="top">{SKU1}<br />{SKU2}<br
    />{SKU3}</td>
    </tr>
    <tr spry:repeatchildren="siracusafall08">
    <td valign="top"><a href="imx/{lrgphoto}"
    target="_blank">enlarge</a></td>
    </tr>
    <tr spry:repeatchildren="siracusafall08">
    <td valign="top"><input type="image"
    src="../../imx/back.gif" onclick="UpdatePage(pageOffset -
    pageSize);" />
    <input type="image" src="../../imx/next.gif"
    onclick="UpdatePage(pageOffset + pageSize);" /><br
    /><br /><input type="button" value="filter"
    onclick="chooseLS();" /></td>
    </tr>
    <tr>
    <td height="200"> </td>
    </tr>
    </table>
    </div>
    XML
    <collection>
    <siracusa>
    <outfits>
    <photoURL>6648sm.jpg</photoURL>
    <lrgphoto>6648lg.jpg</lrgphoto>
    <SKU1>JS271SM</SKU1>
    <SKU2>PN109SM</SKU2>
    <SKU3></SKU3>
    <name>Siracusa Micro Crepe</name>
    <desc>Chestnut, Moss, Redwood, Black</desc>
    </outfits>
    <outfits>
    <photoURL>5237sm.jpg</photoURL>
    <lrgphoto>5237lg.jpg</lrgphoto>
    <SKU1>JS272SM</SKU1>
    <SKU2>LTK121SM</SKU2>
    <SKU3>PW112SM</SKU3>
    <name>Siracusa Micro Crepe</name>
    <desc>Chestnut, Moss, Redwood, Black</desc>
    </outfits>
    <outfits>
    <photoURL>5540sm.jpg</photoURL>
    <lrgphoto>5540lg.jpg</lrgphoto>
    <SKU1>JS272SM</SKU1>
    <SKU2>LTK121SM</SKU2>
    <SKU3>PW112SM</SKU3>
    <name>Siracusa Micro Crepe</name>
    <desc>Chestnut, Moss, Redwood, Black</desc>
    </outfits>
    <outfits>
    <photoURL>6276sm.jpg</photoURL>
    <lrgphoto>6276lg.jpg</lrgphoto>
    <SKU1>JL258SM</SKU1>
    <SKU2>PN100SM</SKU2>
    <SKU3></SKU3>
    <name>Siracusa Micro Crepe</name>
    <desc>Chestnut, Moss, Redwood, Black</desc>
    </outfits>
    <linesheet>
    <photoURL>5540sm.jpg</photoURL>
    <lrgphoto>5540lg.jpg</lrgphoto>
    <SKU1>JS128SM</SKU1>
    <SKU2>Mandarin collar jacket with box pleat
    cuff</SKU2>
    <SKU3>XS-XL</SKU3>
    <name>Siracusa Micro Crepe</name>
    <desc>Chestnut, Moss, Redwood, Black</desc>
    </linesheet>
    </siracusa>
    </collection>
    There's nothing in the documentation about using a button to
    repopulate a table. the Nested XML Data Sample page in the Spry
    documentation has been helpful in the past however this is more of
    a switch / toggle situation and frankly that kind of coding is a
    bit beyond my fine arts-trained skills.
    Any suggestions are greatly appreciated!

    Hi Bit Crusher,
    Sorry for the delayed response ...
    Looking at your setup, you can get rid of most of the code in
    collection.js since you are using a pageSize of 1 ... if displaying
    only one row of a data set is all you ever need, then you can get
    the equivalent functionality by just using a spry:detailregion and
    a couple of prev()/next() functions. For example:
    <script type="text/javascript">
    var siracusafall08 = new
    Spry.Data.XMLDataSet("fall_collection.xml",
    "collection/siracusa/outfits");
    siracusafall08.setColumnType("photoURL", "image");
    siracusafall08.setColumnType("lrgphoto", "image");
    var crepesfall08 = new
    Spry.Data.XMLDataSet("fall_collection.xml",
    "collection/crepes/outfits");
    crepesfall08.setColumnType("photoURL", "image");
    crepesfall08.setColumnType("lrgphoto", "image");
    function DSPrev(ds)
    var curRowNum = ds.getCurrentRowNumber();
    if (--curRowNum >= 0)
    ds.setCurrentRowNumber(curRowNum);
    function DSNext(ds)
    var curRowNum = ds.getCurrentRowNumber();
    if (++curRowNum < ds.getRowCount())
    ds.setCurrentRowNumber(curRowNum);
    </script>
    <div spry:detailregion="siracusafall08">
    </div>
    <div spry:detailregion="crepesfall08">
    </div>
    After you've simplified all that, the next thing I would do
    to get your linesheet switching working is to use "states". Take a
    look at these samples:
    http://labs.adobe.com/technologies/spry/samples/data_region/RegionStatesSample.html
    http://labs.adobe.com/technologies/spry/samples/data_region/StateMappingSample.html
    The first link is some basic background on states, but what
    should be of interest to you is the 2nd sample. What I would do is
    have a "styles" and a "linesheet" state in my region.
    Also since you are using nested XML data, you will need to
    access your <linesheet> data with a NestedXMLDataSet:
    http://labs.adobe.com/technologies/spry/samples/data_region/NestedXMLDataSample.html#Using NestedDataSets
    http://labs.adobe.com/technologies/spry/samples/data_region/NestedDataSample.html
    --== Kin ==--

  • Spry Menu Using Nested XML Dataset (Spry 1.6)

    I have a vertical menu with a few items. One of which is
    labeled Products which has submenus. I want to have that submenu
    read from a Nested XML dataset. Using a single dataset for one
    level in a menu is easy enough, but the subenu will have submenus.
    Example Menu:
    Home
    Company
    Products
    |-- Product 1
    |-- Item 1
    |-- Item 2
    |-- Item 3
    |-- Product 2
    |-- Item 1
    |-- Item 2
    |-- Product 3
    |-- Item 1
    |-- Item 2
    |-- Item 3
    |-- Item 4
    |-- Product 4
    |-- Item 1
    |-- Item 2
    |-- Product 5
    I have been looking for an easy way to use the Spry Nested
    XML Dataset to create the Product/Item menu. The number of Products
    may vary as well as the number of Items in each Product submenu
    (also, some Products may not have Items).
    I already have an ASP page that creates the XML data from a
    database.
    Schema follows (XSD ):
    <?xml version="1.0" encoding="utf-8"?>
    <xsd:schema xmlns:xsd="
    http://www.w3.org/2001/XMLSchema">
    <xsd:element name="products">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="product_type"
    maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="type_name" maxOccurs="1"
    type="xsd:string"/>
    <xsd:element name="type_url" maxOccurs="1"
    type="xsd:anyURI"/>
    <xsd:element name="product_name"
    maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="item_name" maxOccurs="1"
    type="xsd:string"/>
    <xsd:element name="item_url" maxOccurs="1"
    type="xsd:anyURI"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    I have been programming for 17 years but am new to Spry. If
    this cannot be done easily with the Spry framework, I'll probably
    wind up splitting the XML data into 2 files (Products and Items)
    then writing a nested loop and call each by row, but then I have to
    find out how Spry Datasets reference XML data. Figuring out how to
    call rows from the XML data shouldn't be so bad, but this method
    just seems like such a hassle for something that should be easy.
    Pseudocode follows:
    j=1
    i=1 to TotalNumberProducts
    display Product i from Products
    ItemsExist=true
    While ItemsExist
    if j > TotalNumberItems | Item j is not for Product then
    ItemsExist=false
    else
    display Item j from Items
    j++
    Wend
    Next
    Thanks in advance for any help or direction!

    That's exactly what I'm trying to do. However, I implemented
    that code and the submenus won't appear. I suspect the submenus
    aren't finding the field names from the Nested XML Dataset. The
    first level of Product menus work great (this is a submenu of the
    overall menu) and correctly identify products that do not have
    submenus, so I know it's picking up the number of records in the
    Nested Dataset correctly - it just won't display the data in the
    next level of menu.
    variable and script declarations:
    <script src="SpryAssets/SpryMenuBar.js"
    type="text/javascript"></script>
    <script src="SpryAssets/xpath.js"
    type="text/javascript"></script>
    <script src="SpryAssets/SpryData.js"
    type="text/javascript"></script>
    <script src="SpryAssets/SpryNestedXMLDataSet.js"
    type="text/javascript"></script>
    <link href="SpryAssets/SpryMenuBarVertical.css"
    rel="stylesheet" type="text/css">
    <script type="text/javascript">
    <!--
    var productMenuData = new
    Spry.Data.XMLDataSet("products.asp", "products/product_type");
    var productMenuDataItems = new
    Spry.Data.NestedXMLDataSet(productMenuData, "product_name");
    //-->
    </script>
    Code for menus:
    <ul id="NavMenu" class="MenuBarVertical">
    <li><a
    href="index.html">Home</a></li>
    <li><a
    href="company.html">Company</a></li>
    <li><a href="franco_giberti.html">Franco
    Giberti</a></li>
    <li><a class="MenuBarItemSubmenu"
    href="products.asp">Products</a>
    <ul spry:region="productMenuData
    productMenuDataItems">
    <li spry:repeat="productMenuData"><a
    class="MenuBarItemSubmenu" href="{type_url}"
    spry:if="{productMenuDataItems::ds_RowCount} !=
    0">{type_name}</a> <a href="{type_url}"
    spry:if="{productMenuDataItems::ds_RowCount} ==
    0">{type_name}</a>
    <ul spry:if="{productMenuDataItems::ds_RowCount} !=
    0">
    <li spry:repeat="productMenuDataItems"><a
    href="{productMenuDataItems::item_url}">{productMenuDataItems::item_name}</a></li>
    </ul>
    </li>
    </ul>
    </li>
    <li><a href="contact.html">Contact Us</a>
    <!-- end #sidebar1 -->
    </li>
    </ul>
    XML:
    <products
    xsi:noNameSpaceSchemaLocation="products.xsd">

    <product_type>
    <type_name>Pasta Sauce</type_name>
    <type_url>pt_2.asp</type_url>

    <product_name>
    <item_name>Putenesca</item_name>
    <item_url>pn_3.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Arrabiata</item_name>
    <item_url>pn_4.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Pesto</item_name>
    <item_url>pn_5.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Basil and Tomato</item_name>
    <item_url>pn_6.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Bolognese</item_name>
    <item_url>pn_7.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Carboniera</item_name>
    <item_url>pn_8.asp</item_url>
    </product_name>
    </product_type>
    +
    <product_type>
    <type_name>Organic Olive Oil</type_name>
    <type_url>pt_3.asp</type_url>

    <product_name>
    <item_name>Original</item_name>
    <item_url>pn_9.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Basil</item_name>
    <item_url>pn_10.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Herbs</item_name>
    <item_url>pn_11.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Sun Dried Tomato</item_name>
    <item_url>pn_12.asp</item_url>
    </product_name>
    </product_type>
    +
    <product_type>
    <type_name>Organic Spreads</type_name>
    <type_url>pt_4.asp</type_url>

    <product_name>
    <item_name>Putenesca</item_name>
    <item_url>pn_13.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Arrabiata</item_name>
    <item_url>pn_14.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Pesto</item_name>
    <item_url>pn_15.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Basil and Tomato</item_name>
    <item_url>pn_16.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Bolognese</item_name>
    <item_url>pn_17.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Carboniera</item_name>
    <item_url>pn_18.asp</item_url>
    </product_name>
    </product_type>
    +
    <product_type>
    <type_name>Organic Grilled Vegetables</type_name>
    <type_url>pt_5.asp</type_url>

    <product_name>
    <item_name>Putenesca</item_name>
    <item_url>pn_19.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Arrabiata</item_name>
    <item_url>pn_20.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Pesto</item_name>
    <item_url>pn_21.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Basil and Tomato</item_name>
    <item_url>pn_22.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Bolognese</item_name>
    <item_url>pn_23.asp</item_url>
    </product_name>

    <product_name>
    <item_name>Carboniera</item_name>
    <item_url>pn_24.asp</item_url>
    </product_name>
    </product_type>

    <product_type>
    <type_name>Truffle Products</type_name>
    <type_url>pt_6.asp</type_url>
    </product_type>
    </products>
    Any further guidance would be very much appreciated!

  • How to construct the where clause for a nested xml target file

    Post Author: jlpete72
    CA Forum: Data Integration
    I'm having some problems getting the desired results creating a multi-level nested xml file.  Specifically, it does not seem that the where clause in the child schemas respects values from parent schemas.  I'm sure I'm constructing something incorrectly, but am running out of ideas. 
    I am working with the classic company/order/line hierarchy and there are three levels of output schemas in my target xml file, one for company, order header and order line information.
    For testing, I have hardcoded a restriction at the order header line to deal with only one order.  But unless I hardcode values into the where clause at the order line level of the schema, all values are returned for orders belonging to the company defined in the company level.
    I'm trying a where clause at the order line level similar to:
    order_line.customer = order_header.customer and order_line.order_num = order_header.order_num
    If the customer has more than one order in the data file, then all orders for that customer are placed in the detail for the order header.  Only if I hard code the order number in the where clause do I get only the lines for the order specified in the header section.  Not very practical. 
    What am I missing?

    An External Parsed Entity could be used to reference a schema.
    In your DTD:
    <!ENTITY datamodules SYSTEM "file:///c:/Datamodules/Datamodules.xsd">
    Refer the external entity in xml document:
    <datamodules>&datamodules;</datamodules>

  • Nesting xml in Oracle 8i

    How to generate nested xml/ complex xml in Oracle 8i using 8i packages dbms_xmlquery or xmlgen .
    The xml might be looked like this..
    if any body have idea then pls let me know.
    i am trying to write Stored procedure on that i am using query like select c1,c2, cursor(c3,c4 from xyb) from ABC
    but not getting required output
    <?xml version="1.0" ?>
    - <File>
    <File_Type>ETNL_TRAVELR_PAYMENTS</File_Type>
    - <File_Header_Record>
    <File_Format_Version>0002</File_Format_Version>
    <Creation_Module />
    </File_Header_Record>
    - <Transaction>
    <Transaction_Type>FT_TRANS_IMP</Transaction_Type>
    - <Transaction_Header>
    <Record_Number>1</Record_Number>
    <Urgent>N</Urgent>
    </Transaction_Header>
    - <Model_Info>
    - <Model_ID>
    - <![CDATA[ FF DOM EXT PAY
      ]]>
    </Model_ID>
    </Model_Info>
    - <Transfer_Info>
    <Charges>15</Charges>
    </Transfer_Info>
    - <Amounts>
    - <Transaction_Amount>
    <Amount>154.00</Amount>
    <Currency>GBP</Currency>
    </Transaction_Amount>
    </Amounts>
    - <Dates>
    <Trusted_Source>N</Trusted_Source>
    <Value_Date />
    </Dates>
    - <Bank_Account>
    <Bank_Account_Type>DR</Bank_Account_Type>
    - <Bank>
    - <Bank_Route_Code>
    <Code_Type>K</Code_Type>
    </Bank_Route_Code>
    </Bank>
    - <Account>
    <Account_ID>D562</Account_ID>
    </Account>
    </Bank_Account>
    - <Bank_Account>
    <Bank_Account_Type>CR</Bank_Account_Type>
    - <Bank>
    - <Bank_Route_Code>
    <Code_Type>K</Code_Type>
    - <Code>
    - <![CDATA[ 538111
      ]]>
    </Code>
    </Bank_Route_Code>
    - <Bank_Address_Info>
    - <Name>
    - <![CDATA[ Natwest
      ]]>
    </Name>
    - <Street1>
    - <![CDATA[ Long Sutton Branch
      ]]>
    </Street1>
    - <Street2>
    - <![CDATA[ 25 market Place
      ]]>
    </Street2>
    - <City>
    - <![CDATA[ Spalding
      ]]>
    </City>
    <Country>GB</Country>
    </Bank_Address_Info>
    </Bank>
    - <Account>
    - <Account_Number>
    - <![CDATA[ 12345678
      ]]>
    </Account_Number>
    - <Account_Address_Info>
    - <Name>
    - <![CDATA[ John Doe
      ]]>
    </Name>
    - <Street1>
    - <![CDATA[ Employee Addr1
      ]]>
    </Street1>
    - <Street2>
    - <![CDATA[ Employee Addr2
      ]]>
    </Street2>
    - <City>
    - <![CDATA[ EmployeeCity
      ]]>
    </City>
    <Country_Sub_Entity />
    <Postal>CF375YL</Postal>
    <Country>GB</Country>
    </Account_Address_Info>
    </Account>
    </Bank_Account>
    - <Payment_Details_Or_Addenda>
    - <Details_Text>
    - <![CDATA[ PAY OHRID: 100000999
      ]]>
    </Details_Text>
    </Payment_Details_Or_Addenda>
    - <Comments>
    - <Comment_Text>
    - <![CDATA[ NONE
      ]]>
    </Comment_Text>
    </Comments>
    - <References>
    - <Reference>
    <Reference_Type>FBNF</Reference_Type>
    - <Reference_Value>
    - <![CDATA[ INVOICE 20021004001542
      ]]>
    </Reference_Value>
    </Reference>
    - <Reference>
    <Reference_Type />
    - <Reference_Value>
    - <![CDATA[
      ]]>
    </Reference_Value>
    </Reference>
    - <Reference>
    <Reference_Type>FMAILEN</Reference_Type>
    - <Reference_Value>
    - <![CDATA[ [email protected]
      ]]>
    </Reference_Value>
    </Reference>
    </References>
    </Transaction>
    + <Transaction>
    <Transaction_Type>FT_TRANS_IMP</Transaction_Type>
    + <Transaction_Header>
    <Record_Number>2</Record_Number>
    <Urgent>N</Urgent>
    </Transaction_Header>
    + <Model_Info>
    - <Model_ID>
    - <![CDATA[ FF DOM EXT PAY
      ]]>
    </Model_ID>
    </Model_Info>
    + <Transfer_Info>
    <Charges>15</Charges>
    </Transfer_Info>
    - <Amounts>
    - <Transaction_Amount>
    <Amount>46.00</Amount>
    <Currency>EUR</Currency>
    </Transaction_Amount>
    </Amounts>
    - <Dates>
    <Trusted_Source>N</Trusted_Source>
    <Value_Date />
    </Dates>
    - <Bank_Account>
    <Bank_Account_Type>DR</Bank_Account_Type>
    - <Bank>
    - <Bank_Route_Code>
    <Code_Type>G</Code_Type>
    </Bank_Route_Code>
    </Bank>
    - <Account>
    <Account_ID>D202</Account_ID>
    </Account>
    </Bank_Account>
    - <Bank_Account>
    <Bank_Account_Type>CR</Bank_Account_Type>
    - <Bank>
    - <Bank_Route_Code>
    <Code_Type>G</Code_Type>
    - <Code>
    - <![CDATA[ 234543
      ]]>
    </Code>
    </Bank_Route_Code>
    - <Bank_Address_Info>
    - <Name>
    - <![CDATA[
      ]]>
    </Name>
    - <Street1>
    - <![CDATA[
      ]]>
    </Street1>
    - <Street2>
    - <![CDATA[
      ]]>
    </Street2>
    - <City>
    - <![CDATA[
      ]]>
    </City>
    <Country />
    </Bank_Address_Info>
    </Bank>
    - <Account>
    - <Account_Number>
    - <![CDATA[ DE65100700000123456789
      ]]>
    </Account_Number>
    - <Account_Address_Info>
    - <Name>
    - <![CDATA[ Test User
      ]]>
    </Name>
    - <Street1>
    - <![CDATA[ Employee Addr1
      ]]>
    </Street1>
    - <Street2>
    - <![CDATA[ Employee Addr2
      ]]>
    </Street2>
    - <City>
    - <![CDATA[ Berlin
      ]]>
    </City>
    <Country_Sub_Entity />
    <Postal>1234323</Postal>
    <Country>DE</Country>
    </Account_Address_Info>
    </Account>
    </Bank_Account>
    - <Payment_Details_Or_Addenda>
    - <Details_Text>
    - <![CDATA[ PAY OHRID: 100000888
      ]]>
    </Details_Text>
    </Payment_Details_Or_Addenda>
    - <Comments>
    - <Comment_Text>
    - <![CDATA[ NONE
      ]]>
    </Comment_Text>
    </Comments>
    - <References>
    - <Reference>
    <Reference_Type>FBNF</Reference_Type>
    - <Reference_Value>
    - <![CDATA[ INVOICE 20021101001053
      ]]>
    </Reference_Value>
    </Reference>
    - <Reference>
    <Reference_Type />
    - <Reference_Value>
    - <![CDATA[
      ]]>
    </Reference_Value>
    </Reference>
    - <Reference>
    <Reference_Type>FMAILEN</Reference_Type>
    - <Reference_Value>
    - <![CDATA[ [email protected]
      ]]>
    </Reference_Value>
    </Reference>
    </References>
    </Transaction>
    + <Transaction>
    <Transaction_Type>FT_TRANS_IMP</Transaction_Type>
    + <Transaction_Header>
    <Record_Number>3</Record_Number>
    <Urgent>N</Urgent>
    </Transaction_Header>
    + <Model_Info>
    - <Model_ID>
    - <![CDATA[ FF INTL EXT PAY
      ]]>
    </Model_ID>
    </Model_Info>
    + <Transfer_Info>
    <Charges>15</Charges>
    </Transfer_Info>
    + <Amounts>
    + <Transaction_Amount>
    <Amount>265.00</Amount>
    <Currency>EUR</Currency>
    </Transaction_Amount>
    </Amounts>
    + <Dates>
    <Trusted_Source>N</Trusted_Source>
    <Value_Date />
    </Dates>
    + <Bank_Account>
    <Bank_Account_Type>DR</Bank_Account_Type>
    - <Bank>
    - <Bank_Route_Code>
    <Code_Type>S</Code_Type>
    </Bank_Route_Code>
    </Bank>
    - <Account>
    <Account_ID>D202</Account_ID>
    </Account>
    </Bank_Account>
    + <Bank_Account>
    <Bank_Account_Type>CR</Bank_Account_Type>
    - <Bank>
    - <Bank_Route_Code>
    <Code_Type>S</Code_Type>
    - <Code>
    - <![CDATA[
      ]]>
    </Code>
    </Bank_Route_Code>
    + <Bank_Address_Info>
    - <Name>
    - <![CDATA[
      ]]>
    </Name>
    - <Street1>
    - <![CDATA[
      ]]>
    </Street1>
    - <Street2>
    - <![CDATA[
      ]]>
    </Street2>
    - <City>
    - <![CDATA[
      ]]>
    </City>
    <Country />
    </Bank_Address_Info>
    </Bank>
    + <Account>
    - <Account_Number>
    - <![CDATA[ NL02ABNA0123456789
      ]]>
    </Account_Number>
    - <Account_Address_Info>
    - <Name>
    - <![CDATA[ New User
      ]]>
    </Name>
    - <Street1>
    - <![CDATA[ Employee Addr1
      ]]>
    </Street1>
    - <Street2>
    - <![CDATA[ Employee Addr2
      ]]>
    </Street2>
    - <City>
    - <![CDATA[ Ansterdam
      ]]>
    </City>
    <Country_Sub_Entity />
    <Postal>34242</Postal>
    <Country>NL</Country>
    </Account_Address_Info>
    </Account>
    </Bank_Account>
    + <Payment_Details_Or_Addenda>
    - <Details_Text>
    - <![CDATA[ PAY OHRID: 100000777
      ]]>
    </Details_Text>
    </Payment_Details_Or_Addenda>
    + <Comments>
    + <Comment_Text>
    - <![CDATA[ NONE
      ]]>
    </Comment_Text>
    </Comments>
    + <References>
    + <Reference>
    <Reference_Type>FBNF</Reference_Type>
    - <Reference_Value>
    - <![CDATA[ INVOICE 20021101001025
      ]]>
    </Reference_Value>
    </Reference>
    + <Reference>
    <Reference_Type />
    - <Reference_Value>
    - <![CDATA[
      ]]>
    </Reference_Value>
    </Reference>
    + <Reference>
    <Reference_Type>FMAILEN</Reference_Type>
    - <Reference_Value>
    - <![CDATA[ [email protected]
      ]]>
    </Reference_Value>
    </Reference>
    </References>
    </Transaction>
    + <Transaction>
    <Transaction_Type>FT_TRANS_IMP</Transaction_Type>
    - <Transaction_Header>
    <Record_Number>4</Record_Number>
    <Urgent>N</Urgent>
    </Transaction_Header>
    - <Model_Info>
    - <Model_ID>
    - <![CDATA[ FF INTL EXT PAY
      ]]>
    </Model_ID>
    </Model_Info>
    - <Transfer_Info>
    <Charges>15</Charges>
    </Transfer_Info>
    - <Amounts>
    - <Transaction_Amount>
    <Amount>34.70</Amount>
    <Currency>EUR</Currency>
    </Transaction_Amount>
    </Amounts>
    - <Dates>
    <Trusted_Source>N</Trusted_Source>
    <Value_Date />
    </Dates>
    - <Bank_Account>
    <Bank_Account_Type>DR</Bank_Account_Type>
    - <Bank>
    - <Bank_Route_Code>
    <Code_Type>S</Code_Type>
    </Bank_Route_Code>
    </Bank>
    - <Account>
    <Account_ID>D202</Account_ID>
    </Account>
    </Bank_Account>
    - <Bank_Account>
    <Bank_Account_Type>CR</Bank_Account_Type>
    - <Bank>
    - <Bank_Route_Code>
    <Code_Type>S</Code_Type>
    - <Code>
    - <![CDATA[
      ]]>
    </Code>
    </Bank_Route_Code>
    - <Bank_Address_Info>
    - <Name>
    - <![CDATA[
      ]]>
    </Name>
    - <Street1>
    - <![CDATA[
      ]]>
    </Street1>
    - <Street2>
    - <![CDATA[
      ]]>
    </Street2>
    - <City>
    - <![CDATA[
      ]]>
    </City>
    <Country />
    </Bank_Address_Info>
    </Bank>
    - <Account>
    - <Account_Number>
    - <![CDATA[ FR313000400828000123456789
      ]]>
    </Account_Number>
    - <Account_Address_Info>
    - <Name>
    - <![CDATA[ French User
      ]]>
    </Name>
    - <Street1>
    - <![CDATA[ Employee Addr1
      ]]>
    </Street1>
    - <Street2>
    - <![CDATA[ Employee Addr2
      ]]>
    </Street2>
    - <City>
    - <![CDATA[ Paris
      ]]>
    </City>
    <Country_Sub_Entity />
    <Postal>54333</Postal>
    <Country>FR</Country>
    </Account_Address_Info>
    </Account>
    </Bank_Account>
    - <Payment_Details_Or_Addenda>
    - <Details_Text>
    - <![CDATA[ PAY OHRID: 100000666
      ]]>
    </Details_Text>
    </Payment_Details_Or_Addenda>
    - <Comments>
    - <Comment_Text>
    - <![CDATA[ NONE
      ]]>
    </Comment_Text>
    </Comments>
    - <References>
    - <Reference>
    <Reference_Type>FBNF</Reference_Type>
    - <Reference_Value>
    - <![CDATA[ INVOICE 20021101001481
      ]]>
    </Reference_Value>
    </Reference>
    - <Reference>
    <Reference_Type />
    - <Reference_Value>
    - <![CDATA[
      ]]>
    </Reference_Value>
    </Reference>
    - <Reference>
    <Reference_Type>FMAILEN</Reference_Type>
    - <Reference_Value>
    - <![CDATA[ [email protected]
      ]]>
    </Reference_Value>
    </Reference>
    </References>
    </Transaction>
    - <File_Trailer_Record>
    <File_Name>ETNL_TRAVELR_PAYMENTS</File_Name>
    <Total_Records>4</Total_Records>
    </File_Trailer_Record>
    </File>
    regards
    Ramashankar Sahu

    As I recall from my 8i days (it's been many years), the only way to do this is to install the XML XDK. From http://www.oracle.com/technology/tech/xml/xdk/xdk_java.html, it says "The Oracle9i versions of the XDK can also be used to build applications designed to interface with Oracle8i databases." I had thought the 10g version could do that as well but I'm not seeing it now.
    Since XMLType was not part of 8i, you will need to use PL/SQL to take your Select statement results and build them into a DOMDocument structure.
    Hope that helps.

  • Generating Deeply nested XML from a flat file

    Hi All,
    I am working on a MQ to IDOC scenario.
    I am getting a flat file as input. I need to convert it into XML( so that XI can understand it).
    But conversion is into a "Deeply Nested XML from a Flat File" at sender side (JMS Adapter).
    Any inputs on this.
    Regards,
    Vikas

    You can only convert flat file into xml structure with 3 levels.
    If you need to convert flat file into deep nested xml structure, you have to do java mapping or xslt or abap mapping. There is a tool, I think it's called conversion agent by itemfield (bought by SAP), which can do pretty everything with conversion. Never used it though.
    Jayson

  • Nested XML Output in PL/SQL

    I need to generate XML that looks like this:
    <Person>
    <Name>
    <FirstName>IMA</FirstName>
    <MiddleName>ANOTHER</MiddleName>
    <LastName>TEST</LastName>
    <BirthDate>04/05/1982</BirthDate>
    </Name>
    <IDDetails>
    <SSNID>234-23-3333</SSNID>
    <OtherID>19781</OtherID>
    </IDDetails>
    <PhysicalDetails>
    <Weight>145</Weight>
    <EyeColor>BLUE</EyeColor>
    <HairColor></HairColor>
    <Sex>FEMALE</Sex>
    <Race>BLACK</Race>
    <SkinToneText></SkinTone>
    </PhysicalDetails>
    <SocialDetails>
    <Ethnicity>UNKNOWN</Ethnicity>
    <Language>ENGLISH</Language>
    </SocialDetails>
    <Address>
    <Street>123 Somewhere Street</Street>
    <City>AnyWhere</City>
    <State>Confusion</State>
    <Zip>99999</Zip>
    </Address>
    </Person>
    I was able to sucessfully generate it in SQL by creating a view using this code:
    create or replace view person_xml_view as
    select
    xmlelement("Person",
    xmlelement("Name",
    xmlelement("FirstName", first_name),
    xmlelement("MiddleName",middle_name),
    xmlelement("LastName",last_name),
    xmlelement("BirthDate",to_char(date_of_birth,''MM/DD/YYYY''))),
    xmlelement("IDDetails",
    xmlelement("SSN",b.external_number),
    xmlelement("OtherID",a.mni)),
    xmlelement("PhysicalDetails",
    xmlelement("Weight",a.weight),
    xmlelement("EyeColor",a.eye_color),
    xmlelement("HairColor",a.hair_color),
    xmlelement("Sex",a.sex),
    xmlelement("Race",a.race),
    xmlelement("SkinTone",a.skin_tone)),
    xmlelement("SocialDetails",
    xmlelement("Ethnicity",ethnicity),
    xmlelement("Language",language)),
    xmlelement("Address",
    xmlelement("Street",c.address),
    xmlelement("City",c.city),
    xmlelement("State",c.state),
    xmlelement("Zip",c.zip)))
    as result from
    names a,
    numbers b,
    addresses c
    where
    (a.mni = b.mni (+) AND
    b.number_type (+) = 'SOCIAL SECURITY NUMBER') AND
    (a.mni = c.mni (+) AND
    c.current_address_flag (+)= 'T') AND
    a.MNI = 19781);
    My end goal is to write a function that returns the XML back to the caller, but when I the dbms_xmlgen I can't get the sub-tags to be inserted correctly. Here's the code as it is today:
    FUNCTION GETXML
    ( v_pk IN Number)
    RETURN xmltype as out xmltype;
    ctx dbms_xmlgen.ctxhandle;
    BEGIN
    ctx := dbms_xmlgen.newcontext('select a.first_name as "FirstName",
    a.middle_name as "MiddleName",
    a.last_name as "LastName",
    to_char(a.date_of_birth,''MM/DD/YYYY'') AS "BirthDate",
    b.external_number as "SSNID",
    a.mni as "OtherID",
    a.weight as "Weight",
    a.eye_color as "EyeColor",
    a.hair_color as "HairColor",
    a.sex as "Sex",
    a.race as "Race",
    a.skin_tone as "SkinTone",
    a.ethnicity as "Ethnicity",
    a.language as "Language",
    c.address as "Street",
    c.city as "City",
    c.state as "State",
    c.zip as "Zip"
    from
    names a,
    numbers b,
    addresses c
    where
    (a.mni = b.mni (+) AND
    b.number_type (+) = ''SOCIAL SECURITY NUMBER'') AND
    (a.mni = c.mni (+) AND
    c.current_address_flag (+)= ''T'') AND
    a.MNI = '||V_MNI);
    dbms_xmlgen.setrowsettag(ctx,'Person');
    dbms_xmlgen.setrowtag(ctx,'Name');
    dbms_xmlgen.setrowtag(ctx,'IDDetails');
    dbms_xmlgen.setrowtag(ctx,'PhysicalDetails');
    dbms_xmlgen.setrowtag(ctx,'SocialDetails');
    dbms_xmlgen.setrowtag(ctx,'Address');
    out := dbms_xmlgen.getxmltype(ctx);
    dbms_xmlgen.closecontext(ctx);
    return out;
    END;
    How do you do the nested tags?

    Hi,
    Here is simple way of genrating nested XML.
    FUNCTION GETXML
    ( v_pk IN Number)
    RETURN sys.XMLType
    CURSOR C1
    IS
    xmlelement("Person",
    xmlelement("Name",
    xmlforest(first_name as "FirstName",
    middle_name as "MiddleName",
    last_name as "LastName",
    to_char(date_of_birth,''MM/DD/YYYY'') as"BirthDate"),
    xmlelement("IDDetails",
    xmlforest(b.external_number as "SSN",
    a.mni as "OtherID")),
    xmlelement("PhysicalDetails",
    xmlforest(a.weight as "Weight",
    a.eye_color as "EyeColor",
    a.hair_color as "HairColor",
    a.sex as "Sex",
    a.race as "Race",
    a.skin_tone as "SkinTone")),
    xmlelement("SocialDetails",
    xmlforest(ethnicity as "Ethnicity",
    language as "Language")),
    xmlelement("Address",
    xmlforest(c.address as "Street",
    c.city as "City",
    c.state as "State",
    c.zip as "Zip")) as result
    from
    names a,
    numbers b,
    addresses c
    where
    (a.mni = b.mni (+) AND
    b.number_type (+) = 'SOCIAL SECURITY NUMBER') AND
    (a.mni = c.mni (+) AND
    c.current_address_flag (+)= 'T') AND
    a.MNI = 19781);
    v_xml sys.XMLType
    BEGIN
    open c1;
    fetch c1 into v_xml;
    close c1;
    return v_xml;
    END
    In short use xmlforest to genrate inner child tags.

  • Nested XML with XSU

    I have data in an Oracle8i-database and will use Java to export
    it to XML. I&#8217;m trying to use XML Developer&#8217;s Kit&#8217;s (XDK&#8217;s) XML
    SQL Utility&#8217;s (XSU&#8217;s) OracleXMLQuery class. But I&#8217;ve problems to
    get the nested XML-structure I need!
    Oracle says there&#8217;s two good ways to do this:
    &#8220;Source Customization
    This category incompases customizations done by altering the
    query or the database schema. Among the simplest and the most
    powerful source customizations are:
    * over the database schema, create an object-relational view
    which maps to the desired XML document structure.
    * in your query, use cursor subqueries, or cast-multiset
    constructs to get nesting in the XML document which comes from a
    flat schema.&#8221;
    They then have an example how to create an object-relational
    view. But this is done with an empty database, and I already
    have tables with data so I don&#8217;t know how to do this.
    I&#8217;ve tried with some simple subqueris like
    SELECT name, id,
    (SELECT COUNT(*) FROM order o WHERE c.id = o.id) AS
    NumOfOrders
    FROM cust c
    But it adds just another colum.
    Could somebody help me or direct me to some resource, please?
    Thanks!

    I have data in an Oracle8i-database and will use Java to export
    it to XML. I&#8217;m trying to use XML Developer&#8217;s Kit&#8217;s (XDK&#8217;s) XML
    SQL Utility&#8217;s (XSU&#8217;s) OracleXMLQuery class. But I&#8217;ve problems to
    get the nested XML-structure I need!
    Oracle says there&#8217;s two good ways to do this:
    &#8220;Source Customization
    This category incompases customizations done by altering the
    query or the database schema. Among the simplest and the most
    powerful source customizations are:
    * over the database schema, create an object-relational view
    which maps to the desired XML document structure.
    * in your query, use cursor subqueries, or cast-multiset
    constructs to get nesting in the XML document which comes from a
    flat schema.&#8221;
    They then have an example how to create an object-relational
    view. But this is done with an empty database, and I already
    have tables with data so I don&#8217;t know how to do this.
    I&#8217;ve tried with some simple subqueris like
    SELECT name, id,
    (SELECT COUNT(*) FROM order o WHERE c.id = o.id) AS
    NumOfOrders
    FROM cust c
    But it adds just another colum.
    Could somebody help me or direct me to some resource, please?
    Thanks!

  • Correction for Nested XML Data Sample

    I found an error in the sample code on the
    Nested
    XML Data Sample under "Using Nested Data Sets." Line 8 has
    var dsToppings = new Spry.Data.NestedXMLDataSet(dsItems1,
    "toppings");, but it should be
    var dsToppings = new Spry.Data.NestedXMLDataSet(dsItems1,
    "topping"); in order to match the XML file.
    Another suggestion for us newbies would be to have the
    samples start with a comment about any additional scripts we need
    to insert into our files. It took me a long time to realize I
    needed to include
    <script type="text/javascript"
    src="scripts/SpryNestedXMLDataSet.js"></script> with
    the others in the head.
    Thanks for your work!
    Jonathan

    Hi Jonathan,
    Thanks for catching that. I corrected the doc and the change
    will appear when we release 1.5.
    Also, regarding <script> includes sample, yes, we
    should definitely be doing that.
    Thanks!!!
    --== Kin ==--

  • Database data to nested xml structure

    Hi All,
    I need to convert the data in the oracle database to nested xml tree structure as below:
    Data in the database is in the following structure:
    1     branch1     13-JAN-11     a.txt
    1     branch1     25-JAN-11     b.txt
    1     branch1     25-JAN-11     c.txt
    1     branch2     20-JAN-11     d.txt
    2
    XML for the above data should be in the format:
    <Root>
    <Account_no value="1">
    <Desc value="branch1">
    <Date value="13-JAN-11">
    <Name value="a.txt"/>
    </Date>
    <Date value="25-JAN-11">
    <Name value="b.txt"/>
    <Name value="c.txt"/>
    </Date>
    </Desc>
    <Desc value="branch2">
    <Date value="20-JAN-11">
    <Name value="d.txt"/>
    </Date>
    </Desc>
    </Account_no>
    <Account_no value="2">
    </Account_no>
    </Root>
    I am able to get this kind of xml structure using java after storing the database data in a n-ary tree. But it takes more time to execute.
    Can this kind of same xml format be achieved using pl/sql programming?
    Please help me with your valuable insights.
    Thanks,
    Alagappan

    Hi,
    Please always mention your db version (select * from v$version).
    Here's one solution using SQL/XML functions :
    Sample data used :
    create table sample_data
      account_no  number,
      description varchar2(30),
      dt          date,
      name        varchar2(30)
    insert into sample_data values(1, 'branch1', to_date('13-JAN-11','DD-MON-RR'), 'a.txt');
    insert into sample_data values(1, 'branch1', to_date('25-JAN-11','DD-MON-RR'), 'b.txt');
    insert into sample_data values(1, 'branch1', to_date('25-JAN-11','DD-MON-RR'), 'c.txt');
    insert into sample_data values(1, 'branch2', to_date('20-JAN-11','DD-MON-RR'), 'd.txt');
    insert into sample_data values(2, 'branch3', to_date('20-JAN-11','DD-MON-RR'), 'e.txt');Query :
    SELECT xmlserialize(document
             xmlelement("Root",
               xmlagg(
                 xmlelement("Account_no", xmlattributes(account_no as "value"),
                   xmlagg(
                     xmlelement("Desc", xmlattributes(description as "value"), dt)
                     order by description
                 ) order by account_no
           as clob indent ) doc
    FROM (
      SELECT account_no, description,
             xmlagg(
               xmlelement("Date", xmlattributes(to_char(dt,'DD-MON-RR') as "value"), name)
               order by dt
             ) dt
      FROM (
        SELECT account_no, description, dt,
               xmlagg(
                 xmlelement("Name", xmlattributes(name as "value"))
                 order by name
               ) name
        FROM sample_data
        GROUP BY account_no, description, dt
      GROUP BY account_no, description
    GROUP BY account_no
    DOC
    <Root>
      <Account_no value="1">
        <Desc value="branch1">
          <Date value="13-JAN-11">
            <Name value="a.txt"/>
          </Date>
          <Date value="25-JAN-11">
            <Name value="b.txt"/>
            <Name value="c.txt"/>
          </Date>
        </Desc>
        <Desc value="branch2">
          <Date value="20-JAN-11">
            <Name value="d.txt"/>
          </Date>
        </Desc>
      </Account_no>
      <Account_no value="2">
        <Desc value="branch3">
          <Date value="20-JAN-11">
            <Name value="e.txt"/>
          </Date>
        </Desc>
      </Account_no>
    </Root>
    Here, I used XMLSerialize function with indent option to format the output (available starting with 11g).

  • Nested XML structure from Oracle

    Using the SQL Adapter i BizTalk, calling a SQL Stored procedure on a MS SQL DB, I can get a nice nested XML structure using p JOIN ii and FOR XML AUTO, like this
    <p code="DK003">
    <ii stamp="2013-01-14T10:27:38.790"value="180.702052"price="184.000000">
    <d Dividend="2.50"DividendDate="2012-03-29T00:00:00" />
    </ii>
    <ii stamp="2013-01-14T10:27:38.790"value="181.702052"price="14.000000">
    <d Dividend="2.50"DividendDate="2012-03-29T00:00:00" />
    </ii>
    </p>
    How can I get the same on Oracle ??

    Hi E.,
    I guess this an XML namespace issue. I'm creating XmlForms-style documents and had to add an XML namespace to my root element to make them visible as such:
    Namespace xf = Namespace.getNamespace("xf", "http://www.sapportals.com/wcm/app/xmlforms");
    root.addNamespaceDeclaration(xf);
    So what I'd suggest to you is reading out the IResource and treating the content as XML:
    Document document = new  SAXBuilder().build(content.getInputStream());
    Element root = document.getRootElement();
    Namespace xf = Namespace.getNamespace("xf", "http://www.sapportals.com/wcm/app/xmlforms");
    root.removeNamespaceDeclaration(xf);
    Hope this helps!
    regards,
    Christian

  • Nested XML & Pagination

    Hi,
    Just wondering if anyone has implemented pagination for
    nested XML. Our XML structure is as following:
    <items>
    <item id="0001" type="donut">
    <name>Cake</name>
    <ppu>0.55</ppu>
    <batters>
    <batter id="1001">Regular</batter>
    <batter id="1002">Chocolate</batter>
    <batter id="1003">Blueberry</batter>
    </batters>
    <topping id="5001">None</topping>
    <topping id="5002">Glazed</topping>
    <topping id="5005">Sugar</topping>
    <topping id="5006">Sprinkles</topping>
    <topping id="5003">Chocolate</topping>
    <topping id="5004">Maple</topping>
    </item>
    </items>
    We are trying to achieve the following display:
    * Cake
    o None
    o Glazed
    o Sugar
    o Powdered Sugar
    o Chocolate with Sprinkles
    o Chocolate
    o Maple
    * Raised
    o None
    o Glazed
    o Sugar
    o Chocolate
    o Maple
    * Buttermilk
    * Bar
    o Chocolate
    o Maple
    * Twist
    o Glazed
    o Sugar
    * Filled
    o Glazed
    o Powdered Sugar
    o Chocolate
    o Maple
    The Spry code for it as following:
    <script language="JavaScript" type="text/javascript"
    src="../../includes/xpath.js"></script>
    <script language="JavaScript" type="text/javascript"
    src="../../includes/SpryData.js"></script>
    <script language="JavaScript" type="text/javascript"
    src="../../includes/SpryNestedXMLDataSet.js"></script>
    <script type="text/javascript">
    // Setup a parent data set:
    var dsItems1 = new
    Spry.Data.XMLDataSet("../../data/donuts.xml", "/items/item");
    // Setup a couple of nested data sets:
    var dsBatters = new Spry.Data.NestedXMLDataSet(dsItems1,
    "batters/batter");
    var dsToppings = new Spry.Data.NestedXMLDataSet(dsItems1,
    "topping");
    </script>
    <div spry:region="dsItems1 dsToppings">
    <ul>
    <li spry:repeat="dsItems1">{dsItems1::name}
    <ul>
    <li
    spry:repeat="dsToppings">{dsToppings::topping}</li>
    </ul>
    </li>
    </ul>
    </div>
    We want to implement pagination on dsItems1::name. Any help
    on how to implement pagination on it would be greatly appreciated.
    Many thanks.
    Cheers,
    D.

    Hi DharmenderY,
    The PagedView data set doesn't work very well with Nested
    Data Sets. This is something I want to fix in the next version. The
    work around is to make nested data sets based on the paged view:
    // Setup a parent data set:
    var dsItems1 = new
    Spry.Data.XMLDataSet("../../data/donuts.xml", "/items/item");
    var pvItems1 = new Spry.Data.PagedView(dsItems1);
    // Setup a couple of nested data sets:
    var dsBatters = new Spry.Data.NestedXMLDataSet(pvItems1,
    "batters/batter");
    var dsToppings = new Spry.Data.NestedXMLDataSet(pvItems1,
    "topping");
    That should get things rendering properly.
    --== Kin ==--

  • Nested XML data set

    Hi there,
    I have a problem with displaying some nested XML data. I've
    tried quite a lot of different approachey to this, but just can't
    get it working properly. So here's the deal:
    I have an XML file (which is dynamically created from a
    servlet) of the form:
    <variations>
    <variation>
    <name>...</name>
    <...>...</...>
    <links>
    <link>
    <type>...</type>
    <name>...</name>
    </link>
    </links>
    </variation>
    </variations>
    On my webpage, I use a Spry tabbed panel with one tab for
    each of the 'variation's in the XML file. Within the tabs I have
    (many) form fields dynamically filled with the values from the XML
    and that all works fine, but I also want to display a table with
    one row corresponding to each 'link'... and that just won't work...
    My latest approach looks something like this:
    <head>
    <script type="text/javascript">
    <!--
    var dsVariations = new
    Spry.Data.XMLDataSet("Servlet?id=1&cmd=getVariations",
    "variations/variation");
    var dsLinks = new
    Spry.Data.XMLDataSet("Servlet?id=0&cmd=getLinks",
    "links/link");
    //-->
    </script>
    </head>
    <body>
    <div id="TabbedPanels1" spry:region="dsVariations">
    <div id="TP1" class="TabbedPanels">
    <ul class="TabbedPanelsTabGroup">
    <li spry:repeat="dsVariations" class="TabbedPanelsTab"
    tabindex="0">{dsVariations::name}</li>
    </ul>
    <div class="TabbedPanelsContentGroup">
    <div spry:repeat="dsVariations"
    class="TabbedPanelsContent">
    // a lot of form stuff
    <table border="1">
    <script type="text/javascript">
    dsLinks.setURL("Servlet?id={dsVariations::id}&cmd=getLinks");
    dsLinks.loadData();
    </script>
    <tr spry:repeat="dsLinks">
    <td>{dsLinks::type}</td>
    <td>{dsLinks::name}</td>
    </tr>
    </tr>
    </table>
    </div>
    </div>
    </body>
    In this, the Servlet call with cmd=getVariations returns the
    whole XML stated above, while the cmd=getLinks will only get the
    corresponding part (everything between <links> and
    </links>).
    The error message I get for this is: processTokens() failed
    to get a data set context!.
    I previously tried to use a NestedXMLDataSet, but couldn't
    get that working either... I'm really kind of stuck by now and
    would appreciate any help.
    Thanks,
    Florian
    PS Thanks a lot for creating Spry: It's great!

    Thanks for your reply, Cristian.
    I'm afraid I couldn't do that since it would cause the whole
    region to be reloaded constantly (because it's being updated each
    time I do the setURL / loadData)... in fact, I tried this before
    and it didn't work.
    But, in fact, I figured that the fact that I could not get it
    running using a NestedXMLDataSet (as I would generally prefer), did
    not actually come down to a problem in the page source code, but
    actually to a problem with the very XML itself:
    I tried to recreate the simple nested data set example (
    http://labs.adobe.com/technologies/spry/samples/data_region/NestedDataSample.html)
    and basically used the same code and an almost identical XML
    structure... yet it doesn't work. The contents of dsFeatures just
    won't be displayed and when I'm inspecting the contents of
    dsFeatures (using Firebug) it shows me that the dataset is empty. I
    just don't get why it works for your example, but not for my
    modified version... I can't see any crucial difference :-s.
    To simplify the problem I deleted most tags from the XML and
    saved it in a static document "variations.xml":
    <variations>
    <variation>
    <name>Var 1</name>
    <features>
    <feature>none</feature>
    <feature>feat1</feature>
    <feature>feat2</feature>
    </features>
    </variation>
    <variation>
    <name>Var 2</name>
    <features>
    <feature>none</feature>
    </features>
    </variation>
    </variations>
    The source of the test page would be:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
    Transitional//EN" "
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="
    http://www.w3.org/1999/xhtml"
    xmlns:spry="
    http://ns.adobe.com/spry">
    <head>
    <meta http-equiv="Content-Type" content="text/html;
    charset=iso-8859-1" />
    <title>Nested Data Sample</title>
    <script language="JavaScript" type="text/javascript"
    src="SpryAssets/xpath.js"></script>
    <script language="JavaScript" type="text/javascript"
    src="SpryAssets/SpryData.js"></script>
    <script language="JavaScript" type="text/javascript"
    src="SpryAssets/SpryNestedXMLDataSet.js"></script>
    <script type="text/javascript">
    var dsVariations = new Spry.Data.XMLDataSet("variations.xml",
    "/variations/variation");
    var dsFeatures = new Spry.Data.NestedXMLDataSet(dsVariations,
    "features/feature");
    </script>
    </head>
    <body>
    <table border="1">
    <tr>
    <th width="30%"
    onclick="dsVariations.sort('name');">dsVariations</th>
    <th width="30%"
    onclick="dsFeatures.sort('link')">dsFeatures</th>
    <th width="30%">dsVariations + dsFeatures</th>
    </tr>
    <tr>
    <td valign="top"><div
    spry:region="dsVariations">
    <ul>
    <li spry:repeat="dsVariations" spry:select="select"
    spry:hover="hover" spry:setrow="dsVariations"> {name}
    </li>
    </ul>
    </div></td>
    <td valign="top"><div spry:region="dsFeatures">
    <ul>
    <li spry:repeat="dsFeatures"> {dsFeatures::feature}
    </li>
    </ul>
    </div></td>
    <td valign="top"><div spry:region="dsVariations
    dsFeatures">
    <ul>
    <li spry:repeat="dsVariations"> {dsVariations::name}
    <ul>
    <li
    spry:repeat="dsFeatures">{dsFeatures::feature}</li>
    </ul>
    </li>
    </ul>
    </div></td>
    </tr>
    </table>
    </body>
    Evidently, I'm missing some essential simple point here...
    Thanks,

Maybe you are looking for

  • What is the Firefox equivalent of Windows' %username%?

    I'm trying to setup username variables in about:config, notably default download location and browser.cache.disk.parent_directory . When I use the standard %username% variable in these settings, Firefox interprets them literally. Does Firefox have an

  • Product costing during sales order entry

    Dear Experts, Pricing Condition EK02 can calculate the actual cost during sales order entry. If the product costing will be activated for each and every order line item for calculating the actual cost EK02 automatically, does this have any down falls

  • BPM Suite 11.1.1.5 Feature Pack - Instance Migration

    Hi, In BPM Suite 11.1.1.5 Feature Pack, Instance Migration was introduced. A very nice and essential feature. I'd like to investegate the behaviour of this feature. However I can't find any documentation about it. Also not in the new documentation. A

  • CSS needs PHP to execute in order to render in Dreamweaver CS6

    When I view my web pages while in Dreamweaver, I need a piece of PHP code ( called ws_general.php ) to execute in order for the CSS to render. The pages do look fine when in a browser but I would like to solve this to better test my pages while in Dr

  • Cannot stop music using control center in lock screg

    Downloaded IOS 7 on iPhone 5. With the lock screen, control center NOT working to stop the song...anyone has the same problem ?


HashFlare