Help in XML encoders

Here is the complete code of my problem.I�ve CADEntityImpl.java extending AtreeObject.java .CadPointImpl.java extending CADEntityImpl.java.CADPointImpl.java uses few constants of IEntitiesConstants.java and Main Program is ServerPartImpl.java. Here is the complete code.
//////////////////////////////////////////////////////////////////////////////////CADEntity.java
// Importing standard java packages/classes
import java.awt.*;
import java.rmi.*;
import java.util.Vector;
import javax.vecmath.AxisAngle4d;
import java.rmi.server.*;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;
import java.util.StringTokenizer;
// Importing standard xml packages/classes
import org.xml.sax.SAXException;
import org.xml.sax.*;
import org.xml.sax.helpers.AttributesImpl;
* Top level abstract Entity Class
abstract public class CADEntityImpl extends ATreeObject implements java.io.Serializable,Entity{   
//abstract public class CADEntityImpl extends ATreeObject implements java.io.Serializable{   
/////////////////////////////////////////////////////////////////////// //INSTANCE VARIABLES
private static final int currentVersion = 1;
private int objectVersion = 1;
/** Entity's base type (Eg: POINT, CURVE, SURFACE, SOLID etc..) */
private int baseType;
/** Entity's type (Eg: POINT, LINE, ARC, SOLID_BOX, B_SPLINE_SURFACE) */
private int type;
private int form = 0;
private Color color = Color.magenta;
private int style = 0;
private String name = null;
private int thickness = 1;
private boolean visible = true;
protected transient long casObj = 0;
private long id = 0;
// CONSTRUCTOR(S)
public CADEntityImpl() throws RemoteException {
public CADEntityImpl(int i) throws RemoteException{
super(i);
/** Get The entity id */
public long getId() {
return id;
/** Get the entity name */
public String getName() {
return name;
/** Get the entity form */
public int getForm() {
return form;
/** Get the entity color */
public Color getColor() {
return color;
/** Get the entity style */
public int getStyle() {
return style;
/** Get the entity thickness */
public int getThickness() {
return thickness;
/** Get the entity visibility */
public boolean isVisible() {
return visible;
/** Get Cascade Obj ref */
public long getCasObj() {
return casObj;
public int getObjectVersion()
return objectVersion;
public int getBaseType()
return baseType;
public int getType()
return type;
public void setBaseType(int m)
this.baseType = m;
public void setType(int m)
this.type = m;
// setter METHODS
/** Set The entity id */
public void setId(long id) {
this.id = id;
if (getName() == null) // If no name is assigned, give default name
setName(IEntitiesConstants.EntityName[getType()] + id);
/** Set the entity form */
public void setForm(int form) {
this.form = form;
/** Set the entity name */
public void setName(String name) {
this.name = name;
System.out.println("We have entered in name");
System.out.println("Name : " + getName());
/** Set the entity color */
public void setColor(Color color) {
this.color = color;
System.out.println("We have entered in colour");
System.out.println("color: " + getColor());
/** Set the entity style */
public void setStyle(int style) {
this.style= style;
/** Set the entity thickness */
public void setThickness(int thickness) {
this.thickness = thickness;
/** Set the entity visibility */
public void setVisible(boolean visible) {
this.visible = visible;
System.out.println("came in visible");
public void setCasObj(long casPtr) {
casObj = casPtr;
public void setObjectVersion(int objectVersion) {
this.objectVersion = objectVersion;
// CLASS : ATreeObject - Associative Entity
// Importing standard java packages/classes
import java.rmi.*;
import java.rmi.server.*;
import java.util.Vector;
import org.xml.sax.SAXException;
import org.xml.sax.*;
import org.xml.sax.helpers.AttributesImpl;
* Top level abstract Entity Class
abstract public class ATreeObject implements java.io.Serializable{
// INSTANCE VARIABLES
private int objectVersion = 1;
private long id = 0;
// CONSTRUCTOR(S)
public ATreeObject() {
public ATreeObject(int i) {
// setter METHODS
public void setObjectVersion(int ov)
this.objectVersion = ov;
// getter METHODS
public int getObjectVersion()
return objectVersion;
// CLASS : CADPointImpl
// Importing standard java packages/classes
import javax.vecmath.*;
import java.awt.*;
import java.rmi.*;
import java.util.Vector;
import org.xml.sax.SAXException;
import org.xml.sax.*;
import org.xml.sax.helpers.AttributesImpl;
* Create an CADPoint
public class CADPointImpl extends CADEntityImpl implements Point
//public class CADPointImpl extends CADEntityImpl
private double x, y, z;
private int pointSize=-1;
private int objectVersion = 3;
public CADPointImpl ()
throws java.rmi.RemoteException {
//setType(IEntitiesConstants.POINT);
// setBaseType(IEntitiesConstants.POINT);
public CADPointImpl(double xp, double yp, double zp)
throws java.rmi.RemoteException {
setType(IEntitiesConstants.POINT);
setBaseType(IEntitiesConstants.POINT);
setColor(new Color(1.00f, 1.00f, 0.00f));
setObjectVersion(1);
x = xp;
y = yp;
z = zp;
// get and set methods for x,y and z
public int getObjectVersion()
return objectVersion;
public void setObjectVersion(int ver)
objectVersion = ver;
public String toString(){
return this.x+" "+this.y+" "+this.z;
// CLASS : IEntitiesConstants
// Importing standard java packages/classes
public interface IEntitiesConstants
public static final int POINT = 1;
// Base Type of each of the Entities defined above. (Fill in
// the base type in this array while new entities are added)
public static final int BaseType[] = {DELETED,        //   0
                                          POINT,          //   1
public static final String EntityName[] ={
" ", // 0
"pnt", // 1
ServerPartImpl.java
Main program where writeObject is being called
// Importing standard java packages/classes
import java.lang.*;
import java.beans.*;
import java.io.*;
import java.sql.*;
import javax.vecmath.*;
import java.util.*;
import java.util.Vector;
import javax.media.j3d.*;
import java.rmi.*;
import java.awt.*;
import java.lang.Boolean;
import java.lang.Integer;
import java.rmi.server.*;
import javax.swing.*;
import java.util.Date;
import java.text.SimpleDateFormat;
// Importing standard xml packages/classes
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
// Importing incad java packages/classes
* Top level abstract Header Class
public class ServerPartImpl implements java.io.Serializable {
// INSTANCE VARIABLES
public static int ec = 0;
// ENTITY GENERATOR METHODS
public static void main(String args[])
try {
CADPointImpl newPoint = new CADPointImpl(20,60,34);
addEntity(newPoint);
try{
XMLEncoder elc = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("do.xml")));
elc.writeObject(newPoint);
elc.close();
}catch(FileNotFoundException fn)
} catch ( RemoteException re ) {
// METHODS
public static void addEntity(CADEntityImpl ent) {
if(ec == 0)
ec = 1;
else
ec++;
ent.setId(ec);
ent.setVisible(true);
This is my complete code.Now,problem is that when I�m writing the CADPointImpl object only x,y,z,id and at times color is saved.Basetype,Type,visible,name,objectversion properties are not saved.Help me out����..please�.I�ve even tried to write the setfunction codes codes of basetype and type in CADPointImpl.java itself�..and from there calling super�..but even it didn�t helped out.

Well Mr. Dheeraj - nice to know that you are still endevoring to gather knowledge. I guess that is required, especially as you come from a Computer Mechnaic background.
Well then, allow me to give a few bits of wisdom (don't worry they are free). It would rather be greatly appreciated if you could stop embarrasing yourself in public by trying to catch my attention.
If you require my assistance (which I am sure you would be), just write to me :> (I am sure that by now you must have got my mail address by heart). I must assure you that I never turn down pleas for help from commoners like yourself.
However, I can sympathise with you on the count of the pang that you must be feeling while trying to graduate from a mechanic to a Master (which I am sure your limited capability is not permitting you).
However, as is my duty, I always help commoners like you when I so deine to :>
Your Lord
Ironluca

Similar Messages

  • Help in XML Report output

    Hi Experts,
    I have created the XML report which will generate the output in EXCEL format. I have used the template(rtf) to generate the output. I am facing the critical issue the output file (excel) is giving output with headings( ex: empno,ename,job..)even if there is no record count in the query.
    But some times it gives the empty file(excel) without the heading information if the record count is zero.
    Could anyone suggest me to solve this error.
    Any solution or link will be great help for me. Waiting for your valueable reply
    Thanks in Advance,
    Ravi.

    Hi,
    Please see if this thread helps.
    XML publisher output report in excel format
    Re: XML publisher output report in excel format
    Regards,
    Hussein

  • Need help with xml video gallery

    Hello everyone
    I recently bought a xml video gallery. I'm loading the movie externally into another movie. When the xml gallery loads, it cancels all sounds.
    I need to figure out where in the actionscription can i reverse the cancellation of sounds. Can anyone help? if possible, I can email, whomever is willing to help, the xml gallery to see if theres another reason the sound is being canceled.
    Also, the sound of the gallery doesn't work til you click the volume scroller.
    Here are two parts of actionscript included in the gallery:
    part one:
    // Import filter classes
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    // Set flash variables
    var xmlFileUrl:String = "playlist.xml";
    var auto_play:String = "true";
    // Set xml file URL
    if (_root.xmlfile) {
        xmlFileUrl = _root.xmlfile;
    var V_SRC;
    var thuArray:Array = new Array();
    var currentVideo:Number = 0;
    var totalItems;
    var numOfItems:Number;
    var itemDistance:Number = 120+5;
    var itemHeight:Number = 80+2;
    var Value:Number = 1;
    var boundry:Number = 1;
    var ratio:Number = 1;
    var diff:Number = 1;
    var collectionWidth:Number = 1;
    var buffer:Number = 135*2;
    this.createEmptyMovieClip("video_txt",this.getNextHighestDepth());
    video_txt.createTextField("theText",video_txt.getNextHighestDepth(),0,0,584,36);
    video_txt.theText.selectable = false;
    video_txt.theText.autoSize = "left";
    //The Format
    myFormat = new TextFormat();
    myFormat.font = _root.font_format;
    myFormat.size = _root.font_size;
    myFormat.color = _root.font_color;
    myFormat.align = "center";
    video_txt.theText.setNewTextFormat(myFormat);
    // Create a new movieclip to load the thumbs
    var thumbLoader:MovieClipLoader = new MovieClipLoader();
    var thumbListener:Object = new Object();
    thumbLoader.addListener(thumbListener);
    thumbListener.onLoadInit = function(target_mc:MovieClip, httpStatus:Number)
        new Tween(target_mc, "_alpha", Regular.easeOut, 0, 100, 1, true);
        target_mc._parent.preloader_mc._alpha = 0;
    var xml:XML = new XML();
    xml.ignoreWhite = true;
    xml.onLoad = xmlLoaded;
    xml.load(xmlFileUrl);
    // Load the xml file into the player
    function xmlLoaded(b:Boolean) {
        if (b) {
            auto_play = this.firstChild.firstChild.attributes.auto_play;
            scrollSpeed = parseInt(this.firstChild.firstChild.attributes.scrollSpeed);
            totalItems = this.firstChild.firstChild.childNodes;
            numOfItems = totalItems.length;
            for (j=0; j<numOfItems; j++) {
                var i = player_mc.main_mc.collection_mc.attachMovie("mc_Thumb", "thumb_"+j, j);
                i._x = itemDistance*j;
                thumbLoader.loadClip(totalItems[j].attributes.thumb,i.loader_mc);
                i.id = j;
                i.videoTitle = totalItems[j].attributes.title;
                i.videoUrl = totalItems[j].attributes.src;
                // Create an event for thumb rollover
                i.onRollOver = iRoll;
                i.onRollOut = i.onReleaseOutside=iOut;
                i.onRelease = iRelease;
                thuArray[j] = i;
            // default first video
            collectionWidth = player_mc.main_mc.collection_mc._width;
            currentVideo = 0;
            V_SRC = thuArray[0].videoUrl;
            changeVideo();
            //scope._alpha = 100;
            new Tween(scope, "_alpha", Regular.easeOut, 0, 100, 0.5, true);
        else
            trace("Error! xml file not loaded");
    // onRollOver Events
    function iRoll() {
        player_mc.mc_title.title_txt.htmlText = totalItems[this.id].attributes.title;
        this.light_mc.play();
    function iRelease() {
        currentVideo = this.id;
        changeVideo();
    function changeVideo() {
        V_SRC = thuArray[currentVideo].videoUrl;
        player_mc.loadVideo();
        currentThumb();
        player_mc.mc_title.title_txt.htmlText = thuArray[currentVideo].videoTitle;
        video_txt.theText.text = totalItems[currentVideo].attributes.title;
        player_mc.so.getVolume();
        player_mc.playStatus = 1;
        player_mc.checkStatus();
    function nextVideo() {
        if (currentVideo<(numOfItems-1)) {
            currentVideo++;
        } else {
            currentVideo = 0;
        changeVideo();
    function currentThumb() {
        for (i=0; i<thuArray.length; i++) {
            if (i == currentVideo) {
                thuArray[i].enabled = true;
    // Mouse movement on rollover
    this.onMouseMove = function() {
        collectionWidth = player_mc.main_mc.collection_mc._width;
        boundry = player_mc.main_mc.area_mc._width;
        if ((player_mc.main_mc._ymouse>0) && (player_mc.main_mc._ymouse<itemHeight)) {
            if ((player_mc.main_mc._xmouse>0) && (player_mc.main_mc._xmouse<boundry)) {
                ratio = player_mc.main_mc._xmouse/boundry;
                diff = (collectionWidth-boundry)+buffer;
                Value = Math.floor((-ratio)*diff)+(buffer/2);
        updateAfterEvent();
    this.onEnterFrame = function() {
        // Define movement area and speed
        if (player_mc.main_mc.collection_mc._width>player_mc.main_mc.area_mc._width) {
            player_mc.main_mc.collection_mc._x = Math.round((player_mc.main_mc.collection_mc._x)+((Value-player_mc.main_mc.collection_mc._ x)/scrollSpeed));
            if (player_mc.main_mc.collection_mc._x>0) {
                player_mc.main_mc.collection_mc._x = 0;
            } else if (player_mc.main_mc.collection_mc._x<(player_mc.main_mc.area_mc._width-(player_mc.main_mc. collection_mc._width))) {
                player_mc.main_mc.collection_mc._x = Math.round(player_mc.main_mc.area_mc._width-(player_mc.main_mc.collection_mc._width));
        } else {
            player_mc.main_mc.collection_mc._x = 0;
        updateAfterEvent();
    part two:
    // Define flash variables
    var video_url:String = "";
    var tempx:Number = this._parent._x;
    var tempy:Number = this._parent._y;
    var timeCounter:Number = 0;
    var timeInSeconds:Number = _root.time_counter;
    // Object to listen to onStage Event
    videoObj = vid.videoObj;
    // Setting up the connection
    var nc:NetConnection = new NetConnection();
    nc.connect(null);
    var ns:NetStream = new NetStream(nc);
    // Buffer time
    ns.setBufferTime (10);
    videoObj.attachVideo (ns);
    function loadVideo () {
        video_url = _parent.V_SRC;
        trace(video_url);
        ns.play (video_url);
    function checkStatus()
        if (playStatus == 1)
            controls_mc.playPause.gotoAndStop("pause");
            mc_playAgain._visible = false;
            thumbs_out = false;
            title_out = false;
        else
            controls_mc.playPause.gotoAndStop("play");
            mc_playAgain._visible = true;
        } // end else if
        if (so.getVolume() == 0)
            controls_mc.mute_mc.gotoAndStop("mute");
        else
            controls_mc.mute_mc.gotoAndStop("on");
    }; // End of the function
    mc_playAgain._visible = false;
    // Check Status of video
    ns.onStatus = function (info)
        if (info.code == "NetStream.Buffer.Empty")
            mc_buffer._visible = true;
        else if (info.code == "NetStream.Buffer.Full")
            mc_buffer._visible = false;
        else if (info.code == "NetStream.Play.Stop")
            ns.seek(0);
            if (playStatus == 1)
                ns.pause();
                playStatus = 0;
            else
                trace;
            } // end else if
            mc_playAgain._visible = true;
            mc_buffer._visible = false;
            thumbs_out = true;
            title_out = true;
            checkStatus();
        } // end else if
    // Get info about video
    ns.onMetaData = function(infoObject:Object)
        FLVduration = infoObject["duration"];
        relationshipW = infoObject.height / infoObject.width;
        relationshipH = infoObject.width / infoObject.height;
        if (Stage["displayState"] == "fullScreen")
            largeSize ();
        else
            regularSize ();
        if (_parent.auto_play == "false")
            ns.seek(0);
            if (playStatus == 1)
                ns.pause();
                playStatus = 0;
            mc_buffer._visible = false;
            controls_mc.playPause.gotoAndStop("play");
            mc_playAgain._visible = true;
            thumbs_out = true;
            title_out = true;
            _parent.auto_play = "true";
        }// end else if
    var videoInterval = setInterval(videoStatus, 100);
    var amountLoaded;
    var duration;
    // videoStatus on load Event
    function videoStatus()
        amountLoaded = ns.bytesLoaded / ns.bytesTotal;
        controls_mc.mc_progress.mc_buff._width = amountLoaded * 250;
        controls_mc.mc_progress.mc_played._x = ns.time / duration * 250;
        controls_mc.mc_progress.mc_played._xscale = Math.round(ns.time*100/FLVduration);
    }; // End of the function
    function scrubIt()
        ns.seek(Math.floor(controls_mc.mc_progress.mc_played._x / 250 * duration));
    }; // End of the function
    // video time
    var time_interval:Number = setInterval(checkTime, 500, ns);
    function checkTime(ns:NetStream) {
        //current time
        var ns_seconds:Number = ns.time;
        var minutes:Number = Math.floor(ns_seconds/60);
        var seconds = Math.floor(ns_seconds%60);
        sec = seconds;
        min = minutes;
        if (sec<10) {
            sec = "0"+sec;
        if (min<10) {
            min = "0"+min;
        controls_mc.time_txt.time_1.text = min+":"+sec;
        //total time
        var minutes2:Number = Math.floor(FLVduration/60);
        var seconds2 = Math.floor(FLVduration%60);
        sec2 = seconds2;
        min2 = minutes2;
        if (sec2<10) {
            sec2 = "0"+sec2;
        if (min2<10) {
            min2 = "0"+min2;
        controls_mc.time_txt.time_2.text = min2+":"+sec2;
        if (controls_mc.time_txt.time_2.text == "NaN:NaN") {
            controls_mc.time_txt.time_2.text = "00:00";
    setStage ();
    // Object to listen onStage Event
    var stageL:Object = new Object ();
    // function respnsible for content alignment
    function setStage ()
        if (Stage["displayState"] == "fullScreen") {
            tempx = this._parent._x;
            tempy = this._parent._y;
            this._parent._x = 0;
            this._parent._y = 0;
            vidBg_mc._x = 0;
            vidBg_mc._y = 0;
            mc_title._x = 0;
            mc_title._y = -30;
            slide_me._x = 0;
            slide_me._y = 0;
            vidBg_mc._width = Stage.width;
            vidBg_mc._height = Stage.height;
            mc_title._width = Stage.width;
            mc_title._height = Stage.height / 20;
            slide_me._width = Stage.width;
            slide_me._height = Stage.height / 20;
            vid._x = vid._y = 0;
            largeSize ();
            controls_mc._x = Math.round ((Stage.width / 2) - (controls_mc._width / 2));
            controls_mc._y = Math.round (Stage.height - 36);
            mc_playAgain._x = Math.round ((Stage.width / 2) - (mc_playAgain._width / 2));
            mc_playAgain._y = Math.round (Stage.height - 572);
            thumbs_mc._x = Math.round ((Stage.width / 2) - (thumbs_mc._width / 2));
            thumbs_mc._y = Math.round (Stage.height - 115);
            main_mc._x = Math.round ((Stage.width / 2) - (controls_mc._width / 2));;
            hide_mc.onEnterFrame = function () {
                timeCounter = timeCounter + 1;
                if (timeCounter >= timeInSeconds * 30) {
                    timeCounter = 0;
                    controls_mc._alpha = 0;
            this.onMouseMove = function () {
                timeCounter = 0;
                controls_mc._alpha = 100;
        else
            delete hide_mc.onEnterFrame;
            delete this.onMouseMove;
            controls_mc._alpha = 100;
            this._parent._x = tempx;
            this._parent._y = tempy;
            vidBg_mc._width = 600;
            vidBg_mc._height = 360;
            mc_title._width = 600;
            mc_title._height = 30;
            slide_me._width = 600;
            slide_me._height = 30;
            vidBg_mc._x = vid._x = 0;
            vidBg_mc._y = vid._y = 35;
            mc_title._x = vid._x = 0;
            mc_title._y = vid._x = -30;
            slide_me._x = vid._x = 0;
            slide_me._y = vid._y = 35;
            regularSize ();
            controls_mc._x = 0;
            controls_mc._y = 395;
            mc_playAgain._x = 243;
            mc_playAgain._y = 158;
            thumbs_mc._x = 0;
            thumbs_mc._y = 316;
            main_mc._x = 0;
            main_mc._y = 406;
        mc_buffer._x = Math.round (vidBg_mc._x + (vidBg_mc._width / 2));
        mc_buffer._y = Math.round (vidBg_mc._y + (vidBg_mc._height / 2));
    // to apply when stage (browser window) is resized or modified
    stageL.onResize = function () {
        setStage ();
    // attaching object to the stage
    Stage.addListener (stageL);
    MovieClip.prototype.slide = function(yPos) {
        this._y -= (this._y-yPos)/5;
    // tilte actions
    mc_title.onEnterFrame = function()
        if (Stage["displayState"] == "normal" && title_out == false)
            this.slide(5);
        else if (Stage["displayState"] == "normal" && title_out == true)
            this.slide(35);
        if (Stage["displayState"] == "fullScreen" && title_out == false)
            this._y -= (this._y+106)/5;
        else if (Stage["displayState"] == "fullScreen" && title_out == true)
            this.slide(0);
    // thumbs actions
    main_mc.onEnterFrame = function()
        if (Stage["displayState"] == "normal" && thumbs_out == false)
            this.slide(406);
        else if (Stage["displayState"] == "normal" && thumbs_out == true)
            this.slide(299);
        if (Stage["displayState"] == "fullScreen" && thumbs_out == false)
            this._y = Math.round (Stage.height - 0);
        else if (Stage["displayState"] == "fullScreen" && thumbs_out == true)
            this._y = Math.round (Stage.height - 133);
    // Playlist button
    controls_mc.playlist_mc.onRollOver = function ()
        this.gotoAndStop("playlistOver");
    controls_mc.playlist_mc.onRollOut = controls_mc.playlist_mc.onReleaseOutside = function ()
        this.gotoAndStop("playlist");
    // Toggle playlist button
    controls_mc.playlist_mc.onRelease = function ()
        if (thumbs_out == false)
            thumbs_out = true;
            title_out = true;
        else if (thumbs_out == true)
            thumbs_out = false;
            title_out = false;
        } // end if else
    // Define hit area for playPause button
    vid.onPress = controls_mc.playPause.onRelease = function ()
        ns.pause();
        if (playStatus == 1)
            controls_mc.playPause.gotoAndStop("play")
            playStatus = 0;
            checkStatus();
        else if (playStatus == 0)
            controls_mc.playPause.gotoAndStop("pause");
            playStatus = 1;
            checkStatus();
    // playPause button
    controls_mc.playPause.onRollOver = function ()
        if (playStatus == 1)
            this.gotoAndStop("pauseOver");
        else
            this.gotoAndStop("playOver");
        } // end else if
    controls_mc.playPause.onRollOut = controls_mc.playPause.onReleaseOutside = function ()
        if (playStatus == 1)
            this.gotoAndStop("pause");
        else
            this.gotoAndStop("play");
        } // end else if
    // Toggle playPause button
    controls_mc.playPause.onRelease = function ()
        ns.pause();
        if (playStatus == 1)
            this.gotoAndStop("play");
            playStatus = 0;
            checkStatus();
        else if (playStatus == 0)
            this.gotoAndStop("pause");
            playStatus = 1;
            checkStatus();
    controls_mc.skip_mc.onRollOver = function ()
        this.gotoAndStop("skipOver");
    controls_mc.skip_mc.onRollOut = controls_mc.skip_mc.onReleaseOutside = function ()
        this.gotoAndStop("skip");
    controls_mc.skip_mc.onRelease = function ()
        _parent.nextVideo()
    // Play Again button
    mc_playAgain.onRollOver = function ()
        this.gotoAndStop("playAgainOver");
    mc_playAgain.onRollOut = mc_playAgain.onReleaseOutside = function ()
        this.gotoAndStop("playAgain");
    // Toggle Play Again button
    mc_playAgain.onRelease = function ()
        this._visible = false;
        ns.pause();
        playStatus = 1;
        checkStatus();
    // make the seek bar clickable
    controls_mc.mc_progress.mc_buff.onPress = function()
        xpos = controls_mc.mc_progress._xmouse;
        percent = Math.round(xpos/controls_mc.mc_progress._width*100);
        seekTime = percent/100*FLVduration;
        seekTime = Math.round(seekTime*100)/100;
        ns.seek(seekTime);
    // Set volume level
    var s:Sound = new Sound();
    s.setVolume(_root.volume_value);
    controls_mc.mc_soundLevel.mc_volume._xscale = _root.volume_value;
    // Volume control
    controls_mc.mc_soundLevel.onPress = function()
        volumeTo = (this._xmouse / this._width)*100;
        this.mc_volume._xscale = volumeTo;
        s.setVolume(volumeTo);
    // Volume
    _parent.createEmptyMovieClip("vSound", _parent.getNextHighestDepth());
    vSound.attachAudio(ns);
    var so = new Sound(vSound);
    so.setVolume(_root.volume_value);
    // Mute button
    controls_mc.mute_mc.onRollOver = function ()
        if (so.getVolume() >= 1)
            this.gotoAndStop("onOver");
        else
            this.gotoAndStop("muteOver");
        } // end else if
    controls_mc.mute_mc.onRollOut = controls_mc.mute_mc.onReleaseOutside = function ()
        if (so.getVolume() >= 1)
            this.gotoAndStop("on");
        else
            this.gotoAndStop("mute");
        } // end else if
    // Toggle mute button
    controls_mc.mute_mc.onRelease = function ()
        if (so.getVolume() >= 1)
            controls_mc.mc_soundLevel.mc_volume._xscale = 0;
            so.setVolume(0);
            this.gotoAndStop("muteOver");
        else
            controls_mc.mc_soundLevel.mc_volume._xscale = 70;
            so.setVolume(_root.volume_value);
            this.gotoAndStop("onOver");
        } // end else if
    // Resize video proportionaly
    function regularSize ()
        videoObj._width = 600;
        videoObj._height = videoObj._width * relationshipW;
        if (videoObj._height > 360)
            videoObj._height = 360;
            videoObj._width = videoObj._height * relationshipH;
        videoObj.smoothing = true;
        //var scale:Number;
        videoObj._x = (600 - videoObj._width) / 2;
        videoObj._y = (360 - videoObj._height) / 2;
    function largeSize ()
        videoObj._width = Stage.width;
        videoObj._height = videoObj._width * relationshipW;
        if (videoObj._height > Stage.height)
            videoObj._height = Stage.height;
            videoObj._width = videoObj._height * relationshipH;
        videoObj.smoothing = true;
        //var scale:Number;
        videoObj._x = (Stage.width - videoObj._width) / 2;
        videoObj._y = (Stage.height - videoObj._height) / 2;
    // Fullscreen button
    controls_mc.fullscreen_mc.onRollOver = function ()
        if (Stage["displayState"] == "normal")
            this.gotoAndStop("fullOver");
        else
            this.gotoAndStop("fullCloseOver");
        } // end else if
    controls_mc.fullscreen_mc.onRollOut = controls_mc.fullscreen_mc.onReleaseOutside = function ()
        if (Stage["displayState"] == "normal")
            this.gotoAndStop("full");
        else
            this.gotoAndStop("fullClose");
        } // end else if
    // Toggle fullscreen button
    controls_mc.fullscreen_mc.onRelease = function ()
        if (Stage["displayState"] == "normal")
            Stage["displayState"] = "fullscreen";
            _parent.video_txt.theText._visible = false;
        else
            Stage["displayState"] = "normal";
            _parent.video_txt.theText._visible = true;

    if you mean sound works well when the gallery is tested without being loaded into another swf but fails when loaded, change the highlighted line:
    // Import filter classes
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    // Set flash variables
    var xmlFileUrl:String = "playlist.xml";
    var auto_play:String = "true";
    // Set xml file URL
    if (_root.xmlfile) {
        xmlFileUrl = _root.xmlfile;
    var V_SRC;
    var thuArray:Array = new Array();
    var currentVideo:Number = 0;
    var totalItems;
    var numOfItems:Number;
    var itemDistance:Number = 120+5;
    var itemHeight:Number = 80+2;
    var Value:Number = 1;
    var boundry:Number = 1;
    var ratio:Number = 1;
    var diff:Number = 1;
    var collectionWidth:Number = 1;
    var buffer:Number = 135*2;
    this.createEmptyMovieClip("video_txt",this.getNextHighestDepth());
    video_txt.createTextField("theText",video_txt.getNextHighestDepth(),0,0,584,36);
    video_txt.theText.selectable = false;
    video_txt.theText.autoSize = "left";
    //The Format
    myFormat = new TextFormat();
    myFormat.font = _root.font_format;
    myFormat.size = _root.font_size;
    myFormat.color = _root.font_color;
    myFormat.align = "center";
    video_txt.theText.setNewTextFormat(myFormat);
    // Create a new movieclip to load the thumbs
    var thumbLoader:MovieClipLoader = new MovieClipLoader();
    var thumbListener:Object = new Object();
    thumbLoader.addListener(thumbListener);
    thumbListener.onLoadInit = function(target_mc:MovieClip, httpStatus:Number)
        new Tween(target_mc, "_alpha", Regular.easeOut, 0, 100, 1, true);
        target_mc._parent.preloader_mc._alpha = 0;
    var xml:XML = new XML();
    xml.ignoreWhite = true;
    xml.onLoad = xmlLoaded;
    xml.load(xmlFileUrl);
    // Load the xml file into the player
    function xmlLoaded(b:Boolean) {
        if (b) {
            auto_play = this.firstChild.firstChild.attributes.auto_play;
            scrollSpeed = parseInt(this.firstChild.firstChild.attributes.scrollSpeed);
            totalItems = this.firstChild.firstChild.childNodes;
            numOfItems = totalItems.length;
            for (j=0; j<numOfItems; j++) {
                var i = player_mc.main_mc.collection_mc.attachMovie("mc_Thumb", "thumb_"+j, j);
                i._x = itemDistance*j;
                thumbLoader.loadClip(totalItems[j].attributes.thumb,i.loader_mc);
                i.id = j;
                i.videoTitle = totalItems[j].attributes.title;
                i.videoUrl = totalItems[j].attributes.src;
                // Create an event for thumb rollover
                i.onRollOver = iRoll;
                i.onRollOut = i.onReleaseOutside=iOut;
                i.onRelease = iRelease;
                thuArray[j] = i;
            // default first video
            collectionWidth = player_mc.main_mc.collection_mc._width;
            currentVideo = 0;
            V_SRC = thuArray[0].videoUrl;
            changeVideo();
            //scope._alpha = 100;
            new Tween(scope, "_alpha", Regular.easeOut, 0, 100, 0.5, true);
        else
            trace("Error! xml file not loaded");
    // onRollOver Events
    function iRoll() {
        player_mc.mc_title.title_txt.htmlText = totalItems[this.id].attributes.title;
        this.light_mc.play();
    function iRelease() {
        currentVideo = this.id;
        changeVideo();
    function changeVideo() {
        V_SRC = thuArray[currentVideo].videoUrl;
        player_mc.loadVideo();
        currentThumb();
        player_mc.mc_title.title_txt.htmlText = thuArray[currentVideo].videoTitle;
        video_txt.theText.text = totalItems[currentVideo].attributes.title;
        player_mc.so.getVolume();
        player_mc.playStatus = 1;
        player_mc.checkStatus();
    function nextVideo() {
        if (currentVideo<(numOfItems-1)) {
            currentVideo++;
        } else {
            currentVideo = 0;
        changeVideo();
    function currentThumb() {
        for (i=0; i<thuArray.length; i++) {
            if (i == currentVideo) {
                thuArray[i].enabled = true;
    // Mouse movement on rollover
    this.onMouseMove = function() {
        collectionWidth = player_mc.main_mc.collection_mc._width;
        boundry = player_mc.main_mc.area_mc._width;
        if ((player_mc.main_mc._ymouse>0) && (player_mc.main_mc._ymouse<itemHeight)) {
            if ((player_mc.main_mc._xmouse>0) && (player_mc.main_mc._xmouse<boundry)) {
                ratio = player_mc.main_mc._xmouse/boundry;
                diff = (collectionWidth-boundry)+buffer;
                Value = Math.floor((-ratio)*diff)+(buffer/2);
        updateAfterEvent();
    this.onEnterFrame = function() {
        // Define movement area and speed
        if (player_mc.main_mc.collection_mc._width>player_mc.main_mc.area_mc._width) {
            player_mc.main_mc.collection_mc._x = Math.round((player_mc.main_mc.collection_mc._x)+((Value-player_mc.main_mc.colle ction_mc._x)/scrollSpeed));
            if (player_mc.main_mc.collection_mc._x>0) {
                player_mc.main_mc.collection_mc._x = 0;
            } else if (player_mc.main_mc.collection_mc._x<(player_mc.main_mc.area_mc._width-(player_m c.main_mc.collection_mc._width))) {
                player_mc.main_mc.collection_mc._x = Math.round(player_mc.main_mc.area_mc._width-(player_mc.main_mc.collection_mc._w idth));
        } else {
            player_mc.main_mc.collection_mc._x = 0;
        updateAfterEvent();
    part two:
    // Define flash variables
    var video_url:String = "";
    var tempx:Number = this._parent._x;
    var tempy:Number = this._parent._y;
    var timeCounter:Number = 0;
    var timeInSeconds:Number = _root.time_counter;
    // Object to listen to onStage Event
    videoObj = vid.videoObj;
    // Setting up the connection
    var nc:NetConnection = new NetConnection();
    nc.connect(null);
    var ns:NetStream = new NetStream(nc);
    // Buffer time
    ns.setBufferTime (10);
    videoObj.attachVideo (ns);
    function loadVideo () {
        video_url = _parent.V_SRC;
        trace(video_url);
        ns.play (video_url);
    function checkStatus()
        if (playStatus == 1)
            controls_mc.playPause.gotoAndStop("pause");
            mc_playAgain._visible = false;
            thumbs_out = false;
            title_out = false;
        else
            controls_mc.playPause.gotoAndStop("play");
            mc_playAgain._visible = true;
        } // end else if
        if (so.getVolume() == 0)
            controls_mc.mute_mc.gotoAndStop("mute");
        else
            controls_mc.mute_mc.gotoAndStop("on");
    }; // End of the function
    mc_playAgain._visible = false;
    // Check Status of video
    ns.onStatus = function (info)
        if (info.code == "NetStream.Buffer.Empty")
            mc_buffer._visible = true;
        else if (info.code == "NetStream.Buffer.Full")
            mc_buffer._visible = false;
        else if (info.code == "NetStream.Play.Stop")
            ns.seek(0);
            if (playStatus == 1)
                ns.pause();
                playStatus = 0;
            else
                trace;
            } // end else if
            mc_playAgain._visible = true;
            mc_buffer._visible = false;
            thumbs_out = true;
            title_out = true;
            checkStatus();
        } // end else if
    // Get info about video
    ns.onMetaData = function(infoObject:Object)
        FLVduration = infoObject["duration"];
        relationshipW = infoObject.height / infoObject.width;
        relationshipH = infoObject.width / infoObject.height;
        if (Stage["displayState"] == "fullScreen")
            largeSize ();
        else
            regularSize ();
        if (_parent.auto_play == "false")
            ns.seek(0);
            if (playStatus == 1)
                ns.pause();
                playStatus = 0;
            mc_buffer._visible = false;
            controls_mc.playPause.gotoAndStop("play");
            mc_playAgain._visible = true;
            thumbs_out = true;
            title_out = true;
            _parent.auto_play = "true";
        }// end else if
    var videoInterval = setInterval(videoStatus, 100);
    var amountLoaded;
    var duration;
    // videoStatus on load Event
    function videoStatus()
        amountLoaded = ns.bytesLoaded / ns.bytesTotal;
        controls_mc.mc_progress.mc_buff._width = amountLoaded * 250;
        controls_mc.mc_progress.mc_played._x = ns.time / duration * 250;
        controls_mc.mc_progress.mc_played._xscale = Math.round(ns.time*100/FLVduration);
    }; // End of the function
    function scrubIt()
        ns.seek(Math.floor(controls_mc.mc_progress.mc_played._x / 250 * duration));
    }; // End of the function
    // video time
    var time_interval:Number = setInterval(checkTime, 500, ns);
    function checkTime(ns:NetStream) {
        //current time
        var ns_seconds:Number = ns.time;
        var minutes:Number = Math.floor(ns_seconds/60);
        var seconds = Math.floor(ns_seconds%60);
        sec = seconds;
        min = minutes;
        if (sec<10) {
            sec = "0"+sec;
        if (min<10) {
            min = "0"+min;
        controls_mc.time_txt.time_1.text = min+":"+sec;
        //total time
        var minutes2:Number = Math.floor(FLVduration/60);
        var seconds2 = Math.floor(FLVduration%60);
        sec2 = seconds2;
        min2 = minutes2;
        if (sec2<10) {
            sec2 = "0"+sec2;
        if (min2<10) {
            min2 = "0"+min2;
        controls_mc.time_txt.time_2.text = min2+":"+sec2;
        if (controls_mc.time_txt.time_2.text == "NaN:NaN") {
            controls_mc.time_txt.time_2.text = "00:00";
    setStage ();
    // Object to listen onStage Event
    var stageL:Object = new Object ();
    // function respnsible for content alignment
    function setStage ()
        if (Stage["displayState"] == "fullScreen") {
            tempx = this._parent._x;
            tempy = this._parent._y;
            this._parent._x = 0;
            this._parent._y = 0;
            vidBg_mc._x = 0;
            vidBg_mc._y = 0;
            mc_title._x = 0;
            mc_title._y = -30;
            slide_me._x = 0;
            slide_me._y = 0;
            vidBg_mc._width = Stage.width;
            vidBg_mc._height = Stage.height;
            mc_title._width = Stage.width;
            mc_title._height = Stage.height / 20;
            slide_me._width = Stage.width;
            slide_me._height = Stage.height / 20;
            vid._x = vid._y = 0;
            largeSize ();
            controls_mc._x = Math.round ((Stage.width / 2) - (controls_mc._width / 2));
            controls_mc._y = Math.round (Stage.height - 36);
            mc_playAgain._x = Math.round ((Stage.width / 2) - (mc_playAgain._width / 2));
            mc_playAgain._y = Math.round (Stage.height - 572);
            thumbs_mc._x = Math.round ((Stage.width / 2) - (thumbs_mc._width / 2));
            thumbs_mc._y = Math.round (Stage.height - 115);
            main_mc._x = Math.round ((Stage.width / 2) - (controls_mc._width / 2));;
            hide_mc.onEnterFrame = function () {
                timeCounter = timeCounter + 1;
                if (timeCounter >= timeInSeconds * 30) {
                    timeCounter = 0;
                    controls_mc._alpha = 0;
            this.onMouseMove = function () {
                timeCounter = 0;
                controls_mc._alpha = 100;
        else
            delete hide_mc.onEnterFrame;
            delete this.onMouseMove;
            controls_mc._alpha = 100;
            this._parent._x = tempx;
            this._parent._y = tempy;
            vidBg_mc._width = 600;
            vidBg_mc._height = 360;
            mc_title._width = 600;
            mc_title._height = 30;
            slide_me._width = 600;
            slide_me._height = 30;
            vidBg_mc._x = vid._x = 0;
            vidBg_mc._y = vid._y = 35;
            mc_title._x = vid._x = 0;
            mc_title._y = vid._x = -30;
            slide_me._x = vid._x = 0;
            slide_me._y = vid._y = 35;
            regularSize ();
            controls_mc._x = 0;
            controls_mc._y = 395;
            mc_playAgain._x = 243;
            mc_playAgain._y = 158;
            thumbs_mc._x = 0;
            thumbs_mc._y = 316;
            main_mc._x = 0;
            main_mc._y = 406;
        mc_buffer._x = Math.round (vidBg_mc._x + (vidBg_mc._width / 2));
        mc_buffer._y = Math.round (vidBg_mc._y + (vidBg_mc._height / 2));
    // to apply when stage (browser window) is resized or modified
    stageL.onResize = function () {
        setStage ();
    // attaching object to the stage
    Stage.addListener (stageL);
    MovieClip.prototype.slide = function(yPos) {
        this._y -= (this._y-yPos)/5;
    // tilte actions
    mc_title.onEnterFrame = function()
        if (Stage["displayState"] == "normal" && title_out == false)
            this.slide(5);
        else if (Stage["displayState"] == "normal" && title_out == true)
            this.slide(35);
        if (Stage["displayState"] == "fullScreen" && title_out == false)
            this._y -= (this._y+106)/5;
        else if (Stage["displayState"] == "fullScreen" && title_out == true)
            this.slide(0);
    // thumbs actions
    main_mc.onEnterFrame = function()
        if (Stage["displayState"] == "normal" && thumbs_out == false)
            this.slide(406);
        else if (Stage["displayState"] == "normal" && thumbs_out == true)
            this.slide(299);
        if (Stage["displayState"] == "fullScreen" && thumbs_out == false)
            this._y = Math.round (Stage.height - 0);
        else if (Stage["displayState"] == "fullScreen" && thumbs_out == true)
            this._y = Math.round (Stage.height - 133);
    // Playlist button
    controls_mc.playlist_mc.onRollOver = function ()
        this.gotoAndStop("playlistOver");
    controls_mc.playlist_mc.onRollOut = controls_mc.playlist_mc.onReleaseOutside = function ()
        this.gotoAndStop("playlist");
    // Toggle playlist button
    controls_mc.playlist_mc.onRelease = function ()
        if (thumbs_out == false)
            thumbs_out = true;
            title_out = true;
        else if (thumbs_out == true)
            thumbs_out = false;
            title_out = false;
        } // end if else
    // Define hit area for playPause button
    vid.onPress = controls_mc.playPause.onRelease = function ()
        ns.pause();
        if (playStatus == 1)
            controls_mc.playPause.gotoAndStop("play")
            playStatus = 0;
            checkStatus();
        else if (playStatus == 0)
            controls_mc.playPause.gotoAndStop("pause");
            playStatus = 1;
            checkStatus();
    // playPause button
    controls_mc.playPause.onRollOver = function ()
        if (playStatus == 1)
            this.gotoAndStop("pauseOver");
        else
            this.gotoAndStop("playOver");
        } // end else if
    controls_mc.playPause.onRollOut = controls_mc.playPause.onReleaseOutside = function ()
        if (playStatus == 1)
            this.gotoAndStop("pause");
        else
            this.gotoAndStop("play");
        } // end else if
    // Toggle playPause button
    controls_mc.playPause.onRelease = function ()
        ns.pause();
        if (playStatus == 1)
            this.gotoAndStop("play");
            playStatus = 0;
            checkStatus();
        else if (playStatus == 0)
            this.gotoAndStop("pause");
            playStatus = 1;
            checkStatus();
    controls_mc.skip_mc.onRollOver = function ()
        this.gotoAndStop("skipOver");
    controls_mc.skip_mc.onRollOut = controls_mc.skip_mc.onReleaseOutside = function ()
        this.gotoAndStop("skip");
    controls_mc.skip_mc.onRelease = function ()
        _parent.nextVideo()
    // Play Again button
    mc_playAgain.onRollOver = function ()
        this.gotoAndStop("playAgainOver");
    mc_playAgain.onRollOut = mc_playAgain.onReleaseOutside = function ()
        this.gotoAndStop("playAgain");
    // Toggle Play Again button
    mc_playAgain.onRelease = function ()
        this._visible = false;
        ns.pause();
        playStatus = 1;
        checkStatus();
    // make the seek bar clickable
    controls_mc.mc_progress.mc_buff.onPress = function()
        xpos = controls_mc.mc_progress._xmouse;
        percent = Math.round(xpos/controls_mc.mc_progress._width*100);
        seekTime = percent/100*FLVduration;
        seekTime = Math.round(seekTime*100)/100;
        ns.seek(seekTime);
    // Set volume level
    var s:Sound = new Sound(this);
    s.setVolume(_root.volume_value);
    controls_mc.mc_soundLevel.mc_volume._xscale = _root.volume_value;
    // Volume control
    controls_mc.mc_soundLevel.onPress = function()
        volumeTo = (this._xmouse / this._width)*100;
        this.mc_volume._xscale = volumeTo;
        s.setVolume(volumeTo);
    // Volume
    _parent.createEmptyMovieClip("vSound", _parent.getNextHighestDepth());
    vSound.attachAudio(ns);
    var so = new Sound(vSound);
    so.setVolume(_root.volume_value);
    // Mute button
    controls_mc.mute_mc.onRollOver = function ()
        if (so.getVolume() >= 1)
            this.gotoAndStop("onOver");
        else
            this.gotoAndStop("muteOver");
        } // end else if
    controls_mc.mute_mc.onRollOut = controls_mc.mute_mc.onReleaseOutside = function ()
        if (so.getVolume() >= 1)
            this.gotoAndStop("on");
        else
            this.gotoAndStop("mute");
        } // end else if
    // Toggle mute button
    controls_mc.mute_mc.onRelease = function ()
        if (so.getVolume() >= 1)
            controls_mc.mc_soundLevel.mc_volume._xscale = 0;
            so.setVolume(0);
            this.gotoAndStop("muteOver");
        else
            controls_mc.mc_soundLevel.mc_volume._xscale = 70;
            so.setVolume(_root.volume_value);
            this.gotoAndStop("onOver");
        } // end else if
    // Resize video proportionaly
    function regularSize ()
        videoObj._width = 600;
        videoObj._height = videoObj._width * relationshipW;
        if (videoObj._height > 360)
            videoObj._height = 360;
            videoObj._width = videoObj._height * relationshipH;
        videoObj.smoothing = true;
        //var scale:Number;
        videoObj._x = (600 - videoObj._width) / 2;
        videoObj._y = (360 - videoObj._height) / 2;
    function largeSize ()
        videoObj._width = Stage.width;
        videoObj._height = videoObj._width * relationshipW;
        if (videoObj._height > Stage.height)
            videoObj._height = Stage.height;
            videoObj._width = videoObj._height * relationshipH;
        videoObj.smoothing = true;
        //var scale:Number;
        videoObj._x = (Stage.width - videoObj._width) / 2;
        videoObj._y = (Stage.height - videoObj._height) / 2;
    // Fullscreen button
    controls_mc.fullscreen_mc.onRollOver = function ()
        if (Stage["displayState"] == "normal")
            this.gotoAndStop("fullOver");
        else
            this.gotoAndStop("fullCloseOver");
        } // end else if
    controls_mc.fullscreen_mc.onRollOut = controls_mc.fullscreen_mc.onReleaseOutside = function ()
        if (Stage["displayState"] == "normal")
            this.gotoAndStop("full");
        else
            this.gotoAndStop("fullClose");
        } // end else if
    // Toggle fullscreen button
    controls_mc.fullscreen_mc.onRelease = function ()
        if (Stage["displayState"] == "normal")
            Stage["displayState"] = "fullscreen";
            _parent.video_txt.theText._visible = false;
        else
            Stage["displayState"] = "normal";
            _parent.video_txt.theText._visible = true;

  • I need help with XML Gallery Fade in out transition. somebody please help me :(

    I need help with XML Gallery Fade in out transition. somebody please help me
    I have my post dont want to duplicate it

    The problem doesn't lie with your feed, although it does contain an error - you have given a non-existent sub-category. You need to stick to the categories and sub-categories listed here:
    http://www.apple.com/itunes/podcasts/specs.html#categories
    Subscribing to your feed from the iTunes Store page work as such, but the episodes throw up an error message. The problem lies with your episode media files: you are trying to stream them. Pasting the URL into a browser produces a download (where it should play the file) of a small file which does not play and in fact is a text file containing (in the case of ep.2) this:
    [Reference]
    Ref1=http://stream.riverratdoc.com/RiverratDoc/episode2.mp3?MSWMExt=.asf
    Ref2=http://70.33.177.247:80/RiverratDoc/episode2.mp3?MSWMExt=.asf
    You must provide a direct link to the actual mp3 file. Streaming won't work. The test is that if you paste the URL of the media file (as given in the feed) into the address bar of a browser it should play the file.

  • Help needed in XML encoders and decoders

    I'm using XMLEncoders and XMLDecoders for storage of java objects. Currently I've tried on simple data types only. But the problem is if I want to operate on the XMLEncoder created file from two different programs, then it is giving errors. In one program I'm executing
    XMLEncoder e = new XMLEncoder(new BufferedOutputStream
    (new FileOutputStream("polledobjects.xml")));
    e.writeObject(...);
    e.writeObject(...);
    e.close();
    and in another program I want to append to append a few more objects in the same polledobjects.xml, so I created another XML encoder object and opened the polledobjects.xml in append mode.
    XMLEncoder e1 = new XMLEncoder(new BufferedOutputStream(new
    FileOutputStream("polledobjects.xml",true)));
    e1.writeObject(...);
    e1.writeObject(...);
    e1.close();
    Now, Decoder works fine till the point it goes thru xml portion created by the first program, but as soon as it reached xml portion created by the second program, it gives the error->
    java.lang.ArrayIndexOutOfBoundsException: 2
    at java.beans.ObjectHandler.dequeueResult(XMLDecoder.java:272)
    at java.beans.XMLDecoder.readObject(XMLDecoder.java:150)
    at Convert.main(Convert.java:57)
    XML file created is :-
    <?xml version="1.0" encoding="UTF-8"?>
    <java version="1.4.2" class="java.beans.XMLDecoder">
    <object class="Data_to_Poll">
    <void property="active">
    <boolean>true</boolean>
    </void>
    <void property="agent">
    <string>192.9.200.151</string>
    </void>
    </object>
    </java>
    <?xml version="1.0" encoding="UTF-8"?>
    <java version="1.4.2" class="java.beans.XMLDecoder">
    <object class="Data_to_Poll">
    <void property="active">
    <boolean>true</boolean>
    </void>
    <void property="agent">
    <string>192.9.200.151</string>
    </void>
    </object>
    </java>
    I know it is giving problems b'cos it is encountering <?xml tag 2 times in the same xml document, but what should I do if I want to append in the same xml file and in the second program nothing more than filename is known...
    plz. help me out....

    In the below code hope "append" method may help u solve ur req.
    import java.io.*;
    import java.beans.*;
    import java.util.*;
    public class Convert {
    public static void main(String asd[]) {
    try{
    Convert c = new Convert();
    c.encode("source.xml");
    c.decode("source.xml");
    c.append("source.xml");
    }catch(Exception e) {
    e.printStackTrace();
    public void encode(String fName) throws FileNotFoundException {
    XMLEncoder xmlE = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(fName)));
    xmlE.writeObject(new MyObject());
    xmlE.writeObject(new MyObject("Orange","BasketBall"));
    xmlE.close();
    /*xmlE = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(fName,true)));
    xmlE.writeObject(new MyObject());
    xmlE.close();*/
    public void decode(String fName) throws FileNotFoundException {
    XMLDecoder xmlD = new XMLDecoder(new BufferedInputStream(new FileInputStream(fName)));
    Object obj = xmlD.readObject();
    boolean mine= obj instanceof MyObject;
    System.out.println(obj+" is : "+mine);
    xmlD.close();
    public void append(String fName) throws Exception {
    XMLDecoder xmlD = new XMLDecoder(new BufferedInputStream(new FileInputStream(fName)));
    Vector objs = new Vector();
    Object obj = xmlD.readObject();
    try{
    while(obj !=null){
    objs.add(obj);
    obj = xmlD.readObject();
    }catch(Exception e) {
    e.printStackTrace();
    if(obj!=null) {
    objs.add(obj);
    xmlD.close();
    XMLEncoder xmlE = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(fName)));
    int count = objs.size();
    for(int i=0;i<count;++i) {
    xmlE.writeObject(objs.get(i));
    xmlE.writeObject(new MyObject("White","VollyBall"));
    xmlE.close();

  • Need help on XML Publisher Template features

    Hi,
    We have a requirement to develop an Invoice Register report to display the invoices for a period. Details of each Invoice and Amount needs to be displayed in a single line. At the bottom of each page we have to display running total of the Invoices displayed till that page. At the beginning of each page we have to display the total amount of Invoices displayed in the previous page.
    We had developed the report using Reports Builder and registered concurrent program with output type as PDF. We are working in Spanish environment (UTF-8 character set). The report is working properly and producing output as required. But Spanish characters appear as junk character on the report. From Metalink Notes 443778.1 and 338990.1, I understand that PDF output in UTF-8 character set is not supported. We need to use XML Publisher to generate the PDF output.
    We have developed .rtf template. It is generating PDF output and Spanish characters appearing properly. But we are not able to get the running total at the bottom of each page or total of previous page amounts at the beginning of each page. In the output from Reports Builder, we could use various page level options (like reset at page level, etc.) to achieve the requirement. But in the template generated using .rtf, I do not have such options.
    I am not sure if there are advanced features in .rtf template to achieve the requirement. Could anyone please advise me how I can achieve the requirement? It would be great if you could provide me some reference.
    Thanks and Regards,
    Nabendu

    Hi Nabendu.
    BI publisher does have the option of showing a running total in PDF format usign a RTF template. If you look up the advanced rtf samples provided with the BI publisher plugin there is one example to show running totals, with the previous page total at the top.
    you can find this located on your PC where the Word Plugin is installed. C:\Program Files (x86)\Oracle\BI Publisher\BI Publisher Desktop\samples\RTF templates
    replace C:\ with the drive leeter of the drive where your desktop plugin is installed
    Hope this Helps,
    Domnic

  • Need help in xml bursting email bodt contents based on condition

    Dear All,
    I have a requirement as below.
    I am developing a xml publisher report with bursting functionality, i need to set a email body based on some condition, so please help me out how i can set the email body dynamically in xml bursting file.
    Note:The email body may be huge. for ex:
    Dear ${LINE_MANAGER_POSITION},<br/><br/>
       The probationary period for ${FULL_NAME} holding Worker Number ${EMPLOYEE_NUMBER} will end on ${PROBATION_END_DATE}. Please be sure to assess the employee carefully and fill out the attached Probationary Period Report, sign it, and send it to your HR Business Partner ${HR_BP_EMP_NAME} before ${PROB_END_DATE_BEFORE}.  <br/><br/>
       Please note: <br/>
        <ul> <li> The maximum probationary period allowed by UAE labor law is six months starting from the Hire Date. Probation extensions beyond six months are not permitted.</li> </ul>
        <ul> <li> During the probationary period, the Employee has the right to end ${GENDER} employment contract with five working days notice period.</li> </ul>
        <ul> <li> According to UAE labor law, the Employee is considered a permanent Employee with limited or unlimited contract if ${A_HE_SHE} is not notified that ${A_HE_SHE} is not suitable for the position ${A_HE_SHE} is assigned to. Dubai Petroleum Establishment Human Resources Division will consider the probationary period to be successful if you do not complete and sign the Probationary Period Evaluation form for ${FULL_NAME} before ${PROB_END_DATE_BEFORE}.</li> </ul>
        <ul> <li> If the Employee passes the probationary period successfully and is subsequently deemed unsuitable for the assigned Position then the HR disciplinary process prevails.</li> </ul>
       For more information on the Employee probationary period process and assessment approaches, please <a href="_http://dullap01/livelink/livelink.exe/open/29695955"> click here </a> or contact your Human Resources Business Partner ${HR_BP_EMP_NAME} at <a>${HR_BP_EMAIL}</a><br/><br/><br/>
       Yours sincerely, <br/>
       Human Resources Division </font>
    Thnaks
    Deb

    logo's should be pulling are the logo's directly embedded in format template?
    Suggest you download and use the [Bursting Designer|http://bipublisher.blogspot.com/2009/09/bi-publisher-bursting-designer.html] and review the log file for errors. You will need to change your templates to point locally on your pc.
    Ike Wiggins
    http://bipublisher.blogspot.com

  • Need help in xml

    i want to know how to parse an xml doc using javax.xml.parsers
    i have written a simple ide for java with lots of options and the software would look better if i include xml support.
    u can find the code below.
    /* Thank you for your interest in viewing the source of Jcom */
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.jar.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.undo.*;
    import javax.swing.text.*;
    // The main Class.
    public class Jcom extends JFrame
    JTextArea t=new JTextArea();
    JTextField output;
    Font f=new Font("SansSerif",Font.PLAIN,13);
    int count=0,char_count=0,class_count=0,char_changed=0,recent_compile=0,tabinsert=0;
    String curfile,Dir="./",text,file="Untitled",Key_word="",ext="java";
    String menucomm[]={"New","Open","Save","Save as","Exit","Cut","Copy","Paste","Select All","Comment","Compile","Run","About","Shortcut List","Undo","Redo","Bookmark"};
    File o_file;
    OutputStream f1;
    MessageWindow mw=new MessageWindow("Console Window.");
    protected UndoManager undo = new UndoManager();
    static Jcom jc;
    StatusBar status;
    JProgressBar progress;
    displayProgress dp=new displayProgress("Loading in Progress.");
    JComboBox jb;
    // Constructor
    public Jcom(String title) throws Exception
    super(title);
    setVisible(true);
    //setIconImage(new ImageIcon("./images/icon.gif"));
    t.setMargin(new Insets(20,30,20,20));
    setSize(700,500);
    String vers = System.getProperty("java.version");
    if(vers.compareTo("1.1.2")>0)
    t.setDragEnabled(true); // Works only in version 1.4
    t.setAutoscrolls(true);
    t.setFont(f);
    t.setLineWrap(true);
    t.setWrapStyleWord(true);
    t.setTabSize(6);
    Dimension dim=getToolkit().getScreenSize();
    setLocation(dim.width/2-getWidth()/2,dim.height/2-getHeight()/2);
    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    addWindowListener(new Winlis());
    undo.discardAllEdits();
    //main() method
    public static void main(String arg[]) throws Exception
    jc=new Jcom("JCom - The Java IDE.");
    jc.addmenu();
    jc.addtools();
    // Ask for exit
    public void askexit()
    int ch=2;
    if(char_changed==1)
    ch=JOptionPane.showOptionDialog(null,"Save Changes you made to "+file+" ?","Confirm",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);
    if(ch==0)
    save_doc();
    System.exit(0);
    public boolean save_doc()
    try
         if(file.equals("Untitled") || file==null)
              save_doc_as();
         else
         String text=t.getText();
         byte buf[]=text.getBytes();
         o_file=new File(Dir,file);
         OutputStream f1=new FileOutputStream(o_file);
         f1.write(buf);
         f1.close();
         char_changed=0;
         setTitle(file+" - JCompile");
    //setIcon(new ImageIcon("./images/icon.gif");
         catch(Exception i)
         return false;
    output.setText(file+" Total lines : "+t.getLineCount());
    return true;
    public boolean save_doc_as()
         try
         FileDialog fd=new FileDialog(this,"Save this document as",FileDialog.SAVE);
         fd.setVisible(true);
         file=fd.getFile();
         if(file==null)
         file="Untitled";
         return false;
         Dir=fd.getDirectory();
         text=t.getText();
         byte buf[]=text.getBytes();
         o_file=new File(Dir,file);
         f1=new FileOutputStream(o_file);
         f1.write(buf);
         f1.close();
         setTitle(file+" - JCompile");
         char_changed=0;
         setTitle(file+" - JCompile");
    //setIcon(new ImageIcon("./images/icon.gif");
         catch(Exception e)
         return false;
    output.setText(file+" Total lines : "+t.getLineCount());
    return true;
    public boolean compileit()
         try
         if(file.equals("Untitled"))
         if(save_doc()==false)
         return false;
         if(file==null)
         return false;
         if(char_changed==1)
         if(save_doc()==false)
         return false;
         output.setText("Compiling "+file+" ...");
         mw.jt.setText("Compiling "+file+" ..."+"\n");
         String comm="Javac.exe "+Dir+file;
         Process ps=Runtime.getRuntime().exec(comm);
         Runtime.getRuntime().gc();     
         InputStream textfile=ps.getErrorStream();
         DataInputStream dai=new DataInputStream(textfile);
         String S=dai.readLine();
         int errorcount=0;
         while(S != null)
         errorcount++;
         mw.jt.append(S+"\n");
         S=dai.readLine();
         if(errorcount==0)
              output.setText("Compilation Successful. Alt+v to Run the code.");
         else
         output.setText("Some Errors/Warnings occured during the compilation.");
         mw.setVisible(true);
         mw.setTitle("Compilation Results.");
         return false;
         }// end of try
         catch(IOException ie)
         JOptionPane.showMessageDialog(null, "Some I/O Error has occured. Please save your file and continue.", "I/O Error.",JOptionPane. ERROR_MESSAGE);
         return false;
         catch(Exception e)
         JOptionPane.showMessageDialog(null, "Exception has occured. Please save your file and continue.", "Exception.",JOptionPane. ERROR_MESSAGE);           
         return false;
         return true;
    public void run_program()
         try
         if(file==null)
         return;
         if(!mw.isVisible())
         mw.setVisible(true);
         if(char_changed==1)
         if(save_doc()==false)
         return;
         if(compileit()==false)
         return;
         mw.jt.setText("\nExecuting "+file+" ..."+"\n");
         int pos_dot=file.indexOf('.');
         char class_name[]=file.toCharArray();
         String class_name_string=new String(class_name,0,pos_dot);
         String comm="java "+class_name_string;
         Runtime ru=Runtime.getRuntime();
         Process ps=ru.exec(comm);
         InputStream textfile=ps.getErrorStream();
         Runtime.getRuntime().gc();     
         DataInputStream dai=new DataInputStream(textfile);
         String S=dai.readLine();
         if(S!=null)
         mw.jt.append("\nFollowing Runtime Error has occured.\n");
         int errorcount=0;
         while(S != null)
         errorcount++;
         mw.jt.append(S+"\n");
         S=dai.readLine();
         DataInputStream din=new DataInputStream(ps.getInputStream());
         S=din.readLine();
         errorcount=0;
         while(S != null)
         errorcount++;
         mw.jt.append(S+"\n");
         S=din.readLine();
         mw.jt.append("Execution of "+file+" has terminated."+"\n");
         output.setText("Execution completed.");
         mw.setTitle("Execution Results.");
         catch(IOException ie)
         JOptionPane.showMessageDialog(null, "Exception has occured. Please save your work and continue. ", "I/O Error",JOptionPane. ERROR_MESSAGE);           
         return;
         catch(Exception e)
         JOptionPane.showMessageDialog(null, "Exception has occured. Please save your work and continue. ", "I/O Error",JOptionPane. ERROR_MESSAGE);           
         return;
    public void addtools()
    //Adding toolbar
    JToolBar toolbar=new JToolBar();
    String[] iconfiles={"./images/new.gif","./images/open.gif","./images/save.gif","./images/cut.gif","./images/copy.gif","./images/paste.gif","./images/compile.gif","./images/run.gif"};
    jb = new JComboBox();
    jb.addActionListener(new bookListen());
    String[] butcomm={"New","Open","Save","Cut","Copy","Paste","Compile","Run"};
    ImageIcon[] icons=new ImageIcon[iconfiles.length];
    JButton[] buttons = new JButton[iconfiles.length];
    for(int i=0;i<iconfiles.length;i++)
         icons=new ImageIcon(iconfiles[i]);
         buttons[i]=new JButton(icons[i]);
         buttons[i].addActionListener(new actListen());
         buttons[i].setActionCommand(butcomm[i]);
         buttons[i].setToolTipText(butcomm[i]);
         toolbar.add(buttons[i]);
         if(i+1%3==0)
         toolbar.addSeparator();
         getContentPane().add("North",toolbar);
    status=new StatusBar();
    getContentPane().add("South",status);
    // this adds fonts support to the toolbar
    /*JComboBox jc = new JComboBox();
         String[] fonts = getToolkit().getFontList();
         for (int i = 0; i < fonts.length; i++)
         jc.addItem(fonts[i]);
         toolbar.add(jc);*/
    output=new JTextField(30);
    output.setEditable(false);
    status.add(output);
    status.add(new JLabel("Bookmarks "));
    jb.setMaximumRowCount(8);
    status.add(jb); //Add bookmark list
    validate();
    }/* End of addtools*/
    public void addmenu()
    //Adding menu Bar
    JMenuBar mb= new JMenuBar();
    setJMenuBar(mb);
    JMenuItem new1,open,save,save_as,cut,copy,paste,sel_all,und,red,find,replace,exit,about,compile,check,runit,shortcut_list,bookmark;
    // Adding contents for menu bar
    JMenu file=new JMenu("File");
    JMenu edit=new JMenu("Edit");
    JMenu search=new JMenu("Search");
    JMenu tools=new JMenu("Tools");
    JMenu make=new JMenu("Make");
    JMenu help=new JMenu("Help");
    new1=new JMenuItem("New");
    new1.setToolTipText("Create a new file.");
    new1.setIcon(new ImageIcon("./images/new.gif"));
    new1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK ));
    file.add(new1);
    new1.addActionListener(new actListen());
    open=new JMenuItem("Open");
    open.setToolTipText("Open an existing file.");
    open.setIcon(new ImageIcon("./images/open.gif"));
    open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK ));
    file.add(open);
    open.addActionListener(new actListen());
    save=new JMenuItem("Save");
    save.setToolTipText("Save changes.");
    save.setIcon(new ImageIcon("./images/save.gif"));
    save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK ));
    file.add(save);
    save.addActionListener(new actListen());
    save_as=new JMenuItem("Save as");
    save_as.setToolTipText("Save changes as.");
    file.add(save_as);
    save_as.addActionListener(new actListen());
    exit=new JMenuItem("Exit");
    exit.setToolTipText("Exit.");
    exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK ));
    file.add(exit);
    exit.addActionListener(new actListen());
    exit.setIcon(new ImageIcon("./images/exit.gif"));
    mb.add(file);
    cut=new JMenuItem("Cut");
    cut.setToolTipText("Cut selection.");
    cut.setIcon(new ImageIcon("./images/cut.gif"));
    cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK ));
    edit.add(cut);
    cut.addActionListener(new actListen());
    copy=new JMenuItem("Copy");
    copy.setToolTipText("Copy selection.");
    copy.setIcon(new ImageIcon("./images/copy.gif"));
    copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK ));
    edit.add(copy);
    copy.addActionListener(new actListen());
    paste=new JMenuItem("Paste");
    paste.setToolTipText("Paste from clipboard.");
    paste.setIcon(new ImageIcon("./images/paste.gif"));
    paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK ));
    edit.add(paste);
    paste.addActionListener(new actListen());
    sel_all=new JMenuItem("Select All");
    sel_all.setToolTipText("Select all.");
    sel_all.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK ));
    edit.add(sel_all);
    sel_all.addActionListener(new actListen());
    und=new JMenuItem("Undo");
    und.setToolTipText("Undo.");
    und.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK ));
    edit.add(und);
    und.addActionListener(new actListen());
    red=new JMenuItem("Redo");
    red.setToolTipText("Redo.");
    red.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_MASK ));
    edit.add(red);
    red.addActionListener(new actListen());
    mb.add(edit);
    find=new JMenuItem("Find");
    search.add(find);
    find.setIcon(new ImageIcon("./images/find.gif"));
    find.addActionListener(new actListen());
    replace=new JMenuItem("Replace");
    search.add(replace);
    replace.setIcon(new ImageIcon("./images/replace.gif"));
    replace.addActionListener(new actListen());
    mb.add(search);
    JMenuItem tar_file=new JMenuItem("Create Archive");
    tools.add(tar_file);
    tar_file.addActionListener(new actListen());
    JMenuItem docu=new JMenuItem("Create Documentation");
    tools.add(docu);
    docu.addActionListener(new actListen());
    JMenuItem comment=new JMenuItem("Comment");
    comment.setToolTipText("Comment Selection.");
    tools.add(comment);
    comment.addActionListener(new actListen());
    bookmark=new JMenuItem("Bookmark");
    tools.add(bookmark);
    bookmark.addActionListener(new actListen());
    mb.add(tools);
    compile=new JMenuItem("Compile");
    compile.setToolTipText("Compile.");
    compile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_MASK ));
    make.add(compile);
    compile.setIcon(new ImageIcon("./images/compile.gif"));
    compile.addActionListener(new actListen());
    runit=new JMenuItem("Run");
    runit.setToolTipText("Run.");
    runit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.ALT_MASK ));
    make.add(runit);
    runit.setIcon(new ImageIcon("./images/run.gif"));
    runit.addActionListener(new actListen());
    mb.add(make);
    shortcut_list=new JMenuItem("Shortcut List");
    help.add(shortcut_list);
    shortcut_list.addActionListener(new actListen());
    about=new JMenuItem("About");
    help.add(about);
    about.addActionListener(new actListen());
    mb.add(help);
    //Register with document listener.
    t.getDocument().addDocumentListener(new docListen());
    // Register with Undo Listener
    t.getDocument().addUndoableEditListener(new UndoHandler());
    //Register with Keyboard listener
    t.addKeyListener(new keyListen());
    JScrollPane scrollpane=new JScrollPane(t);
    Container cont=getContentPane();
    cont.add(scrollpane);
    validate();
    }/* End of addmenu */
    /* Frame for displaying console outputs */
    public class MessageWindow extends JFrame
    JTextArea jt;
    public MessageWindow(String title)
    super(title);
    setSize(400,400);
    //setIcon(new ImageIcon("./images/icon.gif"));
    jt =new JTextArea();
    jt.setEditable(false);
    JScrollPane scroll=new JScrollPane(jt);
    getContentPane().add(scroll);
    jt.addKeyListener(new keyListen());
    jt.addMouseListener(new mouseListen());
    validate();
    }//End of console display class
    /* Frame for displaying progress bar during an operation */
    public class displayProgress extends JFrame
    JLabel jl;
    public displayProgress(String title)
    super(title);
    setSize(300,100);
    setResizable(false);
    removeNotify();
    Dimension dim=getToolkit().getScreenSize();
    setLocation(dim.width/2-getWidth()/2,dim.height/2-getHeight()/2);
    getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER,8,30));
    jl=new JLabel("Lines Loaded : ");
    progress = new JProgressBar();
    progress.setMinimum(0);
    progress.setMaximum(45);
    getContentPane().add(jl);
    getContentPane().add(progress);
    validate();
    }//End of progress display.
    public void addNew() // To add a new Book Mark
    String selectedText=t.getSelectedText();
    if(selectedText!=null)
    jb.addItem(selectedText);
    jb.showPopup();
    output.setText("Bookmark added.");
    public void remove() // To remove a Bookmark
    jb.removeAllItems();
    /* Book Mark Handler*/
    class bookListen implements ActionListener
    public void actionPerformed(ActionEvent ae)
    String search=(String)jb.getSelectedItem();
    if(search!=null)
    findString(search);
    }//End of class
    // Undo Handler
    class UndoHandler implements UndoableEditListener
         public void undoableEditHappened(UndoableEditEvent e)
              undo.addEdit(e.getEdit());
    }// undo handler
    public class keyListen extends KeyAdapter
    KeyStroke ks;
    public void keyPressed(KeyEvent ke)
    try
    ks=KeyStroke.getKeyStrokeForEvent(ke);
    String s1=KeyEvent.getKeyModifiersText(ks.getModifiers()); //s1 has modifiers like Ctrl+Alt
    String s2=KeyEvent.getKeyText(ks.getKeyCode()); //s2 has key like 'a'
    if(s2.equals("Up") || s2.equals("Down") || s2.equals("Left") || s2.equals("Right"))
    int chcount=t.getCaretPosition();
    int linecount=t.getLineOfOffset(chcount)+1;
    output.setText("Character count : "+chcount+" Line Number : "+linecount);
    boolean flag=true;
    String search;
         if(s1.equals("Ctrl+Shift")) // Required
              output.setText("Looking for Macro ...");          
              if(s2.equals("S"))
              t.insert("\tSystem.out.println(\"\");",t.getCaretPosition());
              output.setText("Macro : Insert System.out.println() method.");          
              else if(s2.equals("C")) // Create a default constructor
              if(file.equals("Untitled"))
              flag=save_doc_as();
              if(flag)
              int pos_dot=file.indexOf('.');
              char class_name[]=file.toCharArray();
              String class_name_string=new String(class_name,0,pos_dot);
              t.insert("public "+class_name_string+"()\n\t{\n\n\t}",t.getCaretPosition());
              output.setText("Macro : Insert Default Constructor.");          
              else if(s2.equals("M"))
              t.insert("\tpublic static void main(String arg[])\n\t{\n\n\t}",t.getCaretPosition());
              output.setText("Macro : Insert Main method.");          
              else if(s2.equals("T"))
              t.insert("try\n{\n\n}\n\ncatch(Exception e)\n{\n\te.printStackTrace();\n}",t.getCaretPosition());
              output.setText("Macro : Insert try-catch block.");                              }
         }// Macro check end ctrl+alt
         // Additional check using only alt.
         else if(s1.equals("Alt"))
              if(s2.equals("F"))
              search=mw.jt.getSelectedText();
              if(search!=null)
              findString(search);
         } // Alt check
    }//try
    catch(Exception e)
         output.setText("Cannot find the Error Region.");
    }// Function end
    }/* End of Keylisten */
    public void findString(String search)
    try
    boolean found=false;
              String lineToFind=search;
              if(lineToFind==null)
              return;
              for(int i=0;i<t.getLineCount();i++)
              int offset=t.getLineStartOffset(i);
              String lineInArea=t.getText(offset,lineToFind.length());
              output.setText("Currently Looking ... "+lineInArea);
              if(lineInArea.equals(lineToFind))
              t.requestFocus();
              t.select(offset,offset+lineToFind.length());
              output.setText("Required Line Detected.");
              found=true;
              break;
              }//for loop
              if(found==false)
              output.setText("Cannot find Required Line.");
              found=false;
    catch(BadLocationException be)
         output.setText("Cannot find the Error Region.");
    }// end of find error.
    //Window Listener
    public class Winlis extends WindowAdapter
    public void windowClosing(WindowEvent we)
    askexit();
    //Document Listener
    public class docListen implements DocumentListener
    public void changedUpdate(DocumentEvent de)
    try
    char_changed=1;
    setTitle(file+" <changed> - JCompile");
    //setIcon(new ImageIcon("./images/save.gif");
    int chcount=t.getCaretPosition();
    int linecount=t.getLineOfOffset(chcount)+1;
    output.setText("Character count : "+chcount+" Line Number : "+linecount);
    catch(BadLocationException be)
    output.setText("Character count : "+t.getCaretPosition());
    public void insertUpdate(DocumentEvent de)
    try
    char_changed=1;
    setTitle(file+" <changed> - JCompile");
    //setIcon(new ImageIcon("./images/save.gif");
    int chcount=t.getCaretPosition();
    int linecount=t.getLineOfOffset(chcount)+1;
    output.setText("Character count : "+chcount+" Line Number : "+linecount);
    catch(BadLocationException be)
    output.setText("Character count : "+t.getCaretPosition());
    public void removeUpdate(DocumentEvent de)
    try
    char_changed=1;
    setTitle(file+" <changed> - JCompile");
    //setIcon(new ImageIcon("./images/save.gif");
    int chcount=t.getCaretPosition();
    int linecount=t.getLineOfOffset(chcount)+1;
    output.setText("Character count : "+chcount+" Line Number : "+linecount);
    catch(BadLocationException be)
    output.setText("Character count : "+t.getCaretPosition());
    }//Document Listener
    // Action Listener
    public class actListen implements ActionListener
    //Action listener
    public void actionPerformed(ActionEvent ae)
    String str=(String)ae.getActionCommand();
    int command_number=0;
    for(int i=0;i<20;i++)
    if(str.equals(menucomm[i]))
    command_number=i;
    break;
    switch(command_number)
         case 0:
         if(char_changed==1)
         int ch=JOptionPane.showOptionDialog(null,"Save Changes you made to "+file+" ?","Confirm",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);
         if(ch==0)
         save_doc();     
         t.setText("");
         char_changed=0;
         setTitle("Untitled");
         file="Untitled";
         remove();
         undo.discardAllEdits();
         break;
         case 1:
         //open_doc();
         int ch=2;
         if(char_changed==1)
         ch=JOptionPane.showOptionDialog(null,"Save Changes you made to "+file+" ?","Confirm",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);
              if(ch==0)
              save_doc_as();
         t.setText("");
         FileDialog fd=new FileDialog(jc,"Open a file",FileDialog.LOAD);
         fd.setVisible(true);
         file=fd.getFile();
         // Support for class files also
         int pos_dot=file.indexOf('.');
         ext=file.substring(pos_dot+1,file.length());
         if(ext.equalsIgnoreCase("class")) // it is a class file
         try
         Runtime r=Runtime.getRuntime();
         String comm="jad.exe -s .java "+file;
         r.exec(comm);
         file=file.substring(0,pos_dot)+".java";
         catch(Exception e)
         output.setText("Some error has occured in Decompiling the class file.");
         Dir=fd.getDirectory();
         if(file!=null)
         Thread ofile=new openFile();
         ofile.start();
         dp.setVisible(false);
         remove();
         break;
         case 2:
         // Save
         save_doc();
         break;
         case 3:
         save_doc_as();
         break;     
         case 4:
         // Exit
         askexit();
         break;
         case 5:
         t.cut();
         break;
         case 6:
         t.copy();
         break;
         case 7:
         t.paste();
         break;
         case 8:
         t.selectAll();
         break;
         case 9: //comment
         String otext=t.getSelectedText();
         if(otext!=null)
         String ntext="/*\n"+otext+"\n*/";
         t.replaceSelection(ntext);
         break;
         case 10:
         if(char_changed==1)
         save_doc();
         output.setText("Compiling "+file+" ...");
         compileit();
         break;
         case 11:
         if(char_changed==1)
         compileit();
         if(file.equals("Untitled"))
         save_doc_as();
         compileit();
         else
         output.setText("Executing "+file+" ...");
         run_program();
         break;
         case 12: //about
         JOptionPane.showMessageDialog(null, "Jcom - IDE for Java beta 1.0.\nVisit www.geocities.com/prabhus14 for updates.", "About",JOptionPane. INFORMATION_MESSAGE);           
         break;
         case 13: //Short Cut List
         mw.setVisible(true);
    mw.setTitle("Shortcut keys List.");
         mw.jt.setText("Shortcut Keys for Jcom.\nRight now only some of them are implemented.\nIn later versions users can customise these keys(called \"macros\" in Jcom) and can also add new ones!");
         mw.jt.append("\nMacros begin with Ctrl+Shift or Alt alone.\n\n");
         mw.jt.append("Ctrl+Shift+S\tTo insert System.out.println() method.\n");
         mw.jt.append("Ctrl+Shift+C\tTo create the default constructor for your class.\n");
         mw.jt.append("Ctrl+Shift+M\tTo insert main() method.\n");
         mw.jt.append("Ctrl+Shift+T\tTo insert try-catch block.\n");
         mw.jt.append("\nThe following macro is quite different and will differentiate Jcom from any other IDE.\n");
         mw.jt.append("\nAfter compiling if you get any errors then the console window will automatically appear with the messages.\n");     
         mw.jt.append("1. Select the line in the Error Message.(using mouse of course)\n");
         mw.jt.append("2. Press Alt+F or Right Click.\n");
         mw.jt.append("3. You will see the Error Region selected in your code.\n");
         mw.jt.append("Remember you must select right from the beginning of the line.\nRead Readme.html for more guidance.\n");     
         break;
         case 14:
         if(undo.canUndo())
              undo.undo();
              output.setText(undo.getUndoPresentationName());
         break;
         case 15:
         if(undo.canRedo())
              undo.redo();
              output.setText(undo.getRedoPresentationName());
         break;
         case 16: //Bookmark
         addNew();
         break;
    }/*End of action listener*/
    }//Action Listener
    // Mouse Listener
    class mouseListen extends MouseAdapter
    String search;
    public void mouseClicked(MouseEvent me)
    String vers = System.getProperty("java.version");
    if(vers.compareTo("1.1.2")>0)
    if(me.getButton()==3)
         search=mw.jt.getSelectedText();
         if(search!=null)
         findString(search);
    }//mouse listener
    // A thread for opening file.
    protected class openFile extends Thread
    openFile()
    setPriority(7);
    public void run()
    try
         int count=0;
         File fil1=new File(Dir,file);
         dp.setVisible(true);
         int factor=(int)fil1.length()/45;
         int i=1;
         FileInputStream textfile=new FileInputStream(fil1);
         DataInputStream dai=new DataInputStream(textfile);
         String S=dai.readLine();
         count+=S.length();
         dp.jl.setText("Lines Loaded : "+i++);
         if(ext.equals("class"))
         t.setText("/* Jcom - IDE for Java.\nVisit www.geocities.com/prabhus14 for updates.\n*/\n");
         while(S != null)
         if(ext.equals("class"))
         if(i>5)
         t.append(S+"\n");
         else
         t.append(S+"\n");
         S=dai.readLine();
         count+=S.length();
         progress.setValue((int)count/factor);
         dp.jl.setText("Lines Loaded : "+i++);
         }//while
         progress.setValue(45);
         dp.setVisible(false);
         setTitle(file+" - JCompile");
         catch(Exception ie)
         dp.setVisible(false);
    output.setText(file+" Total lines : "+t.getLineCount());
    return;
    }//End of run
    }//End of thread     
    // A class simulating Status Bar
    class StatusBar extends JComponent
    public StatusBar()
         super();
         setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
    public void paint(Graphics g)
    super.paint(g);
    }//End of class StatusBar
    }/*End of class Jcom*/

    Hmm well my first reply didn't seem to make it.
    I would recommend Castor if you are talking about supporting XML to save your Java Objects. Castor is a great XML-Java data binding tool that I personally love. You can just write a map between the XML and java elements and it can marshal and unmarshal for you. JAXB (Java API fo XML Binding) can do the same thing but you have to build the classes from a schema you can't just supply a map for it (so you might have to rework your classes). If you mean that you want to edit XML directly in the IDE then you might want to look at the DOM (Document Object Model), its memory intensive though.

  • Help:UIModel.xml file for ADF Tree with three level depth

    Hello,
    I am trying to create a DCTree with structure like this:
    root....branch1----child11,child12
    ..........branch2......branch21---child212,child212
    ............................branch22---child221,child222
    Because I can not create more than one binding rule due to the problem that "Add New Rule" button disappears after the first rule is created when I use the tool under Createbinding/Input/Tree to create the DCTree.
    Could somebody post or send me a script of the UIModel.xml file of the tree structure above so that I can work around this problem?
    Thanks in advance,
    Deborah

    Hi,
    I haven't test it for more than 3 layers but I have never seen this limitation mantioned anywhere.
    I used HGrid and this is my code:
    1. UIX file (the relevant part highlighted):
    <?xml version = '1.0' encoding = 'windows-1252'?>
    <page xmlns="http://xmlns.oracle.com/uix/controller"
    xmlns:ui="http://xmlns.oracle.com/uix/ui"
    xmlns:data="http://xmlns.oracle.com/uix/ui"
    xmlns:ctrl="http://xmlns.oracle.com/uix/controller"
    xmlns:html="http://www.w3.org/TR/REC-html40" expressionLanguage="el"
    xmlns:myTemplate="test">
    <templates xmlns="http://xmlns.oracle.com/uix/ui">
    <templateImport source="baseTemplate.uit"/>
    </templates>
    <content>
    <dataScope xmlns="http://xmlns.oracle.com/uix/ui">
    <provider>
    <!-- Add DataProviders (<data> elements) here -->
    </provider>
    <contents>
    <document>
    <metaContainer>
    <!-- Set the page title -->
    <head title=""/>
    </metaContainer>
    <contents>
    <body>
    <contents>
    <form name="form0">
    <contents>
    <myTemplate:baseTmpl title="" xmlns:myTemplate="test">
    <contents>
    <rowLayout>
    <contents>
    <link text="Bets View" destination="browseCustBets.do"/>
    <spacer width="10" height="10"/>
    <link text="Customer Bets" destination="viewCustBets.do"/>
    </contents>
    </rowLayout>
    <rowLayout>
    <contents>
    <spacer width="10" height="10"/>
    </contents>
    </rowLayout>
    <rowLayout>
    <contents>
    <hGrid id="hg1" treeData="${uix.data.treeData}" proxy="${uix.eventResult.hGridProxy}">
    <columnHeaderData>
    <col text="Email"/>
    <col text="Bet Date"/>
    <col text="ID"/>
    <col text="Is Winner"/>
    <col text="Amount"/>
    <col text="Rate"/>
    </columnHeaderData>
    <columnHeaderStamp>
    <text text="${uix.current.text}"/>
    </columnHeaderStamp>
    <columnFormats>
    <columnFormat columnDataFormat="textFormat" width="140"/>
    <columnFormat columnDataFormat="textFormat" width="160"/>
    <columnFormat columnDataFormat="textFormat" width="40"/>
    <columnFormat columnDataFormat="textFormat" width="70"/>
    <columnFormat columnDataFormat="textFormat" width="70"/>
    <columnFormat columnDataFormat="textFormat" width="40"/>
    </columnFormats>
    <contents>
    <text text="${uix.current.Email}"/>
    <text text="${uix.current.BetDate}"/>
    <text text="${uix.current.BetID}"/>
    <text text="${uix.current.IsWinner}"/>
    <text text="${uix.current.Amount}"/>
    <text text="${uix.current.Rate}"/>
    </contents>
    </hGrid>
    </contents>
    </rowLayout>
    </contents>
    <tabs/>
    <pageButtons/>
    <globalButtons/>
    <pageHeader/>
    <start/>
    <end/>
    <about/>
    <copyright/>
    <privacy/>
    <corporateBranding/>
    <productBranding/>
    </myTemplate:baseTmpl>
    <formValue name="${bindings.statetokenid}" value="${bindings.statetoken}" id="_uixState"/>
    </contents>
    </form>
    </contents>
    </body>
    </contents>
    </document>
    </contents>
    <provider>
    <data name="treeData">
    <method class="view.CreateTreeData" method="getTreeData"/>
    </data>
    </provider>
    </dataScope>
    </content>
    <handlers>
    <event name="*">
    <method class="view.BetDetailsAction" method="doHGridEvent"/>
    </event>
    </handlers>
    </page>
    2. CreateTreeData class:
    It has a static method getTreeData() that returns a DataObject containing the tree nodes. This methode is mentiond in <provider> node in UIX/XML.
    package view;
    import java.util.Enumeration;
    import model.*;
    import oracle.cabo.servlet.BajaContext;
    import oracle.cabo.servlet.ServletConstants;
    import oracle.cabo.servlet.ui.BajaRenderingContext;
    import oracle.cabo.ui.RenderingContext;
    import oracle.cabo.ui.UIConstants;
    import oracle.cabo.ui.data.DataObject;
    import oracle.cabo.ui.data.servlet.HttpSessionDataObject;
    import oracle.cabo.ui.data.tree.SimpleTreeData;
    import oracle.jbo.ApplicationModule;
    import oracle.jbo.ViewObject;
    import oracle.adf.model.BindingContext;
    import oracle.adf.model.binding.DCDataControl;
    //import oracle.jbo.common.Configuration;
    import javax.servlet.http.HttpSession;
    import oracle.jbo.client.Configuration;
    public class CreateTreeData
    public CreateTreeData()
    public static DataObject getTreeData(RenderingContext context, String namespace, String name)
    // create root node
    SimpleTreeData root = new SimpleTreeData();
    int BetID = 0;
    // get the parameter from url
    BajaContext bContext = (BajaContext) context.getProperty(ServletConstants.BAJA_NAMESPACE,
    BajaRenderingContext.BAJA_CONTEXT_PROPERTY);
    HttpSession session = bContext.getServletRequest().getSession(true);
    try
    //BetID = new Integer(( bContext.getServletRequest( ) ).getParameter( "BetID" )).intValue();
    String s = ( bContext.getServletRequest( ) ).getQueryString();
    BetID = new Integer(s).intValue();
    session.setAttribute("BetID", s);
    //BetID = new Integer(session.getAttribute("BetID").toString()).intValue();
    catch ( Exception ex)
    // log the error on the console
    BetID = new Integer(session.getAttribute("BetID").toString()).intValue();
    //System.out.println( "Parameters cannot be retrieved" );
    //System.out.println( ex.getMessage() );
    String amDef = "model.AppModule";
    String config = "AppModuleLocal";
    ApplicationModule am = Configuration.createRootApplicationModule(amDef, config);
    AppModuleImpl myAm = (AppModuleImpl)am;
    root = myAm.createNodesData(BetID);
    myAm.remove();
    Configuration.releaseRootApplicationModule(am,true);
    // return the tree
    return root;
    3. createNodesData(int Id) is the actual function that creates the data structure containing the nodes.
    It is in AppModule. The actual tree is kept in one table and every node knows its parent ID. There is no limitation in depth.
    This function is called recursively until the tree is finished and the parameter Id is the Id of the parent node that I want to be listed. Tne top parent nodes has null in ParentID field.
    public SimpleTreeData createNodesData(int Id)
    SimpleTreeData tData = new SimpleTreeData();
    String baseSQL =
    "SELECT Bet.ID, Bet.CUST_LOGIN_ID, Bet.BET_CLASS_ID, Bet.PARENT_BET_ID," +
    "Bet.CHAMPIONSHIP_ID, Bet.AMOUNT, Bet.WIN_RATE, Bet.IS_WINNER, Bet.BET_DATE, " +
    "BetClass.NAME, CustLogin.EMAIL, CustLogin.ID AS CUST_LOGIN_ID " +
    "FROM BET Bet, CUST_LOGIN CustLogin, BET_CLASS BetClass " +
    "WHERE (Bet.CUST_LOGIN_ID = CustLogin.ID) AND (Bet.BET_CLASS_ID = BetClass.ID) ";
    if(Id!=0){
    String sqlStmt = baseSQL + " AND (Bet.ID = '"+ Id +"')";
    ViewObject betVo = this.createViewObjectFromQueryStmt("betVo", sqlStmt);
    betVo.executeQuery();
    if(betVo.hasNext())
    //SimpleTreeData tData = new SimpleTreeData();
    tData.setText(betVo.first().getAttribute("NAME").toString());
    if(betVo.first().getAttribute("PARENT_BET_ID")==null)
    tData.put("Email", betVo.first().getAttribute("EMAIL").toString());
    tData.put("BetDate", betVo.first().getAttribute("BET_DATE").toString());
    tData.put("BetID", betVo.first().getAttribute("ID").toString());
    tData.put("IsWinner", betVo.first().getAttribute("IS_WINNER").toString());
    tData.put("Amount", betVo.first().getAttribute("AMOUNT").toString());
    tData.put("Rate", betVo.first().getAttribute("WIN_RATE").toString());
    if(Integer.parseInt(betVo.first().getAttribute("BET_CLASS_ID").toString())>1){
    tData.setExpandable(UIConstants.EXPANDABLE_EXPANDED);
    betVo.remove();
    String sqlStmt = baseSQL + " AND (Bet.PARENT_BET_ID = '"+ Id +"')";
    ViewObject betVo = this.createViewObjectFromQueryStmt("betVo" + Id, sqlStmt);
    betVo.executeQuery();
    while(betVo.hasNext()){
    tData.addChild(createNodesData(Integer.parseInt(betVo.next().getAttribute("ID").toString())));
    betVo.remove();
    return tData;
    Hope this will help...

  • I need help with XML coding. Please reply

    I recently created a podcast. I submitted it to iTunes. All was successful but the download speed was Horrible. I had about 10 people test it -- after that the ISP I use shifted my Domain to a Streaming Server. The Tech then changed the specs to my iTunes <guid>. I updated the info on iTunes, but since then no one has been able to download it from iTunes. The RSS feed on the page ( website) works, but if I type it in to an RSS feed, I am even having problems getting it to recognize it.
    I feel the main problem is that the shifting of servers and changing the <guid> caused a major problem. Since my ISP and Tech rep is mainly Windows oriented, his expertise with Apple is very little. ( As is mine ).
    I will insert a snippet of the code and ask for Help... I really need to fix this, because I have secured another Domain, and wish to create a new podcast.
    (BTW if any one listens to any of them, I now have a mixing board and Mic.. so I am trying to better it.)
    Website: www.riverratdoc.com
    snippet of XML code
    <enclosure url="http://stream.riverratdoc.com/RiverratDoc/episode1a.mp3" length="9551933" type="audio/mpeg" />
    <guid isPermaLink="false">09072010EPS01</guid><!-- just make unique per episode -->
    <pubDate>Fri, 9 Jul 2010 12:40:01 GMT</pubDate>
    Thank you in advance
    River Rat Doc

    The problem doesn't lie with your feed, although it does contain an error - you have given a non-existent sub-category. You need to stick to the categories and sub-categories listed here:
    http://www.apple.com/itunes/podcasts/specs.html#categories
    Subscribing to your feed from the iTunes Store page work as such, but the episodes throw up an error message. The problem lies with your episode media files: you are trying to stream them. Pasting the URL into a browser produces a download (where it should play the file) of a small file which does not play and in fact is a text file containing (in the case of ep.2) this:
    [Reference]
    Ref1=http://stream.riverratdoc.com/RiverratDoc/episode2.mp3?MSWMExt=.asf
    Ref2=http://70.33.177.247:80/RiverratDoc/episode2.mp3?MSWMExt=.asf
    You must provide a direct link to the actual mp3 file. Streaming won't work. The test is that if you paste the URL of the media file (as given in the feed) into the address bar of a browser it should play the file.

  • Help with XML - which is better - Help needed

    Current version of Oracle:
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE 11.2.0.1.0 Production
    TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production
    I'm new to XML & this is my first post.
    Background: I have a "few" relational tables which are designed to assist the form scraping and to store the values as Key-Value-Attribute from the UI capture. (the change to the design is not possible at this time). I've also built the "normalized" schema which will hold the normalized data from this form-scrapping schema.
    In order to achive this: I plan on having (1) XML view which the UI will call and then it will be inserted/updated in the normalized schema (2) to be able to use the same XML by the BI publisher for reporting (3) end user query this form-scraping db to view as normalized data.
    Following are my thoughts about the approach & please correct & guide if my understanding/approach is wrong.
    After some good reading on this forum and other materials, I've come up with the below mentioned XML generation method. How can I convert this XML "record" such that it can satisfy the above stated.
    output:
    <?xml version="1.0"?>
    <ROWSET>
    <ROW>
      <FORM_TYPE_ID>900</FORM_TYPE_ID>
      <SYSTEM_NAME>HAZMAT_ENROLLMENT</SYSTEM_NAME>
      <FORM_TYPE>ENR-HAZMAT</FORM_TYPE>
      <FORM_ID>2371370</FORM_ID>
      <SUBMISSION_TYPE_ID>60</SUBMISSION_TYPE_ID>
      <FILING_DATE>29-APR-11</FILING_DATE>
      <SECTION>
       <SECTION_ROW>
        <SECTION_ID>6750</SECTION_ID>
        <SECTION_NAME>Personal Information</SECTION_NAME>
        <ATTRIBUTE>
         <ATTRIBUTE_ROW>
          <SRC>FRM_RSP</SRC>
          <ATTR_ID>30001</ATTR_ID>
          <ATTR_NAME>ENROLLEE_FIRST_NAME</ATTR_NAME>
          <ATTR_DESC>Enrollee&apos;s First Name</ATTR_DESC>
          <ATTR_VAL>Test First Name</ATTR_VAL>
         </ATTRIBUTE_ROW>
         <ATTRIBUTE_ROW>
          <SRC>FRM_RSP</SRC>
          <ATTR_ID>30002</ATTR_ID>
          <ATTR_NAME>ENROLLEE_MIDDLE_INIT</ATTR_NAME>
          <ATTR_DESC>Enrollee&apos;s Middle Initial</ATTR_DESC>
          <ATTR_VAL>Test Middle Initial</ATTR_VAL>
         </ATTRIBUTE_ROW>
       </SECTION_ROW>
      </SECTION>
    </ROW>
    </ROWSET>
    Code:
    *(All REF_% tables are lookup and FRM_RESPONSE is a KVA capture table and TBL_RESPONSE is also a KVA capture only used if the input is table wise (rows X columns))*
    FORM is made up of SECTIONs (1-to-many), SECTIONs contain ATTR_IDs (question ids, 1-to-many), %RESPONSE is always linked to an ATTR_ID
    CREATE OR REPLACE function DEVDBA.gen_xmlstr (p_form_id form.form_id%type) return clob as
    str clob := '
    SELECT rft.form_type_id, rft.system_name,rft.form_type, f.form_id, f.submission_type_id, f.sp_id,
           f.filing_date, f.tracking_num, f.spplmntl_num, f.parent_form_id, f.created_date, f.created_by,
           f.updated_date, f.updated_by,
           CURSOR(SELECT rs.section_id,
                         rs.section_name,
                         CURSOR(SELECT ''FRM_RSP'' src, fr.frm_response_id, ra.attr_id, ra.attr_name, ra.attr_desc, fr.attr_val
                                  FROM frm_response fr, ref_attr ra, ref_section_attr rsa
                                 WHERE fr.form_id = f.form_id
                                 AND fr.attr_id = rsa.attr_id
                                 AND fr.form_section_id = rsa.form_section_id
                                 AND fr.attr_id = ra.attr_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP1'' src, tr.tbl_response_id, tr.col_attr_id1, ra.attr_name, ra.attr_desc, col_attr_val1
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND tr.col_attr_id1 = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP2'' src, tr.tbl_response_id, tr.col_attr_id2, ra.attr_name, ra.attr_desc, col_attr_val2
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND tr.col_attr_id2 = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP3'' src, tr.tbl_response_id, TO_NUMBER(tr.col_attr_id3), ra.attr_name, ra.attr_desc, col_attr_val3
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND TO_NUMBER(tr.col_attr_id3) = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP4'' src, tr.tbl_response_id, tr.col_attr_id4, ra.attr_name, ra.attr_desc, col_attr_val4
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND tr.col_attr_id4 = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP5'' src, tr.tbl_response_id, tr.col_attr_id5, ra.attr_name, ra.attr_desc, col_attr_val5
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND tr.col_attr_id5 = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP6'' src, tr.tbl_response_id, tr.col_attr_id6, ra.attr_name, ra.attr_desc, col_attr_val6
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND tr.col_attr_id6 = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP7'' src, tr.tbl_response_id, tr.col_attr_id7, ra.attr_name, ra.attr_desc, col_attr_val7
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND tr.col_attr_id7 = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP8'' src, tr.tbl_response_id, tr.col_attr_id8, ra.attr_name, ra.attr_desc, col_attr_val8
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND tr.col_attr_id8 = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP9'' src, tr.tbl_response_id, tr.col_attr_id9, ra.attr_name, ra.attr_desc, col_attr_val9
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND tr.col_attr_id9 = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                                UNION
                                SELECT ''TBL_RSP10'' src, tr.tbl_response_id, tr.col_attr_id10, ra.attr_name, ra.attr_desc, col_attr_val10
                                  FROM tbl_response tr, ref_attr ra, ref_section_attr rsa
                                 WHERE tr.form_id = f.form_id
                                 AND tr.col_attr_id10 = ra.attr_id
                                 AND tr.form_section_id = rsa.form_section_id
                                 AND rsa.form_section_id = rfs.form_section_id
                           attribute
                    FROM ref_section rs, ref_form_section rfs
                   WHERE rs.section_id = rfs.section_id
                   AND   rfs.form_type_id = f.form_type_id
                  ORDER BY rs.section_id, rfs.form_section_id)
             section
      FROM ref_form_type rft, form f
    WHERE rft.form_type_id = f.form_type_id
    AND f.form_id = ' || p_form_id; --2371370'';
    begin
      return dbms_xmlgen.getxml(str);
    end gen_xmlstr;
    Invocation:
    select gen_xmlstr(2371370)
    from dual;
    Below is the execution plan. Can this be better?
    Execution Plan
    Plan hash value: 2652539008
    | Id  | Operation                        | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT                 |                      |     1 |    75 |     3   (0)| 00:00:01 |
    |   1 |  SORT UNIQUE                     |                      |    11 |  1024 |    40  (88)| 00:00:01 |
    |   2 |   UNION-ALL                      |                      |       |       |            |          |
    |   3 |    NESTED LOOPS                  |                      |       |       |            |          |
    |   4 |     NESTED LOOPS                 |                      |     1 |    91 |     5   (0)| 00:00:01 |
    |   5 |      NESTED LOOPS                |                      |     1 |    82 |     3   (0)| 00:00:01 |
    |*  6 |       TABLE ACCESS BY INDEX ROWID| FRM_RESPONSE         |     1 |    25 |     2   (0)| 00:00:01 |
    |*  7 |        INDEX RANGE SCAN          | FK3_FRM_RESPONSE     |    20 |       |     1   (0)| 00:00:01 |
    |   8 |       TABLE ACCESS BY INDEX ROWID| REF_ATTR             |     1 |    57 |     1   (0)| 00:00:01 |
    |*  9 |        INDEX UNIQUE SCAN         | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |* 10 |      INDEX RANGE SCAN            | FK2_REF_SECTION_ATTR |     2 |       |     1   (0)| 00:00:01 |
    |* 11 |     TABLE ACCESS BY INDEX ROWID  | REF_SECTION_ATTR     |     1 |     9 |     2   (0)| 00:00:01
    |  12 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  13 |     NESTED LOOPS                 |                      |     1 |   105 |     2   (0)| 00:00:01 |
    |  14 |      NESTED LOOPS                |                      |     1 |    48 |     2   (0)| 00:00:01 |
    |* 15 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 16 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    44 |     1   (0)| 00:00:01 |
    |* 17 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 18 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  19 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     0   (0)| 00:00:01 |
    |  20 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  21 |     NESTED LOOPS                 |                      |     1 |   100 |     2   (0)| 00:00:01 |
    |  22 |      NESTED LOOPS                |                      |     1 |    43 |     2   (0)| 00:00:01 |
    |* 23 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 24 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    39 |     1   (0)| 00:00:01 |
    |* 25 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 26 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  27 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     0   (0)| 00:00:01 |
    |  28 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  29 |     NESTED LOOPS                 |                      |     1 |    86 |     3   (0)| 00:00:01 |
    |  30 |      NESTED LOOPS                |                      |     1 |    29 |     2   (0)| 00:00:01 |
    |* 31 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 32 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    25 |     1   (0)| 00:00:01 |
    |* 33 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 34 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  35 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     1   (0)| 00:00:01 |
    |  36 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  37 |     NESTED LOOPS                 |                      |     1 |    93 |     2   (0)| 00:00:01 |
    |  38 |      NESTED LOOPS                |                      |     1 |    36 |     2   (0)| 00:00:01 |
    |* 39 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 40 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    32 |     1   (0)| 00:00:01 |
    |* 41 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 42 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  43 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     0   (0)| 00:00:01 |
    |  44 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  45 |     NESTED LOOPS                 |                      |     1 |    93 |     2   (0)| 00:00:01 |
    |  46 |      NESTED LOOPS                |                      |     1 |    36 |     2   (0)| 00:00:01 |
    |* 47 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 48 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    32 |     1   (0)| 00:00:01 |
    |* 49 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 50 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  51 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     0   (0)| 00:00:01 |
    |  52 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  53 |     NESTED LOOPS                 |                      |     1 |    90 |     2   (0)| 00:00:01 |
    |  54 |      NESTED LOOPS                |                      |     1 |    33 |     2   (0)| 00:00:01 |
    |* 55 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 56 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    29 |     1   (0)| 00:00:01 |
    |* 57 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 58 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  59 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     0   (0)| 00:00:01 |
    |  60 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  61 |     NESTED LOOPS                 |                      |     1 |    95 |     2   (0)| 00:00:01 |
    |  62 |      NESTED LOOPS                |                      |     1 |    38 |     2   (0)| 00:00:01 |
    |* 63 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 64 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    34 |     1   (0)| 00:00:01 |
    |* 65 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 66 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  67 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     0   (0)| 00:00:01 |
    |  68 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  69 |     NESTED LOOPS                 |                      |     1 |    90 |     2   (0)| 00:00:01 |
    |  70 |      NESTED LOOPS                |                      |     1 |    33 |     2   (0)| 00:00:01 |
    |* 71 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 72 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    29 |     1   (0)| 00:00:01 |
    |* 73 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 74 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  75 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     0   (0)| 00:00:01 |
    |  76 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  77 |     NESTED LOOPS                 |                      |     1 |    90 |     2   (0)| 00:00:01 |
    |  78 |      NESTED LOOPS                |                      |     1 |    33 |     2   (0)| 00:00:01 |
    |* 79 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 80 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    29 |     1   (0)| 00:00:01 |
    |* 81 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 82 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  83 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     0   (0)| 00:00:01 |
    |  84 |    NESTED LOOPS                  |                      |       |       |            |          |
    |  85 |     NESTED LOOPS                 |                      |     1 |    91 |     2   (0)| 00:00:01 |
    |  86 |      NESTED LOOPS                |                      |     1 |    34 |     2   (0)| 00:00:01 |
    |* 87 |       INDEX RANGE SCAN           | FK1_REF_SECTION_ATTR |     9 |    36 |     1   (0)| 00:00:01 |
    |* 88 |       TABLE ACCESS BY INDEX ROWID| TBL_RESPONSE         |     1 |    30 |     1   (0)| 00:00:01 |
    |* 89 |        INDEX RANGE SCAN          | FK1_TBL_RESPONSE     |     1 |       |     0   (0)| 00:00:01 |
    |* 90 |      INDEX UNIQUE SCAN           | PK_REF_ATTR          |     1 |       |     0   (0)| 00:00:01 |
    |  91 |     TABLE ACCESS BY INDEX ROWID  | REF_ATTR             |     1 |    57 |     0   (0)| 00:00:01 |
    |  92 |  SORT ORDER BY                   |                      |    20 |  1040 |     7  (29)| 00:00:01 |
    |* 93 |   HASH JOIN                      |                      |    20 |  1040 |     6  (17)| 00:00:01 |
    |  94 |    TABLE ACCESS BY INDEX ROWID   | REF_FORM_SECTION     |    20 |   200 |     2   (0)| 00:00:01 |
    |* 95 |     INDEX RANGE SCAN             | FK1_FORM_SECTION     |    20 |       |     1   (0)| 00:00:01 |
    |  96 |    TABLE ACCESS FULL             | REF_SECTION          |   100 |  4200 |     3   (0)| 00:00:01 |
    |  97 |  NESTED LOOPS                    |                      |     1 |    75 |     3   (0)| 00:00:01 |
    |  98 |   TABLE ACCESS BY INDEX ROWID    | FORM                 |     1 |    59 |     2   (0)| 00:00:01 |
    |* 99 |    INDEX UNIQUE SCAN             | PK_FORM              |     1 |       |     1   (0)| 00:00:01 |
    | 100 |   TABLE ACCESS BY INDEX ROWID    | REF_FORM_TYPE        |     5 |    80 |     1   (0)| 00:00:01 |
    |*101 |    INDEX UNIQUE SCAN             | PK_REF_FORM_TYPE     |     1 |       |     0   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       6 - filter("FR"."FORM_SECTION_ID"=:B1)
       7 - access("FR"."FORM_ID"=:B1)
       9 - access("FR"."ATTR_ID"="RA"."ATTR_ID")
      10 - access("FR"."ATTR_ID"="RSA"."ATTR_ID")
      11 - filter("RSA"."FORM_SECTION_ID"=:B1 AND "FR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      15 - access("RSA"."FORM_SECTION_ID"=:B1)
      16 - filter("TR"."COL_ATTR_ID1" IS NOT NULL AND "TR"."FORM_ID"=:B1)
      17 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      18 - access("TR"."COL_ATTR_ID1"="RA"."ATTR_ID")
      23 - access("RSA"."FORM_SECTION_ID"=:B1)
      24 - filter("TR"."COL_ATTR_ID2" IS NOT NULL AND "TR"."FORM_ID"=:B1)
      25 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      26 - access("TR"."COL_ATTR_ID2"="RA"."ATTR_ID")
      31 - access("RSA"."FORM_SECTION_ID"=:B1)
      32 - filter("TR"."FORM_ID"=:B1)
      33 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      34 - access("RA"."ATTR_ID"=TO_NUMBER("TR"."COL_ATTR_ID3"))
      39 - access("RSA"."FORM_SECTION_ID"=:B1)
      40 - filter("TR"."COL_ATTR_ID4" IS NOT NULL AND "TR"."FORM_ID"=:B1)
      41 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      42 - access("TR"."COL_ATTR_ID4"="RA"."ATTR_ID")
      47 - access("RSA"."FORM_SECTION_ID"=:B1)
      48 - filter("TR"."COL_ATTR_ID5" IS NOT NULL AND "TR"."FORM_ID"=:B1)
      49 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      50 - access("TR"."COL_ATTR_ID5"="RA"."ATTR_ID")
      55 - access("RSA"."FORM_SECTION_ID"=:B1)
      56 - filter("TR"."COL_ATTR_ID6" IS NOT NULL AND "TR"."FORM_ID"=:B1)
      57 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      58 - access("TR"."COL_ATTR_ID6"="RA"."ATTR_ID")
      63 - access("RSA"."FORM_SECTION_ID"=:B1)
      64 - filter("TR"."COL_ATTR_ID7" IS NOT NULL AND "TR"."FORM_ID"=:B1)
      65 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      66 - access("TR"."COL_ATTR_ID7"="RA"."ATTR_ID")
      71 - access("RSA"."FORM_SECTION_ID"=:B1)
      72 - filter("TR"."COL_ATTR_ID8" IS NOT NULL AND "TR"."FORM_ID"=:B1)
      73 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      74 - access("TR"."COL_ATTR_ID8"="RA"."ATTR_ID")
      79 - access("RSA"."FORM_SECTION_ID"=:B1)
      80 - filter("TR"."COL_ATTR_ID9" IS NOT NULL AND "TR"."FORM_ID"=:B1)
      81 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      82 - access("TR"."COL_ATTR_ID9"="RA"."ATTR_ID")
      87 - access("RSA"."FORM_SECTION_ID"=:B1)
      88 - filter("TR"."COL_ATTR_ID10" IS NOT NULL AND "TR"."FORM_ID"=:B1)
      89 - access("TR"."FORM_SECTION_ID"=:B1)
           filter("TR"."FORM_SECTION_ID"="RSA"."FORM_SECTION_ID")
      90 - access("TR"."COL_ATTR_ID10"="RA"."ATTR_ID")
      93 - access("RS"."SECTION_ID"="RFS"."SECTION_ID")
      95 - access("RFS"."FORM_TYPE_ID"=:B1)
      99 - access("F"."FORM_ID"=2371370)
    101 - access("RFT"."FORM_TYPE_ID"="F"."FORM_TYPE_ID")
    What tools/techniques are available to generate the XSLT? (use XMLSpy etc?), how to create a such that it can be as simple as "select from v_xml_view;" and be able to replace * with column names?*
    ==============================
    I've also tried the *SQL-XML extensions* but am stuck with the UNION PART (help is requested on how to union columns within the XMLAgg).
    {code}
    select
    xmlelement ("System",
    xmlforest(rft.form_type_id as "FormTypeID", rft.system_name as "SystemName", rft.form_type as "FormType", f.form_id as "FormID"),
    xmlelement("Sections",
    (select xmlagg(xmlelement("Section",
    xmlforest(rs.section_id as "SectionID", rs.section_name as "SectionName"),
    xmlelement("Attributes",
    (select xmlagg(xmlelement("Attr",
    xmlforest (rsa.attr_id as "AttrID", ra.attr_name as "AttrName", ra.attr_desc as "Attr_desc", fr.attr_val as "AttrValue")
    ) -- "attr"
    ) --xmlagg attr
    from ref_section_attr rsa, ref_attr ra, frm_response fr
    where rsa.attr_id = ra.attr_id
    and rsa.form_section_id = rfs.form_section_id
    and fr.form_id = f.form_id
    and fr.form_section_id = rsa.form_section_id
    and fr.attr_id = rsa.attr_id
    ) --attributes select
    ) -- attributes
    ) -- section elements
    ) -- xmlagg
    from ref_section rs, ref_form_section rfs
    where rs.section_id = rfs.section_id
    and rfs.form_type_id = f.form_type_id
    ) -- select query
    ) -- sections
    ) -- system
    as str
    from ref_form_type rft, FORM f
    where rft.form_type_id = f.form_type_id
    and f.form_id = 2371420;
    {code}
    *and the output is like:
    (I don't know how to format this for easy viewing!)*
    {code}
    <System><FormTypeID>900</FormTypeID><SystemName>HAZMAT_ENROLLMENT</SystemName><FormType>ENR-HAZMAT</FormType><FormID>2371420</FormID><Sections><Section><SectionID>6750</SectionID><SectionName>Personal Information</SectionName><Attributes><Attr><AttrID>30001</AttrID><AttrName>ENROLLEE_FIRST_NAME</AttrName><Attr_desc>Enrollee&apos;s First Name</Attr_desc><AttrValue>Enroll</AttrValue></Attr><Attr><AttrID>30002</AttrID><AttrName>ENROLLEE_MIDDLE_INIT</AttrName><Attr_desc>Enrollee&apos;s Middle Initial</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30003</AttrID><AttrName>ENROLLEE_LAST_NAME</AttrName><Attr_desc>Enrollee&apos;s Last Name</Attr_desc><AttrValue>User11</AttrValue></Attr><Attr><AttrID>30004</AttrID><AttrName>ENROLLEE_WORK_PHONE</AttrName><Attr_desc>Enrollee&apos;s Work Phone Number</Attr_desc><AttrValue>(703) 222-4444</AttrValue></Attr><Attr><AttrID>30005</AttrID><AttrName>ENROLLEE_FAX</AttrName><Attr_desc>Enrollee Fax Number</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30006</AttrID><AttrName>ENROLLEE_EXT</AttrName><Attr_desc>Enrollee&apos;s Work Extension</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30007</AttrID><AttrName>ENROLLEE_EMAIL</AttrName><Attr_desc>Enrollee&apos;s Email</Attr_desc><AttrValue>[email protected]</AttrValue></Attr><Attr><AttrID>30023</AttrID><AttrName>POC_TYPE</AttrName><Attr_desc>Point of Contact Type</Attr_desc><AttrValue>Consultant</AttrValue></Attr><Attr><AttrID>30008</AttrID><AttrName>ENROLLEE_MAIL_ADDR_1</AttrName><Attr_desc>Enrollee&apos;s Mailing Address #1</Attr_desc><AttrValue>123 Main St</AttrValue></Attr><Attr><AttrID>30009</AttrID><AttrName>ENROLLEE_MAIL_ADDR_2</AttrName><Attr_desc>Enrollee&apos;s Mailing Address #2</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30010</AttrID><AttrName>ENROLLEE_CITY</AttrName><Attr_desc>Enrollee&apos;s City</Attr_desc><AttrValue>Herndon</AttrValue></Attr><Attr><AttrID>30011</AttrID><AttrName>ENROLLEE_STATE</AttrName><Attr_desc>Enrollee&apos;s State</Attr_desc><AttrValue>VA</AttrValue></Attr><Attr><AttrID>30012</AttrID><AttrName>ENROLLEE_ZIP</AttrName><Attr_desc>Enrollee&apos;s Zip</Attr_desc><AttrValue>28408</AttrValue></Attr><Attr><AttrID>30013</AttrID><AttrName>ENROLLEE_USER_NAME</AttrName><Attr_desc>Enrollee&apos;s User Name</Attr_desc><AttrValue>enrolluser11</AttrValue></Attr></Attributes></Section><Section><SectionID>6800</SectionID><SectionName>Company Information</SectionName><Attributes><Attr><AttrID>30014</AttrID><AttrName>DUN_BRADSTREET_NUM</AttrName><Attr_desc>Company&apos;s Dun and Bradstreet #</Attr_desc><AttrValue>198455201</AttrValue></Attr></Attributes></Section><Section><SectionID>6850</SectionID><SectionName>Points of Contact</SectionName><Attributes></Attributes></Section><Section><SectionID>6900</SectionID><SectionName>Enrollment Verification</SectionName><Attributes></Attributes></Section><Section><SectionID>6950</SectionID><SectionName>Enrollment Confirmation</SectionName><Attributes></Attributes></Section></Sections></System>
    {code}
    *The execution plan:*
    {code}
    Execution Plan
    Plan hash value: 2641045985
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    ------------

    Thanks for the data.
    I thought you would have included data from TBL_RESPONSE, as the interesting part is how to deal with this "special" design ;)
    So, to run some tests, I've generated the following data for FORM_SECTION_ID 5350 and 5360 :
    insert into tbl_response (FORM_ID, FORM_SECTION_ID, COL_ATTR_ID1, COL_ATTR_VAL1, COL_ATTR_ID2, COL_ATTR_VAL2, COL_ATTR_ID3, COL_ATTR_VAL3, COL_ATTR_ID4, COL_ATTR_VAL4, COL_ATTR_ID5, COL_ATTR_VAL5, COL_ATTR_ID6, COL_ATTR_VAL6, COL_ATTR_ID7, COL_ATTR_VAL7, COL_ATTR_ID8, COL_ATTR_VAL8, COL_ATTR_ID9, COL_ATTR_VAL9, COL_ATTR_ID10, COL_ATTR_VAL10)
    values (2371420, 5350, 30000, '05/03/2011', 30001, 'John', '30002', 'J', 30003, 'Doe', 30004, '(555) 123-1234', 30005, '(555) 123-1235', 30006, '1234567', 30007, '[email protected]', 30008, '10 Maple Street', 30009, '.');
    insert into tbl_response (FORM_ID, FORM_SECTION_ID, COL_ATTR_ID1, COL_ATTR_VAL1, COL_ATTR_ID2, COL_ATTR_VAL2, COL_ATTR_ID3, COL_ATTR_VAL3, COL_ATTR_ID4, COL_ATTR_VAL4, COL_ATTR_ID5, COL_ATTR_VAL5, COL_ATTR_ID6, COL_ATTR_VAL6, COL_ATTR_ID7, COL_ATTR_VAL7, COL_ATTR_ID8, COL_ATTR_VAL8, COL_ATTR_ID9, COL_ATTR_VAL9, COL_ATTR_ID10, COL_ATTR_VAL10)
    values (2371420, 5350, 30011, 'MA', 30012, '02668', '30013', 'jdoe', null, '', null, '', null, '', null, '', null, '', null, '', null, '');
    insert into tbl_response (FORM_ID, FORM_SECTION_ID, COL_ATTR_ID1, COL_ATTR_VAL1, COL_ATTR_ID2, COL_ATTR_VAL2, COL_ATTR_ID3, COL_ATTR_VAL3, COL_ATTR_ID4, COL_ATTR_VAL4, COL_ATTR_ID5, COL_ATTR_VAL5, COL_ATTR_ID6, COL_ATTR_VAL6, COL_ATTR_ID7, COL_ATTR_VAL7, COL_ATTR_ID8, COL_ATTR_VAL8, COL_ATTR_ID9, COL_ATTR_VAL9, COL_ATTR_ID10, COL_ATTR_VAL10)
    values (2371420, 5360, 30014, '123456789', 30015, 'My Company', '30016', '50 Main Street', 30017, '.', 30018, 'Marstons Mills', 30019, 'MA', 30020, '02648', 30021, '(555) 123-1236', null, '', null, '');And here's the query :
    WITH attr_unpivot AS (
      SELECT form_section_id
           , attr_val
      FROM (
        SELECT form_section_id
             , XMLForest(col_attr_id1 as "AttrID", col_attr_val1 as "AttrValue") as attr01
             , XMLForest(col_attr_id2 as "AttrID", col_attr_val2 as "AttrValue") as attr02
             , XMLForest(col_attr_id3 as "AttrID", col_attr_val3 as "AttrValue") as attr03
             , XMLForest(col_attr_id4 as "AttrID", col_attr_val4 as "AttrValue") as attr04
             , XMLForest(col_attr_id5 as "AttrID", col_attr_val5 as "AttrValue") as attr05
             , XMLForest(col_attr_id6 as "AttrID", col_attr_val6 as "AttrValue") as attr06
             , XMLForest(col_attr_id7 as "AttrID", col_attr_val7 as "AttrValue") as attr07
             , XMLForest(col_attr_id8 as "AttrID", col_attr_val8 as "AttrValue") as attr08
             , XMLForest(col_attr_id9 as "AttrID", col_attr_val9 as "AttrValue") as attr09
             , XMLForest(col_attr_id10 as "AttrID", col_attr_val10 as "AttrValue") as attr10
        FROM tbl_response
        WHERE form_id = 2371420
      UNPIVOT (
        attr_val FOR attr_pos IN (attr01,attr02,attr03,attr04,attr05,attr06,attr07,attr08,attr09,attr10)
      UNION ALL
      SELECT form_section_id
           , XMLForest(fr.attr_id as "AttrID", fr.attr_val as "AttrValue")
      FROM frm_response fr
      WHERE fr.form_id = 2371420
    SELECT XMLElement("System",
             XMLForest(
               rft.form_type_id as "FormTypeID"
             , rft.system_name as "SystemName"
             , rft.form_type as "FormType"
             , f.form_id as "FormID"
           , XMLElement("Sections",
                SELECT XMLAgg(
                         XMLElement("Section",
                           XMLForest(
                             rs.section_id as "SectionID"
                           , rs.section_name as "SectionName"
                         , XMLElement("Attributes",
                              SELECT XMLAgg(
                                       XMLElement("Attr",
                                         XMLForest(
                                           ra.attr_desc as "AttrDesc"
                                         , ra.attr_name as "AttrName"
                                       , v.attr_val
                              FROM attr_unpivot v
                                   JOIN ref_section_attr rsa ON rsa.attr_id = extractValue(v.attr_val,'AttrID')
                                                            AND rsa.form_section_id = v.form_section_id
                                   JOIN ref_attr ra ON ra.attr_id = rsa.attr_id
                              WHERE rsa.form_section_id = rfs.form_section_id
                FROM ref_section rs
                     JOIN ref_form_section rfs ON rs.section_id = rfs.section_id
                WHERE rfs.form_type_id = f.form_type_id
           ) as xmldoc
    FROM ref_form_type rft
         JOIN form f ON rft.form_type_id = f.form_type_id
    WHERE f.form_id = 2371420
    ;The WITH clause builds a normalized result set out of TBL_RESPONSE and FRM_RESPONSE.
    That result set is then joined in the main query for each section of the form.
    The resulting XML document looks like :
    <System>
      <FormTypeID>900</FormTypeID>
      <SystemName>ENROLLMENT</SystemName>
      <FormType>ENR</FormType>
      <FormID>2371420</FormID>
      <Sections>
        <Section>
          <SectionID>6750</SectionID>
          <SectionName>Personal Information</SectionName>
          <Attributes>
            <Attr>
              <AttrDesc>Enrollment Date</AttrDesc>
              <AttrName>ENROLLMENT_DATE</AttrName>
              <AttrID>30000</AttrID>
              <AttrValue>05/03/2011</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s First Name</AttrDesc>
              <AttrName>ENROLLEE_FIRST_NAME</AttrName>
              <AttrID>30001</AttrID>
              <AttrValue>John</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s Middle Initial</AttrDesc>
              <AttrName>ENROLLEE_MIDDLE_INIT</AttrName>
              <AttrID>30002</AttrID>
              <AttrValue>J</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s Last Name</AttrDesc>
              <AttrName>ENROLLEE_LAST_NAME</AttrName>
              <AttrID>30003</AttrID>
              <AttrValue>Doe</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s Work Phone Number</AttrDesc>
              <AttrName>ENROLLEE_WORK_PHONE</AttrName>
              <AttrID>30004</AttrID>
              <AttrValue>(555) 123-1234</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee Fax Number</AttrDesc>
              <AttrName>ENROLLEE_FAX</AttrName>
              <AttrID>30005</AttrID>
              <AttrValue>(555) 123-1235</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s Work Extension</AttrDesc>
              <AttrName>ENROLLEE_EXT</AttrName>
              <AttrID>30006</AttrID>
              <AttrValue>1234567</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s Email</AttrDesc>
              <AttrName>ENROLLEE_EMAIL</AttrName>
              <AttrID>30007</AttrID>
              <AttrValue>[email protected]</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s Mailing Address #1</AttrDesc>
              <AttrName>ENROLLEE_MAIL_ADDR_1</AttrName>
              <AttrID>30008</AttrID>
              <AttrValue>10 Maple Street</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s Mailing Address #2</AttrDesc>
              <AttrName>ENROLLEE_MAIL_ADDR_2</AttrName>
              <AttrID>30009</AttrID>
              <AttrValue>.</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s State</AttrDesc>
              <AttrName>ENROLLEE_STATE</AttrName>
              <AttrID>30011</AttrID>
              <AttrValue>MA</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s Zip</AttrDesc>
              <AttrName>ENROLLEE_ZIP</AttrName>
              <AttrID>30012</AttrID>
              <AttrValue>02668</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Enrollee&apos;s User Name</AttrDesc>
              <AttrName>ENROLLEE_USER_NAME</AttrName>
              <AttrID>30013</AttrID>
              <AttrValue>jdoe</AttrValue>
            </Attr>
          </Attributes>
        </Section>
        <Section>
          <SectionID>6800</SectionID>
          <SectionName>Company Information</SectionName>
          <Attributes>
            <Attr>
              <AttrDesc>Company&apos;s DB #</AttrDesc>
              <AttrName>DBNUM</AttrName>
              <AttrID>30014</AttrID>
              <AttrValue>123456789</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Company Name</AttrDesc>
              <AttrID>30015</AttrID>
              <AttrValue>My Company</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Company Adress #1</AttrDesc>
              <AttrID>30016</AttrID>
              <AttrValue>50 Main Street</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Company Adress #2</AttrDesc>
              <AttrID>30017</AttrID>
              <AttrValue>.</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Company City</AttrDesc>
              <AttrID>30018</AttrID>
              <AttrValue>Marstons Mills</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Company State</AttrDesc>
              <AttrID>30019</AttrID>
              <AttrValue>MA</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Company Zip</AttrDesc>
              <AttrID>30020</AttrID>
              <AttrValue>02648</AttrValue>
            </Attr>
            <Attr>
              <AttrDesc>Company Phone</AttrDesc>
              <AttrID>30021</AttrID>
              <AttrValue>(555) 123-1236</AttrValue>
            </Attr>
          </Attributes>
        </Section>
        <Section>
          <SectionID>6850</SectionID>
          <SectionName>Points of Contact</SectionName>
          <Attributes/>
        </Section>
        <Section>
          <SectionID>6900</SectionID>
          <SectionName>Enrollment Verification</SectionName>
          <Attributes/>
        </Section>
        <Section>
          <SectionID>6950</SectionID>
          <SectionName>Enrollment Confirmation</SectionName>
          <Attributes/>
        </Section>
      </Sections>
    </System>

  • Need Help Removing XML Photo Gallery on Button Click

    Hi, I'm new to flash so this might seem like a dumb question, but I'm right in the middle of designing a photography site and need some help.  I have 4 buttons in my timeline that go to the corresponding frame labels when clicked, above each frame label is a keyframe with actionscript applied to it, that will load an external XML photo gallery. I need the current photo gallery that's on the screen to disappear when I click on a new button to load the new XML photo gallery.  this is the code that will be above each frame label with a few changes, then below this is the code for my buttons. Any help is greatly appreciated. Thank you  Code: Select all var imageX:XML; var imageList:XMLList;  var canvas:MovieClip = new MovieClip(); var picLoader:Loader; addChild(canvas); canvas.x = -155; canvas.y = 160;   var req:URLRequest = new URLRequest("gallery.xml"); var imageLoader:URLLoader = new URLLoader(); imageLoader.addEventListener(Event.COMPLETE, onComplete); imageLoader.load(req);  function onComplete(e:Event):void { imageX = new XML(imageLoader.data); imageList = imageX.image; picLoader = new Loader(); picLoader.contentLoaderInfo.addEventListener(Event .COMPLETE, imageLoaded); picLoader.load(new URLRequest (imageList[0].url)); }  function imageLoaded(e:Event):void  { canvas.addChild(picLoader); }    Code for the buttons in different keyframe.  Code: Select all stop();  kids_btn.addEventListener(MouseEvent.CLICK,onKidsClick); couples_btn.addEventListener(MouseEvent.CLICK,onCouplesClick); portraits_btn.addEventListener(MouseEvent.CLICK,onPortraitsClick); bellies_btn.addEventListener(MouseEvent.CLICK,onBelliesClick);  function onKidsClick(e:MouseEvent):void { gotoAndStop("kids"); }  function onCouplesClick(e:MouseEvent):void { gotoAndStop("couples"); }  function onPortraitsClick(e:MouseEvent):void { gotoAndStop("portraits"); }  function onBelliesClick(e:MouseEvent):void { gotoAndStop("bellies"); }

    Hi, I'm new to flash so this might seem like a dumb question, but I'm right in the middle of designing a photography site and need some help.  I have 4 buttons in my timeline that go to the corresponding frame labels when clicked, above each frame label is a keyframe with actionscript applied to it, that will load an external XML photo gallery. I need the current photo gallery that's on the screen to disappear when I click on a new button to load the new XML photo gallery.  this is the code that will be above each frame label with a few changes, then below this is the code for my buttons. Any help is greatly appreciated. Thank you  Code: Select all var imageX:XML; var imageList:XMLList;  var canvas:MovieClip = new MovieClip(); var picLoader:Loader; addChild(canvas); canvas.x = -155; canvas.y = 160;   var req:URLRequest = new URLRequest("gallery.xml"); var imageLoader:URLLoader = new URLLoader(); imageLoader.addEventListener(Event.COMPLETE, onComplete); imageLoader.load(req);  function onComplete(e:Event):void { imageX = new XML(imageLoader.data); imageList = imageX.image; picLoader = new Loader(); picLoader.contentLoaderInfo.addEventListener(Event .COMPLETE, imageLoaded); picLoader.load(new URLRequest (imageList[0].url)); }  function imageLoaded(e:Event):void  { canvas.addChild(picLoader); }    Code for the buttons in different keyframe.  Code: Select all stop();  kids_btn.addEventListener(MouseEvent.CLICK,onKidsClick); couples_btn.addEventListener(MouseEvent.CLICK,onCouplesClick); portraits_btn.addEventListener(MouseEvent.CLICK,onPortraitsClick); bellies_btn.addEventListener(MouseEvent.CLICK,onBelliesClick);  function onKidsClick(e:MouseEvent):void { gotoAndStop("kids"); }  function onCouplesClick(e:MouseEvent):void { gotoAndStop("couples"); }  function onPortraitsClick(e:MouseEvent):void { gotoAndStop("portraits"); }  function onBelliesClick(e:MouseEvent):void { gotoAndStop("bellies"); }

  • HELP: JSP + XML + XSLT = HTML?

    Hello, all.
    I am trying out Weblogic 6 and I am trying to get the JSP + XML + XSLT =>
    HTML chain working.
    I am coming from using Orion and SAXON.. and in that situation I had a JSP
    that contained XML tags... they were filled in at runtime and then using
    Servlet-Chaining was passed along to the SAXON XSLT Processer. SAXON checked
    for the inline XSL specified and then used that to transform the document
    into HTML.
    It worked well, but there were some other features missing/not documented
    that we now need.
    With Weblogic I am trying to use the XSLT Tag Library that comes with the
    distribution, but it seems to be very finicky. I followed the directions and
    I got it to do a sort of roundabout transformation. But it doesn't seem to
    work quite right.
    The best I can get is the following:
    I have an 'xslt' directory url-pattern-mapped to xslt.jsp (as instructed)...
    but can't figure out how to specify the xsl file on-the-fly... that is, if I
    don't hard-code the XSL file in the x:xslt element in the xslt.jsp it
    complains about some XML file not having a root element.
    Ideal situation:
    1. I have a JSP that includes XML elements.
    2. It is filled from a database at runtime and specifys (using a PI) what
    XSL stylesheet it is to be processed with.
    3. Somehow (fingers crossed) the XML is processed and transformed into HTML
    by the appropriate XSL file.
    I think I am mostly stuck moving between steps 2 and 3.
    Can anyone give me some hints? Are there some Weblogic specific
    elements/tags that I have to include in the XML file that Weblogic will
    catch and re-direct to the XSL Parser?
    Please, anyone, if you have some information, I would much appreciate it.
    Dylan Parker
    PS - I apologize for the cross-post, I hope it doesn't cause too much
    traffic.

    Craig,
    I've since discovered how to do it with the WL Taglibrary... and have
    moved on =)
    It has to do with the EXTREMELY BADLY documented x:xml tag that can
    appear within the x:xslt tag body...
    So the WL Tag Library allows something like the following.
    (Please note, angled brackets are omitted in this post to prevent html
    parsing)
    [x:xslt stylesheet="sheet.xsl"]
    [x:xml]
    Here is the XML to run the sheet on.
    This should have all relevant XML syntax: the PIs, the doctype,
    root elements etc...
    [x:xml]
    [x:xslt]
    And that DOES work. But not very well. WL, a little prematurely
    incorporated versions 1.2 of Xerces and Xalan in their product -- and
    these versions have some irritating bugs.
    Also -- There tag library doesn't copy the source XML across as UTF-8
    .. so a lot of the Japanese I have embedded there (from a DB) gets
    mangled somewhere in their code...
    AND -- If you hammer a little bit on an JSP/XML that uses the WL Tag
    Library (eg clicking refresh lots of times in IE)... I get huge
    amounts of irritating exceptions appearing in the log files.
    NullPointerExceptions
    XSL Parsing Exceptions
    XML Parsing Exceptions
    but completely unpredictably...
    In my eyes.. the WL XML/XSL Tag Library using the incorporated and
    untouchable Xalan and Xerces (v1.2) is virtually unusable.
    What a pain.
    BUT! Apache offers a similar OPEN SOURCE XSL Tag Library available
    here:
    http://jakarta.apache.org/taglibs/doc/xsl-doc/intro.html
    And it uses the standard, non-weblogic-incorporated, Xerces and Xalan
    (which means you can provide whatever version you want).. and it works
    impressively well.
    It has almost identical performance as the WL Taglib, and without all
    of the bizarre exceptions being thrown.
    And it does proper passing of the character encoding type!
    If only the taglib did caching though =(
    The performance hit over pure JSP is huge. Almost two orders of
    magnitude. On my desktop box I can get around 500Requests/Sec if I am
    returning HTML direct from a JSP... while if I produce XML that gets
    processed by XSL into HTML the Requests/Sec drops to 5!!!!
    Caching. Caching. And more Caching. A lot of DiskIO is going on with
    the XML/XSL/XHTML chain of events.
    I hope this helps!
    I'd be curious as to what you find out as well.
    Dylan Parker
    On 5 Mar 2001 07:20:00 -0800, "Craig Macha"
    <[email protected]> wrote:
    >
    Yep, I feel Dylan's pain.
    I am trying to accomplish the same thing. A JSP page generating
    dynamic XML content and then utilizing an XSLT stylesheet to transform
    all the content into XHTML.
    Does anyone have some examples that show exactly how to accomplish
    this? Can I do this with WLS and the XML taglib that comes with
    it? Or do I have to move on to something like Cocoon to get this
    capability?
    Any insight would be greatly appreciated.
    Thanks,
    Craig Macha
    "Dylan Parker" <[email protected]> wrote:
    Hello, all.
    I am trying out Weblogic 6 and I am trying to get the
    JSP + XML + XSLT =>
    HTML chain working.
    I am coming from using Orion and SAXON.. and in that situation
    I had a JSP
    that contained XML tags... they were filled in at runtime
    and then using
    Servlet-Chaining was passed along to the SAXON XSLT Processer.
    SAXON checked
    for the inline XSL specified and then used that to transform
    the document
    into HTML.
    It worked well, but there were some other features missing/not
    documented
    that we now need.
    With Weblogic I am trying to use the XSLT Tag Library
    that comes with the
    distribution, but it seems to be very finicky. I followed
    the directions and
    I got it to do a sort of roundabout transformation. But
    it doesn't seem to
    work quite right.
    The best I can get is the following:
    I have an 'xslt' directory url-pattern-mapped to xslt.jsp
    (as instructed)...
    but can't figure out how to specify the xsl file on-the-fly...
    that is, if I
    don't hard-code the XSL file in the x:xslt element in
    the xslt.jsp it
    complains about some XML file not having a root element.
    Ideal situation:
    1. I have a JSP that includes XML elements.
    2. It is filled from a database at runtime and specifys
    (using a PI) what
    XSL stylesheet it is to be processed with.
    3. Somehow (fingers crossed) the XML is processed and
    transformed into HTML
    by the appropriate XSL file.
    I think I am mostly stuck moving between steps 2 and 3.
    Can anyone give me some hints? Are there some Weblogic
    specific
    elements/tags that I have to include in the XML file that
    Weblogic will
    catch and re-direct to the XSL Parser?
    Please, anyone, if you have some information, I would
    much appreciate it.
    Dylan Parker
    PS - I apologize for the cross-post, I hope it doesn't
    cause too much
    traffic.

  • Stax reading /writing need help from xml guru plz

    hi, i have been told that stax reading /writing should involve no overhead and that is why i use it and i am now able to write my large data to file, but using my reader i seem to run out of memory, using netbeans profiler i ahve found that char[] seems to be the problem,
    by backtracing i ahve found that javax.xml.parser.SAXParser.parse calls the xerces packages which eventually leads to the char[ ], now my code for my reader is attatched here...
    package utilities;
    import Categorise.Collection;
    import Categorise.Comparison;
    import Categorise.TestCollection;
    import java.io.IOException;
    import javax.xml.parsers.*;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    import org.xml.sax.Attributes;
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    import measures.Protocol;
    * @author dthomas
    public class XMLParser extends DefaultHandler
        static Collection collection = new Collection();
        List<Short> cList;
        List<Comparison> comparisonList;
        File trainFileName;
        File testFileName;
        TestCollection tc;
        List<TestCollection> testCollectionList;
        List<File> testFileNameList = new ArrayList<File>();
        List<File> trainFileNameList = new ArrayList<File>();
        boolean allTrainsAdded = false;
        Protocol protocol;
        List<File> trainingDirList;
        File testingDir;
        int counter = 0;
        File[ ] trainingDirs;
        File[ ] trainingFileNames;
        File[ ] testFileNames;
        TestCollection[ ] testCollections;
        Comparison[ ] comparisons;
        Comparison c;
        short[ ] cCounts;
        String order;
        String value;
        File trainDir;
        /** Creates a new instance of XMLParser */
        public XMLParser() {
        public static Collection read( File aFile )
            long startTime = System.currentTimeMillis();
            System.out.println( "Reading XML..." );
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp;
            try {
                sp = spf.newSAXParser();
                sp.parse( aFile, new XMLParser() );
            } catch (IOException ex) {
                ex.printStackTrace();
            } catch (SAXException ex) {
                ex.printStackTrace();
            } catch (ParserConfigurationException ex) {
                ex.printStackTrace();
            long endTime = System.currentTimeMillis();
            long totalTime = ( endTime - startTime ) / 1000;
            System.out.println( "Done..."  + totalTime + " seconds" );
            return collection;
        public void startElement(String uri,String localName,String qName, Attributes attributes)
            if( qName.equals( "RE" ) )
                testCollectionList = new ArrayList<TestCollection>();
            else if( qName.equals( "p") )
                boolean isConcatenated = new Boolean( attributes.getValue( "c" ) );
                boolean isStatic = new Boolean( attributes.getValue( "s" ) );
                protocol = new Protocol( isConcatenated, isStatic );
            else if( qName.equals( "trdl" ) )
                trainingDirList = new ArrayList<File>();
            else if( qName.equals( "trd" ) )
                trainDir = new File( attributes.getValue( "fn" ) );
                trainingDirList.add( trainDir );
            else if( qName.equals( "td" ) )
                testingDir = new File( attributes.getValue( "fn" ) );
            else if( qName.equals( "TC" ) )
                counter++;
                System.out.println( counter );
                comparisonList = new ArrayList<Comparison>();
                testFileName = new File( attributes.getValue( "tfn" ) );
                testFileNameList.add( testFileName );
                tc = new TestCollection( );
                tc.setTestFileName( testFileName );
            else if ( qName.equals( "r" ) )
             order = attributes.getValue( "o" );
                value = attributes.getValue( "v" );
                cList.add( Short.parseShort( order ), new Short( value ) );
            else if( qName.equals( "c" ) )
                cList = new ArrayList<Short>();
                trainFileName = new File( attributes.getValue( "trfn" ) );
                if( !allTrainsAdded )
                    trainFileNameList.add( trainFileName );
        public void characters(char []ch,int start,int length)
            //String str=new String(ch,start,length);
            //System.out.print(str);
        public void endElement(String uri,String localName,String qName)
            if (qName.equals( "c") )
                allTrainsAdded = true;
                cCounts = new short[ cList.size() ];      
                for( int i = 0; i < cCounts.length; i++ )
                    cCounts[ i ] = cList.get( i );
                c = new Comparison( trainFileName, tc );
                c.setcCounts( cCounts );
                this.comparisonList.add( c );
            else if( qName.equals( "TC" ) )
                comparisons = new Comparison[ comparisonList.size() ];
                comparisonList.toArray( comparisons );           
                tc.setComparisons( comparisons );
                testCollectionList.add( tc );
            else if( qName.equals( "RE" ) )
                testCollections = new TestCollection[ testCollectionList.size() ];
                testCollectionList.toArray( testCollections );
                collection.setTestCollections( testCollections );
                testFileNames = new File[ testFileNameList.size() ];
                testFileNameList.toArray( testFileNames );
                collection.setTestingFiles( testFileNames );
                //String[ ] testCategories = new String[ testCategoryList.size() ];
                //testCategoryList.toArray( testCategories );
                //collection.setTestCategories( testCategories );
                trainingFileNames = new File[ trainFileNameList.size() ];
                trainFileNameList.toArray( trainingFileNames );
                collection.setTrainingFiles( trainingFileNames );
                //String[ ] trainingCategories = new String[ trainCategoryList.size() ];
                //trainCategoryList.toArray( trainingCategories );
                //collection.setTrainingCategories( trainingCategories );
                collection.setProtocol( protocol );
                trainingDirs = new File[ trainingDirList.size() ];
                trainingDirList.toArray( trainingDirs );           
                collection.setTrainingDirs( trainingDirs );
                collection.setTestingDir( testingDir );
         //else
             //System.out.println("End element:   {" + uri + "}" + localName);
    }i thought it may have been a recursive problme, hence having so many instance variables instead of local ones but that hasn't helped.
    all i need at the end of this is a Collection which holds an array of testCollections, which holds an array of cCounts and i was able to hold all of this in memory as all i am loading is what was in memory before it was written.
    can someone plz help
    ps when i use tail in unix to read the end of the xml file it doesnt work correctly as i cannot specify the number of lines to show, it shows all of the file as thought it is not split into lines or contains new line chars or anything, it is stored as one long stream, is this correct??
    here is a snippet of the xml file:
    <TC tfn="
    /homedir/dthomas/Desktop/4News2/output/split3/alt.atheism/53458"><c trfn="/homed
    ir/dthomas/Desktop/4News2/output/split0/alt.atheism/53586"><r o="0" v="0"></r><r
    o="1" v="724"></r><r o="2" v="640"></r><r o="3" v="413"></r><r o="4" v="245"></
    r><r o="5" v="148"></r><r o="6" v="82"></r><r o="7" v="52"></r><r o="8" v="40"><
    /r><r o="9" v="30"></r><r o="10" v="22"></r><r o="11" v="16"></r><r o="12" v="11
    "></r><r o="13" v="8"></r><r o="14" v="5"></r><r o="15" v="2"></r></c><c trfn="/
    homedir/dthomas/Desktop/4News2/output/split0/alt.atheism/53495"><r o="0" v="0"><
    /r><r o="1" v="720"></r><r o="2" v="589"></r><r o="3" v="349"></r><r o="
    please if anyone has any ideas from this code why a char[] would use 50% of the memory taken, and that the average age seems to show that the same one continues to grow..
    thanks in advance
    danny =)

    hi, i am still having lo luck with reading the xml data back into memory, as i have said before, the netbeans profiler is telling me it is a char[] that is using 50% of the memory but i cannot see how a char[] is created, my code doesn't so it must be the xml code...plz help

  • Help with XML, display data on swipe/click

    Hello.
    I am trying to create a moibile app that displays XML data. It's basically a phone book. I want the data to change when swiped. I can get the data in just fine. I can get it to display fine. I am not seeing the correct image first, however. I think it's a problem with my imagenum variable.
    Then, I want to change what is displayed when the user clicks/swipes on the screen. How do I do that?
    stop();
    var nameArray:Array = new Array();
    var countryArray:Array = new Array();
    var portraitArray:Array = new Array();
    var flagArray:Array = new Array();
    var jobtitleArray:Array = new Array();
    var imageNum:Number=0;
    var totalImages:Number;
    //Load XML
    var XMLURLLoader:URLLoader = new URLLoader();
    XMLURLLoader.load(new URLRequest("recbook.xml"));
    XMLURLLoader.addEventListener(Event.COMPLETE, processXML);
    function processXML(event:Event):void {
    var theXMLData:XML = new XML(XMLURLLoader.data);
    totalImages=theXMLData.name.length();
    for (var i:Number =0; i < totalImages; i++){
      //push xml data into the arrays
      nameArray.push(theXMLData.name[i]);
      countryArray.push(theXMLData.country[i]);
      portraitArray.push(theXMLData.portrait[i]);
      flagArray.push(theXMLData.flag[i]);
      jobtitleArray.push(theXMLData.jobtitle[i]);
    //data is processed
    loadData();
    function loadData():void {
    var thisPortrait:String = portraitArray[imageNum];
    var thisCountry:String = countryArray[imageNum];
    var thisName:String = nameArray[imageNum];
    var thisJobtitle:String = jobtitleArray[imageNum];
    var thisFlag:String = flagArray[imageNum];
    var dataLoader:Loader = new Loader();
    dataLoader.load(new URLRequest(portraitArray[imageNum]));
    dataLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dataLoaded);
    function dataLoaded(event:Event):void {
      //I want to start with image 0 (img1.jpg) and cycle through with a mouse click (finger swipe on iOS)
      stage.addEventListener(MouseEvent.CLICK, loadMainImage1);
      function loadMainImage1(event:MouseEvent):void {
       portraitUILoader.source=thisPortrait;
       flagUILoader.source=thisFlag;
       selectedName.text=thisName;
       selectedCountry.text=thisCountry;
       selectedJobtitle.text=thisJobtitle;
    //add to imageNum (1);
    imageNum++;
    if (imageNum < totalImages) {//stopping at img2
      trace("imageNum " + imageNum);
      trace("image name (thisPortrait) " + thisPortrait);//losing image 4 somewhere
      loadData();
      trace("Total Images " + totalImages);
    //click to move past the home screenI'd like to ditch this. don't know how.
    homeScreen_mc.addEventListener(MouseEvent.CLICK, goNext);
    function goNext(event:MouseEvent):void
    nextFrame();
    */here's the output:
    imageNum 1
    image name (thisPortrait) images/img1.jpg
    imageNum 2
    image name (thisPortrait) images/img2.jpg
    imageNum 3
    image name (thisPortrait) images/img3.jpg
    Total Images 4
    Total Images 4
    Total Images 4
    Total Images 4
    It starts the display on image 1 (the second in the series img2.jpg)*/

    Thank you.
    That helped. I get the correct images in the output, but not in the display. I also get the following error. Any chance you could help with that?
    new output after moving the increment:
    imageNum 0
    image name (thisPortrait) images/img1.jpg
    imageNum 1
    image name (thisPortrait) images/img2.jpg
    imageNum 2
    image name (thisPortrait) images/img3.jpg
    imageNum 3
    image name (thisPortrait) images/img4.jpg
    TypeError: Error #2007: Parameter url must be non-null.
    at flash.display::Loader/_load()
    at flash.display::Loader/load()
    at iOS_fla::MainTimeline/loadData()
    at iOS_fla::MainTimeline/loadData()
    at iOS_fla::MainTimeline/loadData()
    at iOS_fla::MainTimeline/loadData()
    at iOS_fla::MainTimeline/loadData()
    at iOS_fla::MainTimeline/processXML()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()

Maybe you are looking for

  • Getting while running the BPEL process from java

    Hi All, We are using the following java code to run the BPM process. package callBPMProcess; import java.util.Hashtable; import java.util.UUID; import java.util.List; import javax.naming.Context; import oracle.soa.management.facade.Locator; import or

  • How is NETVAL_FLT calculated in CUHD/CUIT?

    Hello, I have been trying to figure out why NETVAL_FLT has a value sometimes but mostly not.  I cannot seem to find where it can be calculated. Does anyone know this? Regards, Dean.

  • ICal notes still running off the screen

    Has Apple ever addressed/fixed this admittedly minor but extremely annoying issue?? It's been going on for so long that all previous posts regarding this issue are no longer on the discussion boards. Message was edited by: pingvuiini

  • How do I rotate a received email pdf document

    email attachments i receive need rotating to view...How do I rotate them??

  • Drag and drop custom component

    I have a custom component that is a JPanel with a JTextField and a JButton. The component is a display and chooser for an address. I want to be able to copy the address from one to another with drag and drop. Here's what I have so far. The drag start