Storing complex linked structures using XSU utility

We have a requirement to store data with very complex linked structures in database. One utility we are analyzing is the XML SQL Utility (XSU).
The original file is a binary encoded file and it has to be converted to XML for persisting. The files are really huge and complex.
The main program is in C++, which decodes the binary file and this has to be interfaced with Java to use this utility.
If anybody has used this tool for a similar requirement, please give your inputs regarding the performance issues when handling huge, complex data.
Thanks and regards
Manshi

You can use XDK C++ interface to write a program. To be able to deal with large document, SAX will be a good parsing technique.
There is no simple tools available as far as I know.

Similar Messages

  • FCC on Sender CC to convert flat file to complex xml structure

    Hi ,
    i need to create a complex xml structure using FCC at the sender communication channel.
    the datatype structure is as follows:
    Data type     Occurrence
    DT_SOURCE     
    SEG_9     1..1
    SEG_10     1..1
    SEG_20     1..1
    SEG_30     0..1
    SEG_40     1..2
    SEG_50     0..1
    SEG_55(loop)     0..1
           SEG_55     0..9999
           SEG_60-70(loop)     1..1
                SEG_60     0..1
                SEG_70     0..9999
    SEG_90     0..1
    Please let me know how this can be acheived.
    Regards,
    Meenakshi
    Edited by: meenakshipradhan on Apr 5, 2010 7:44 PM

    Hi  Meenakshi,
    Please let us know the Hierarchy of the structure to be created, is it one level only?
    Could you please explaing  what is the loop meant here?
    SEG_55(loop) 0..1
    SEG_55 0..9999
    SEG_60-70(loop) 1..1
    Please specify if there are any delimiters or what is the  file format at source.
    Or Try reading the whole content of the file then use a XSLT to create the desired structure, i think in XSLT you can easily try out the looping.
    Regards,
    Srinivas.

  • Storing XML using XSU, object VIEW and INSTEAD OF trigger

    Here is the point:
    I've got 2 tables which are linked:
    CREATE TABLE dept (
    deptno NUMBER PRIMARY KEY,
    deptname VARCHAR2(20)
    CREATE TABLE emp (
    empno NUMBER PRIMARY KEY,
    empname VARCHAR2(20),
    deptno NUMBER REFERENCES dept(deptno)
    I've got the following message, which I want to insert in the tables using XSU (I already have a PL/SQL stored procedure which work perfectly for insertion into 1 table, using DBMS_XMLSave.insertXML or xmlgen.insertXML):
    <DEPT>
    <DEPTNO>10</DEPTNO>
    <DEPTNAME>IT</DEPTNAME>
    <EMP>
         <EMPNO>1</EMPNO>
         <EMPNAME>John</EMPNAME>
    </EMP>
    <EMP>
         <EMPNO>1</EMPNO>
         <EMPNAME>Phil</EMPNAME>
    </EMP>
    </DEPT>
    So I've created the following object:
    CREATE TYPE emp_t AS OBJECT
    empno NUMBER,
    empname VARCHAR2(20)
    CREATE TYPE emplist_t AS TABLE OF emp_t;
    CREATE TYPE dept_t AS OBJECT
    deptno NUMBER,
    deptname VARCHAR2(20),
    emplist emplist_t
    Now I understand that I should create an object VIEW and an INSTEAD OF trigger (That's what I read many times),
    but I don't know how to structure the view and the trigger.
    Could you help? (Example of a similar context, piece of code)
    Thanks a lot
    Marion

    Hi John,
    I have exactly the same issue as you experienced back in January. I have a complex data modelling requirement which requires the need to pivot rows into columns using ROW_NUMBER() and PARTITION clauses. To hide the complexity from the middle tier, I have created a database view and appropriate INSTEAD OF triggers and mapped my EO to the view. I have overriden the lock() method on the EO implementation class (to avoid ORA-02014) and would like to try the same solution you used with the pl/sql call to lock the record.
    My question is, how did you manage the release of the lock if the transaction was not rolled back or committed by your application i.e. if the user closed the browser for instance.
    In my naivity, I would like to think that the BC4J framework would release any locks for the database session when it found the servlet session to be terminated however my concern is that the lock would persist and cause complications.
    Any assistance greatly appreciated (if you would be willing to supply your lock() method and pl/sql procedure logic I would be even more grateful!).
    Many thanks,
    Dave
    London

  • Modelling complex data structures

    Hello all,
    I'm trying to understand how to model and design a scenario where the data is non-flat (specifically purchase orders).  As far as I understand Duet Enterprise does not handle non-flat structures (without custom coding in SharePoint).
    What are some options that other people have used to address this?
    The two that I thought of are:
    1.  Model the header and line item data structures separately and then somehow link them in SharePoint
    2.  Don't use the external list external content type in SharePoint and develop something custom
    Does anybody else have any other ideas?  Do you have any examples or starting points?
    Thank you.

    You should avoided passing complex data structure across the JNI boundary. It is slow and it is very difficult to get right. Either make your JNI code so simple that its parameters are primitives or very simple objects, or make your Java code so simple ditto.

  • Using OnyX utility on a MBP w/ SSD installed

    Good Day all,
    I was curious to know if it is safe or necessary to using common Mac cleaning utilities like Onyx on a Macbook Pro that has been upgraded to an SSD. I recently upgraded my 13 Macbook Pro 8,1 to a Samsung 840 SSD 512Gb and have gone through various website that like ways to optimize using an SSD on a Mac.
    This is what I have thus far:
    Don’t run benchmarks on your new SSD
    Use Trim Enabler (I went with Chameleon Optimizer for this)
    Turn off local Time Machine snapshots
    Turn off hibernation
    Set noatime flag
    Turn off sudden motion sensor
    Turn off hard drive sleep
    Delete old sleep image
    So after doing all this, do I still need to use a utility such as Onyx from time to time on a MBP with an SSD. Or are these kind of utilities harmful to SSDs?
    Thanks

    How to maintain a Mac
    1. Make redundant backups, keeping at least one off site at all times. One backup is not enough. Don’t back up your backups; make them independent of each other. Don’t rely completely on any single backup method, such as Time Machine. If you get an indication that a backup has failed, don't ignore it.
    2. Keep your software up to date. In the Software Update preference pane, you can configure automatic notifications of updates to OS X and other Mac App Store products. Some third-party applications from other sources have a similar feature, if you don’t mind letting them phone home. Otherwise you have to check yourself on a regular basis. This is especially important for complex software that modifies the operating system, such as device drivers. Before installing any Apple update, you must check that all such modifications that you use are compatible.
    3. Don't install crapware, such as “themes,” "haxies," “add-ons,” “toolbars,” “enhancers," “optimizers,” “accelerators,” "boosters," “extenders,” “cleaners,” "doctors," "tune-ups," “defragmenters,” “firewalls,” "barriers," “guardians,” “defenders,” “protectors,” most “plugins,” commercial "virus scanners,” "disk tools," or "utilities." With very few exceptions, this stuff is useless, or worse than useless.
    The more actively promoted the product, the more likely it is to be garbage. The most extreme example is the “MacKeeper” scam.
    As a rule, the only software you should install is that which directly enables you to do the things you use a computer for — such as creating, communicating, and playing — and does not modify the way other software works. Use your computer; don't fuss with it.
    Never install any third-party software unless you know how to uninstall it. Otherwise you may create problems that are very hard to solve.
    The free anti-malware application ClamXav is not crap, and although it’s not routinely needed, it may be useful in some environments, such as a mixed Mac-Windows enterprise network.
    4. Beware of trojans. A trojan is malicious software (“malware”) that the user is duped into installing voluntarily. Such attacks were rare on the Mac platform until sometime in 2011, but are now increasingly common, and increasingly dangerous.
    There is some built-in protection against downloading malware, but you can’t rely on it — the attackers are always at least one day ahead of the defense. You can’t rely on third-party protection either. What you can rely on is common-sense awareness — not paranoia, which only makes you more vulnerable.
    Never install software from an untrustworthy or unknown source. If in doubt, do some research. Any website that prompts you to install a “codec” or “plugin” that comes from the same site, or an unknown site, is untrustworthy. Software with a corporate brand, such as Adobe Flash Player, must be acquired directly from the developer. No intermediary is acceptable, and don’t trust links unless you know how to parse them. Any file that is automatically downloaded from a web page without your having requested it should go straight into the Trash. A website that claims you have a “virus,” or that anything else is wrong with your computer, is rogue.
    In OS X 10.7.5 or later, downloaded applications and Installer packages that have not been digitally signed by a developer registered with Apple are blocked from loading by default. The block can be overridden, but think carefully before you do so.
    Because of recurring security issues in Java, it’s best to disable it in your web browsers, if it’s installed. Few websites have Java content nowadays, so you won’t be missing much. This action is mandatory if you’re running any version of OS X older than 10.6.8 with the latest Java update. Note: Java has nothing to do with JavaScript, despite the similar names. Don't install Java unless you're sure you need it. Most people don't.
    5. Don't fill up your boot volume. A common mistake is adding more and more large files to your home folder until you start to get warnings that you're out of space, which may be followed in short order by a boot failure. This is more prone to happen on the newer Macs that come with an internal SSD instead of the traditional hard drive. The drive can be very nearly full before you become aware of the problem. While it's not true that you should or must keep any particular percentage of space free, you should monitor your storage consumption and make sure you're not in immediate danger of using it up. According to Apple documentation, you need at least 9 GB of free space on the startup volume for normal operation.
    If storage space is running low, use a tool such as the free application OmniDiskSweeper to explore your volume and find out what's taking up the most space. Move rarely-used large files to secondary storage.
    6. Relax, don’t do it. Besides the above, no routine maintenance is necessary or beneficial for the vast majority of users; specifically not “cleaning caches,” “zapping the PRAM,” "resetting the SMC," “rebuilding the directory,” "defragmenting the drive," “running periodic scripts,” “dumping logs,” "deleting temp files," “scanning for viruses,” "purging memory," "checking for bad blocks," "testing the hardware," or “repairing permissions.” Such measures are either completely pointless or are useful only for solving problems, not for prevention.
    The very height of futility is running an expensive third-party application called “Disk Warrior” when nothing is wrong, or even when something is wrong and you have backups, which you must have. Disk Warrior is a data-salvage tool, not a maintenance tool, and you will never need it if your backups are adequate. Don’t waste money on it or anything like it.

  • Unerase after using Disk Utility's Erase?

    I'm sure this has been asked before but here goes...
    By accident I just used Disk Utility and chose to "Erase" my external hard drive. Whoops!
    I think I hit "cancel" before it zeroed out the drive but when I mount the drive now I see an empty disk. But the whole operation was so quick - not more than a couple seconds from start to finish - it gives me hope that the data's still there.
    I've disconnected the drive - so I'm sure not to write anything new to it.
    Is there a quick way to recover what was on the drive? I've read about DataRescue, DiskWarrior, and TechTool Pro. Are these the best route? Or is there an easier and cheaper way for me to recover from my embarassing mistake?
    Thanks,
    david
    TI PowerBook Mac OS X (10.4.5)
    TI PowerBook    

    Hi David
    I'm afraid I'm only going to confirm that, yes, your data is probably still there. I think just the links to the directory structure have been zeroed, but all should be able to be recovered. You did right in disconnecting the drive immediately.
    I don't know of any cheap/quick way of sorting this, but hopefully someone else will.
    Commiserations, I've been there too.

  • How do you upload firmware to Airport extreme with the following message: This version of AirPort Utility requires this AirPort Extreme use firmware version 7.3.1 or later. Use AirPort Utility 5.6 to update this base station. I'm using airport utility 6.0

    The airport extreme at my parent's house has not had its firmware update in some time and it keeps dropping the internet connection and needing to be reset.
    I went to update firmware and opened up airport utilities (I'm running airport 6.0 on Mountain Lion, 10.7.4).  Everytime I open the airport utility I get the following message: "
    This version of AirPort Utility requires this AirPort Extreme use firmware version 7.3.1 or later. Use AirPort Utility 5.6 to update this base station. AirPort Utility 5.6 is available at AirPort Service and Support.
    I've followed the link and tried to update firmwares but none are available and the print says that airport utility will look to see if firmware are available and load them as necessary when prompted by user.
    One link said the only way to solve this problem is open up Airport Utility 5.6. I tried to do this, but 5.6 is not supported on Mountain Lion and couldn't be opened up.
    I'm getting the exact same message on my other computer, a Mac Air.
    So basically, can't download new firmware and am stuck with a ****** airport extreme that needs to keep being reset, a factory reset, in order to use the internet, but then continues to give me the same message.
    Thanks!

    See this article for instructions on how to install AirPort Utility 5.6 for Lion on Mountain Lion:
    http://www.macworld.com/article/1167965/mountain_lion_and_the_ancient_airport_ba se_station.html

  • Problem in Creating a jar file using java.util.jar and deploying in jboss 4

    Dear Techies,
    I am facing this peculiar problem. I am creating a jar file programmatically using java.util.jar api. The jar file is created but Jboss AS is unable to deploy this jar file. I have also tested that my created jar file contains the same files. When I create a jar file from the command using jar -cvf command, Jboss is able to deploy. I am sending the code , please review it and let me know the problem. I badly require your help. I am unable to proceeed in this regard. Please help me.
    package com.rrs.corona.solutionsacceleratorstudio.solutionadapter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.jar.JarEntry;
    import java.util.jar.JarOutputStream;
    import java.util.jar.Manifest;
    import com.rrs.corona.solutionsacceleratorstudio.SASConstants;
    * @author Piku Mishra
    public class JarCreation
         * File object
         File file;
         * JarOutputStream object to create a jar file
         JarOutputStream jarOutput ;
         * File of the generated jar file
         String jarFileName = "rrs.jar";
         *To create a Manifest.mf file
         Manifest manifest = null;
         //Attributes atr = null;
         * Default Constructor to specify the path and
         * name of the jar file
         * @param destnPath of type String denoting the path of the generated jar file
         public JarCreation(String destnPath)
         {//This constructor initializes the destination path and file name of the jar file
              try
                   manifest = new Manifest();
                   jarOutput = new JarOutputStream(new FileOutputStream(destnPath+"/"+jarFileName),manifest);
              catch(Exception e)
                   e.printStackTrace();
         public JarCreation()
         * This method is used to obtain the list of files present in a
         * directory
         * @param path of type String specifying the path of directory containing the files
         * @return the list of files from a particular directory
         public File[] getFiles(String path)
         {//This method is used to obtain the list of files in a directory
              try
                   file = new File(path);
              catch(Exception e)
                   e.printStackTrace();
              return file.listFiles();
         * This method is used to create a jar file from a directory
         * @param path of type String specifying the directory to make jar
         public void createJar(String path)
         {//This method is used to create a jar file from
              // a directory. If the directory contains several nested directory
              //it will work.
              try
                   byte[] buff = new byte[2048];
                   File[] fileList = getFiles(path);
                   for(int i=0;i<fileList.length;i++)
                        if(fileList.isDirectory())
                             createJar(fileList[i].getAbsolutePath());//Recusive method to get the files
                        else
                             FileInputStream fin = new FileInputStream(fileList[i]);
                             String temp = fileList[i].getAbsolutePath();
                             String subTemp = temp.substring(temp.indexOf("bin")+4,temp.length());
    //                         System.out.println( subTemp+":"+fin.getChannel().size());
                             jarOutput.putNextEntry(new JarEntry(subTemp));
                             int len ;
                             while((len=fin.read(buff))>0)
                                  jarOutput.write(buff,0,len);
                             fin.close();
              catch( Exception e )
                   e.printStackTrace();
         * Method used to close the object for JarOutputStream
         public void close()
         {//This method is used to close the
              //JarOutputStream
              try
                   jarOutput.flush();
                   jarOutput.close();
              catch(Exception e)
                   e.printStackTrace();
         public static void main( String[] args )
              JarCreation jarCreate = new JarCreation("destnation path where jar file will be created /");
              jarCreate.createJar("put your source directory");
              jarCreate.close();

    Hi,
    I have gone through your code and the problem is that when you create jar it takes a complete path address (which is called using getAbsolutePath ) (when you extract you see the path; C:\..\...\..\ )
    You need to truncate this complete path and take only the path address where your files are stored and the problem must be solved.

  • How do i get data from a structure using join?

    hi,
    what is the actual use of a structure.?
    my problem is :
    KUAGV is an existing STRUCTURE. it has got one fields each which links to MARA, AND VBKD tables. i want to fetch all related information from KUAGV, mara, vbkd . which is the better way : using joins or views or anything else? how do i
    get data from a structure using join?

    structure temporarily holds  any data passed to it dynamically throughout the runtime but doesnot store it permanently. so
    a structure cannot be included in a join.so instead of incuding structure KUAGV's field in a join 
    search the transparent table in which same field are present and  use it in join.
    A structure if created in DDIC(Data Dictionary) is a global DATA STRUCTURE which is used to group related information, for example you would group all the details of your bank account into a structure BANK_ACCOUNT that contains fields like account_Id, account_holder_name etc.
    If you create a structure in your program then it is local to your program. So you use this structure to create data holders of this DATA TYPE to hold data in your program.
    Edited by: suja thomas on Feb 11, 2008 6:24 AM
    Edited by: suja thomas on Feb 11, 2008 6:31 AM

  • Is there any way to be sure about book progression using VoiceOver Utility?

                                                                                   I am able to load and display iBooks products using VoiceOver utility without issues, which I'm very                                              happy about. The main issue seems to be in the way the text is displayed, however. I can never be sure how the text scrolls. I might be able to scroll down several lines of text without incidents, maybe a few paragraphs in a row, but there will come a time when I have to progress to the right. Or maybe go further to the top. It never seems to make a lot of sense, and so I am left with serious difficulties reading books as they were meant to be read. I can use the Speak option from the edit menu, but that doesn't quite help, since the system doesn't save the progress you make using this reading method, meaning there's no way to pause (as far as I'm aware).
    My question, essentially: is there a way for me to know with absolute certainty how to progress through a text from A to Z? Alternatively, is there a way for me to display the text in a more manageable, column-less way so that text scrolls naturally from top to bottom? Thanks!         

    Warehouse that PDF on your own server, then link to it from your book.
    Ken

  • Hi, I have a hard disk failure so to recover my data I am using disk utility to restore the data on an external drive while booting from a second external hard drive. When I perform the operation it gives me an input/output error and stops. Any tips?

    Hi, I have a hard disk failure so to recover my data I am using disk utility to restore the data on an external drive while booting from a second external hard drive. When I perform the operation and after having selected both my destination and source drives, the operation begins but soon fails due to input/output error. If I try to create an image of the drive it gives me the same error message. Any help would be much appreciated.

    Disk Utility only creates a image of the drive, so it's no help getting exactly what you want, which is your files. If the file structure is messed up or the drive is failing then it's no help.
    If you have a external boot drive and you can't access the internal non-booting drive though the typical Finder and windows to transfer your files via drag and drop methods, then you need to install Data Rescue on the external boot drive and it will do as best as it can to recover your files. (works on non-encrypted/non-Filevaulted drives only)
    .Create a data recovery/undelete external boot drive
    Are you sure you have hard drive failure, or that OS X isn't merely not booting?
    Because if the drive is working physically, then there is a host of fixes
    ..Step by Step to fix your Mac
    https://discussions.apple.com/community/notebooks/macbook_pro?view=documents#/

  • Handling Multi hierarchial Structure using  XSLT or Java Mapping in XI

    Hello Experts,
    I have an requirement wherein i have sender as IDOC and File as Receiver.My target File structure is multi hierarchial with parent level and many child sub level node.
    I tried to generate flat structure using graphical mapping by creating an intermediate structure and then mapping it to flat structure but that seems to be very complex for my scenario as there are many sub level at target structure..
    Is there any simple way of handlng these????
    Thanks

    Hi ,
    I tried to implement your solution ..I am able to convert my idoc to XMLusing XLST but i have a question that how to convert that XMP to flat file as XI Receiver File adapter understand only 1st level of hierarchy..It doesnt understand nested level of hierarchy which is in my case...
    Below is the xslt code which i have written:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
         <xsl:template match="/">
              <MT_SALES_PO_DATA_INBOUND>
                   <xsl:value-of select="WPUBON01/IDOC"/>
                   <xsl:for-each select="WPUBON01/IDOC/E1WPB01">
                        <E1WBBB01>
                             <Store_ID>A001</Store_ID>
                             <SYS_INVOICE_NO>
                                  <xsl:value-of select="substring(BONNUMMER,'3','15')"/>
                             </SYS_INVOICE_NO>
                             <Cashier_ID>
                                  <xsl:value-of select="KASSID"/>
                             </Cashier_ID>
                        </E1WBBB01>
                   </xsl:for-each>
                   <xsl:for-each select="WPUBON01/IDOC/E1WPB01/E1WPB02">
                        <E1WBB02>
                             <Transaction_Type>
                                  <xsl:value-of select="VORGANGART"/>
                             </Transaction_Type>
                             <Article_Description>
                                  <xsl:value-of select="QUALARTNR"/>
                             </Article_Description>
                             <ITEM_CODE>
                                  <xsl:value-of select="ARTNR"/>
                             </ITEM_CODE>
                             <xsl:for-each select="WPUBON01/IDOC/E1WPB01/E1WPB02/E1WBB03">
                                  <E1WBB03>
                                       <Condition_Type>
                                            <xsl:value-of select="KONDITION"/>
                                       </Condition_Type>
                                       <xsl:for-each select="">
                                            <E1WBB04>
                                                 <TAX_Code>
                                                      <xsl:value-of select="MWSKZ"/>
                                                 </TAX_Code>
                                                 <TAX_Amount>
                                                      <xsl:value-of select="MWSBT"/>
                                                 </TAX_Amount>
                                            </E1WBB04>
                                       </xsl:for-each>
                                  </E1WBB03>
                             </xsl:for-each>
                        </E1WBB02>
                   </xsl:for-each>
              </MT_SALES_PO_DATA_INBOUND>
         </xsl:template>
    </xsl:stylesheet>
    Any idea how do i convert these XML to falt file USing XSLT or File Receiver adapter in XI???
    Thanks

  • How to read a file with data in Hierarchical Structure using XSD Schema

    Hi
    We have requirement in which we have to read a FIXED LENGTH file with FILE ADAPTER. File contains the data in hierarchical structure. Hierarchy in the file is identified by the first 3 characters of every line which could be any of these : 000,001,002,003 and 004. Rest files are followed after these. So structure is like:
    000 -- Header of File. Will come only once in file. Length of this line is 43 characters
    -- 001 -- Sub Header. Child for 000. Can repeat in file. Length of this line is 51 characters
    --- 002 -- Detail record. Child for 001. Can repeat multiple times in given 001. Length of this line is 43 characters 1353
    -- 003 -- Sub Footer record at same level of 001. Will always come once with 001 record. Child for 000. Length of this line is 48 characters
    004 -- Footer of file.At same level of 000. Will come only once in file. Length of this line is 48 characters
    Requirement is to create an XSD which should validate this Hierarchical Structure also i.e data should come in this hierarchy only else raise an error while parsing the file.
    Now while configuring the FILE ADAPTER to read this file we are using Native Schema UI to create the XSD to parse this structure using an example data file. But we are not able to create a valid XSD for this file which should validate the Hierarchy also on the file.
    Pls provide any pointers or solution for this.
    Link to download the file, file structure details and XSD that we have created:
    https://docs.google.com/file/d/0B9mCtbxc3m-oUmZuSWRlUTBIcUE/edit?usp=sharing
    Thanks
    Amit Rattan
    Edited by: user11207269 on May 28, 2013 10:16 PM
    Edited by: user11207269 on May 28, 2013 10:31 PM
    Edited by: user11207269 on May 28, 2013 10:33 PM

    Heloo.. Can anyone help me on this. I need to do Hierarchial read / validation while reading the file using File Adapter using Native XSD schema.

  • How to apply XSLT to XML file while importing XML data using XSU plsql API

    I need to load XML file with nested repeating elements into Oracle tables and I am using XSU PLSQL API utility package dbms_xmlSave.insertXML. Can use XMLGen package also!!
    I found out through documentation that I need to have XML file with ROWSET/ROW tags around the elements. As I have no control of XML file coming from external source, so I wish to apply XSLT to XML. I found setXSLT/setStylesheet procedures but it's not working as expected.
    Can you help me with some sample code for the purpose.
    Thanks

    I'm new at XML and XSL as well, but maybe the following code I built can help:
    CREATE OR REPLACE PACKAGE Xml_Pkg AS
    /* this record and table type are used for the transformTags procedure */
    TYPE TagTransform_t IS RECORD (
    old_tag VARCHAR2(255),
    new_tag VARCHAR2(255) );
    TYPE TagTransformList_t IS TABLE OF TagTransform_t INDEX BY BINARY_INTEGER;
    /* use DBMS_OUTPUT to print out a CLOB */
    PROCEDURE printClobOut(p_clob IN OUT NOCOPY CLOB);
    /* using a list of old/new tags, transform all old into new in XML2 */
    PROCEDURE transformTags(
    p_List TagTransformList_t,
    p_XML1 IN OUT NOCOPY CLOB,
    p_XML2 IN OUT NOCOPY CLOB);
    END Xml_Pkg;
    CREATE OR REPLACE PACKAGE BODY Xml_Pkg AS
    /* print a CLOB using newlines */
    PROCEDURE printClobOut(p_clob IN OUT NOCOPY CLOB) IS
    buffer_overflow EXCEPTION;
    PRAGMA EXCEPTION_INIT(buffer_overflow,-20000);
    l_offset NUMBER;
    l_len NUMBER;
    l_o_buf VARCHAR2(255);
    l_amount NUMBER; --}
    l_f_amt NUMBER := 0; --}To hold the amount of data
    l_f_amt2 NUMBER; --}to be read or that has been
    l_amt2 NUMBER := -1; --}read
    l_offset2 NUMBER;
    l_amt3 NUMBER;
    l_chk NUMBER := 255;
    BEGIN
    l_len := DBMS_LOB.GETLENGTH(p_clob);
    l_offset := 1;
    WHILE l_len > 0 LOOP
    l_amount := DBMS_LOB.INSTR(p_clob,CHR(10),l_offset,1);
    --Amount returned is the count from the start of the file,
    --not from the offset.
    IF l_amount = 0 THEN
    --No more linefeeds so need to read remaining data.
    l_amount := l_len;
    l_amt2 := l_amount;
    ELSE
    l_f_amt2 := l_amount; --Store position of next LF
    l_amount := l_amount - l_f_amt; --Calc position from last LF
    l_f_amt := l_f_amt2; --Store position for next time
    l_amt2 := l_amount - 1; --Read up to but not the LF
    END IF;
    /* divide the read into 255 character chunks for dbms_output */
    IF l_amt2 != 0 THEN
    l_amt3 := l_amt2;
    l_offset2 := l_offset;
    WHILE l_amt3 > l_chk LOOP
    DBMS_LOB.READ(p_clob,l_chk,l_offset2,l_o_buf);
    DBMS_OUTPUT.PUT_LINE(l_o_buf);
    l_amt3 := l_amt3 - l_chk;
    l_offset2 := l_offset2 + l_chk;
    END LOOP;
    IF l_amt3 != 0 THEN
    DBMS_LOB.READ(p_clob,l_amt3,l_offset2,l_o_buf);
    DBMS_OUTPUT.PUT_LINE(l_o_buf);
    END IF;
    END IF;
    l_len := l_len - l_amount;
    l_offset := l_offset+l_amount;
    END LOOP;
    EXCEPTION
    WHEN buffer_overflow THEN
    RETURN;
    END printClobOut;
    /* shortcut "writeline" procedure for CLOB buffer writes */
    PROCEDURE wr(p_clob IN OUT NOCOPY CLOB, s VARCHAR2) IS
    BEGIN
    DBMS_LOB.WRITEAPPEND(p_clob,LENGTH(s)+1,s||CHR(10));
    END;
    /* the standard XSLT should include the identity template or the output XML will be malformed */
    PROCEDURE newXsltHeader(p_xsl IN OUT NOCOPY CLOB, p_identity_template BOOLEAN DEFAULT TRUE) IS
    BEGIN
    DBMS_LOB.TRIM(p_xsl,0);
    /* standard XSL header */
    wr(p_xsl,'<?xml version="1.0"?>');
    /* note that the namespace for the xsl is restricted to the w3 1999/XSL */
    wr(p_xsl,'<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">');
    IF p_identity_template THEN
    /* create identity template (transfers all "other" nodes) */
    wr(p_xsl,' <xsl:template match="node()">');
    wr(p_xsl,' <xsl:copy>');
    wr(p_xsl,' <xsl:apply-templates/>');
    wr(p_xsl,' </xsl:copy>');
    wr(p_xsl,' </xsl:template>');
    END IF;
    END newXsltHeader;
    PROCEDURE newXsltFooter(p_xsl IN OUT NOCOPY CLOB) IS
    BEGIN
    /* standard xsl footer */
    wr(p_xsl,'</xsl:stylesheet>');
    END newXsltFooter;
    /* using the stylesheet in p_xsl, transform p_XML1 into p_XML2 */
    PROCEDURE transformXML(p_xsl IN OUT NOCOPY CLOB, p_XML1 IN OUT NOCOPY CLOB, p_XML2 IN OUT NOCOPY CLOB) IS
    l_parser XMLPARSER.Parser;
    l_doc XMLDOM.DOMDocument;
    l_xsl_proc XSLPROCESSOR.Processor;
    l_xsl_ss XSLPROCESSOR.Stylesheet;
    BEGIN
    /* parse XSL CLOB */
    l_parser := XMLPARSER.newParser;
    BEGIN
    XMLPARSER.showWarnings(l_parser,TRUE);
    XMLPARSER.parseClob(l_parser,p_xsl);
    l_doc := XMLPARSER.getDocument(l_parser);
    XMLPARSER.freeParser(l_parser);
    EXCEPTION
    WHEN OTHERS THEN
    XMLPARSER.freeParser(l_parser);
    RAISE;
    END;
    /* get Stylesheet from DOMDOC */
    l_xsl_ss := XSLPROCESSOR.newStylesheet(l_doc,NULL);
    BEGIN
    /* parse XML1 CLOB */
    l_parser := XMLPARSER.newParser;
    BEGIN
    XMLPARSER.showWarnings(l_parser,TRUE);
    XMLPARSER.parseClob(l_parser,p_xml1);
    l_doc := XMLPARSER.getDocument(l_parser);
    XMLPARSER.freeParser(l_parser);
    EXCEPTION
    WHEN OTHERS THEN
    XMLPARSER.freeParser(l_parser);
    RAISE;
    END;
    /* process doc to XML2 */
    l_xsl_proc := XSLPROCESSOR.newProcessor;
    BEGIN
    XSLPROCESSOR.processXSL(l_xsl_proc, l_xsl_ss, l_doc, p_xml2);
    XSLPROCESSOR.freeProcessor(l_xsl_proc);
    EXCEPTION
    WHEN OTHERS THEN
    XSLPROCESSOR.freeProcessor(l_xsl_proc);
    RAISE;
    END;
    XSLPROCESSOR.freeStylesheet(l_xsl_ss);
    EXCEPTION
    WHEN OTHERS THEN
    XSLPROCESSOR.freeStylesheet(l_xsl_ss);
    RAISE;
    END;
    END transformXML;
    /* transform XML1 into XML2 using list p_List of old/new tags */
    PROCEDURE transformTags(p_List TagTransformList_t, p_XML1 IN OUT NOCOPY CLOB, p_XML2 IN OUT NOCOPY CLOB) IS
    l_xsl CLOB;
    BEGIN
    /* create XSL CLOB */
    DBMS_LOB.CREATETEMPORARY(l_xsl,TRUE);
    /* create standard header with identity template */
    newXsltHeader(l_xsl,TRUE);
    /* create one template for each node translation */
    FOR i IN 1..p_List.COUNT LOOP
    wr(l_xsl,' <xsl:template match="'||p_List(i).old_tag||'">');
    wr(l_xsl,' <'||p_List(i).new_tag||'><xsl:apply-templates/></'||p_List(i).new_tag||'>');
    wr(l_xsl,' </xsl:template>');
    END LOOP;
    /* create standard footer */
    newXsltFooter(l_xsl);
    -- dbms_output.put_line('l_xsl:');
    -- dbms_output.put_line('--------------------');
    -- printClobOut(l_xsl);
    -- dbms_output.put_line('--------------------');
    transformXML(l_xsl, p_XML1, p_XML2);
    DBMS_LOB.FREETEMPORARY(l_xsl);
    /* -- unit testing
    set serveroutput on size 100000
    Declare
    queryContext DBMS_XMLQUERY.ctxType;
    xList XML_PKG.TagTransformList_t;
    xmlCLOB CLOB;
    xmlCLOB2 CLOB;
    Begin
    DBMS_LOB.CREATETEMPORARY(xmlCLOB,true);
    DBMS_LOB.CREATETEMPORARY(xmlCLOB2,true);
    xList(1).old_tag := 'A';
    xList(1).new_tag := 'MyTag1';
    xList(2).old_tag := 'B';
    xList(2).new_tag := 'MyTag2';
    queryContext := DBMS_XMLQUERY.newContext('Select * from t');
    xmlCLOB := DBMS_XMLQUERY.getXML(queryContext);
    DBMS_XMLQuery.closeContext(queryContext);
    dbms_output.put_line('xmlCLOB:');
    dbms_output.put_line('--------------------');
    XML_PKG.printClobOut(xmlCLOB);
    dbms_output.put_line('--------------------');
    xml_pkg.transformTags(xList,xmlCLOB,xmlCLOB2);
    dbms_output.put_line('xml2CLOB:');
    dbms_output.put_line('--------------------');
    XML_PKG.printClobOut(xmlCLOB2);
    dbms_output.put_line('--------------------');
    DBMS_LOB.FREETEMPORARY(xmlCLOB);
    DBMS_LOB.FREETEMPORARY(xmlCLOB2);
    End;
    END transformTags;
    END Xml_Pkg;

  • How to create a Deep Links Structure?

    Hi,
    What would be a good concept in order to arrange a strong nested files-navigation-structure? …when it has to englobe up to 6 or 7 sub-directories.
    In other words, what would be a suitable construction inside a mega-menu in order to arrange space most efficiently / which modules would you suggest to use in order to achieve this kind of really deep link structure? :
    Level_1
         > Level_1.1
              > Level_1.1.1
                   > Level_1.1.1.1
                        > Level_1.1.1.1.1
                             > Level_1.1.1.1.1.1
                                  > Level_1.1.1.1.1.1.1
    x 10 different topics (e. g. up to Level_9.9.9.9.9.9.9 or 10.10.10.10.10.10.10)
    Any hints would be much appreciated.
    G

    Hi Gaurav,
    Thank you for your feedback!
    In fact, I’m looking for a solution for the navigation, how I could nest as many links as possible, for them to consume as less space as possible, on screen. That probably means hidding and revealing parts of the navigation at a certain time. Unfortunately, nesting accordeons doesn’t really work without a few bugs. So I’m looking for an alternative – more in terms of Frontend-Design or at least Frontend-Arrangement of space for the navigation, assuming lots of links have to be inserted into a pretty deep hierarchy in the user interface.
    The threads seem more to discuss how to arrange the file-hierarchy on the server, as far as I understood.

Maybe you are looking for

  • Help needed in the output file

    Hi Here is my query, DECLARE vProduct VARCHAR2(100) := 'Prints'; vProduct1 VARCHAR2(100) := 'Pk'; vName     VARCHAR2(100) := 'Photos'; vName1     VARCHAR2(100) := 'B'; BEGIN DBMS_OUTPUT.PUT_LINE('Product '||' '||'Name'); DBMS_OUTPUT.PUT_LINE('-------

  • Time for Clean Install?

    Or is it time to go back to Tiger? I have tried three separate times to install Leopard, and after each restart now, I cannot see my hard drive or the disk image on the desktop. I can see everything else, the dock, menu bar, airport, time, etc. Is it

  • Old macbook seems dead....bought new one...transfer my apps?

    OK so my 2008 has these exact symptoms and no fix worked. "So far I have tried removing the battery and AC, resetting the PRAM and the SMC per Apple's instructions here: http://support.apple.com/kb/ts1365 No change to this behavior: 1) When I open th

  • DvD Menu Templates

    Hi. Just wondering why Premiere Elements 11.0 did not include DvD Menu Templates. Instead, after you choose one, they ask you to download it from the web. Does anyone have a link for these menus? All my work computers are not on line for internet con

  • Pro*c selecting XMLElement strangeness

    I've had a pro*c problem that I can't figure out. Hopefully, one of you might be able to do so. I am trying to create a XML output from a select statement. I having several problems, but the first one is that I can't get a simple XMLElement to work.