Help with XML Nested sets
I'm currently making a table similar to the Product Table on
the Spry demo. I'm having some problems because I need to link
videos and sounds from nested XML categories to a sidebar, similar
to the features list on the demo site. The problem is, I dont want
the full URL to show, but something else
I managed to get the list to show what I wanted by doing
something like this:
<media>
<video>2004/videos/x.mov <name>Great Video
</name> </video>
</media>
By calling spry:region="media" and then
<ul><li><a
href={video}>{name}</a><li></ul>
I got a full list with the names, but the links were
apparently lost, and all pointed to the table's url.
I also tried doing a <div spry:region="media"
spry:region="name"> and list the <video> and <name>
tags separately on the XML, but that didn't work.
I'd be very greatful if someone could help me figure out how
to do this.
Thank you,
Jose
Just looking at your post, I noticed that when you put the ibar in your shelf and add applications the icons don't like to show up you have to
1. right click on the application in the ibar
2. select icon program-properties-icon
3.click on the grey box
4.navigate to /usr/share/icons/highcoler/64x64/apps (you can select 48x48 as well)
The icon should show up in ibar, as well as the applcation menu. It is hit and miss though. I hope this helps.
Edit: I think I solved the hit and miss attribute, instead of selecting the file in the middle of the window manager select it to the right. And make sure that the file shows up in the bar at the bottom of the filemanager window.
Last edited by mich04 (2012-11-25 13:40:36)
Similar Messages
-
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 itThe 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. -
Hello everybody. I decided to start working with XML since it allows me to load assets externally and edit my applications later very easily without having to edit the fla file itself. So today I watched and read a few tutorials and now I'm trying to build an Event Scroll, all through XML and AS 3.0 code. Basically what I want is to have several events inside a movieclip which I will incorporate into a scroll pane when I'm done, for now I'll focus on extracting data from the XML file and parsing it with AS 3.0. The layout is simple: a thumbnail image on the left, and beside it on the right there is the title of the event, its date and some info about it and all of these should have a dark grey background while the text is in white. Each two events are 30 pixels apart and there are 5 events for now.
Ok enough talking now let's get to the code:
XML Code:
<?xml version="1.0" encoding="utf-8"?>
<EVENTSXML>
<EVENT>
<TITLE> Event 1</TITLE>
<DATE>12/04/2009</DATE>
<THUMB>thumb0.jpg</THUMB>
<INFO> Some Text Goes Here </INFO>
</EVENT>
<EVENT>
<TITLE>Event 2</TITLE>
<DATE>03/02/2009</DATE>
<THUMB>thumb1.jpg</THUMB>
<INFO>Some Text Goes Here</INFO>
</EVENT>
<EVENT>
<TITLE>Event 3</TITLE>
<DATE>18/11/2008</DATE>
<THUMB>thumb2.jpg</THUMB>
<INFO>Some Text Goes Here</INFO>
</EVENT>
<EVENT>
<TITLE>Event 4</TITLE>
<DATE>10/09/2008</DATE>
<THUMB>thumb3.jpg</THUMB>
<INFO>Some Text Goes Here</INFO>
</EVENT>
<EVENT>
<TITLE>Event 5</TITLE>
<DATE>06/08/2008</DATE>
<THUMB>thumb4.jpg</THUMB>
<INFO>Some Text Goes Here</INFO>
</EVENT>
</EVENTSXML>
Actionscript 3.0 Code:
var myXML:XML;
var req:URLRequest = new URLRequest("events.xml");
var ldr:URLLoader = new URLLoader();
ldr.load(req);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
myXML = new XML(e.target.data);
buildEvents(myXML.EVENT);
var eventScroll:MovieClip = new MovieClip();
var padding:Number = 30;
this.addChild(eventScroll);
eventScroll.x = eventScroll.y = padding;
function buildEvents(evnts:XMLList):void
for(var i:uint = 0; i <evnts.length(); i++) {
var eventData:MovieClip = new MovieClip();
eventData.y = (20 + padding) * i;
eventData.itemNum = i;
eventData.title = evnts[i].TITLE;
eventData.date = evnts[i].DATE;
eventData.thumb = evnts[i].THUMB;
eventData.info = evnts[i].INFO;
// thumb container
thisThumb:Sprite = new Sprite();
var ldr:Loader = new Loader()
var req:URLRequest = new URLRequest(eventData.thumb);
ldr.load(req);
thisThumb.addChild(ldr);
eventData.addChild(thisThumb);
eventScroll.addChild(eventData);
now I am stuck there... the application is not done yet and when I publish the file I keep getting errors, these are the errors:
1067: Implicit coercion of a value of type flash.display:Sprite to an unrelated type Class.
Source: thisThumb:Sprite = new Sprite();
1188: Illegal assignment to class Sprite.
Source: thisThumb:Sprite = new Sprite();
1120: Access of undefined property thisThumb.
Source: thisThumb.addChild(ldr);
1120: Access of undefined property thisThumb.
Source: eventData.addChild(thisThumb);
1119: Access of possibly undefined property contentLoaderInfo through a reference with static type flash.net:URLLoader.
Source: ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, processXML);
So where did I go wrong and how can I carry on with my code to finish my application?
P.S: I do not want someone to do it for me, so in case someone decided to help me out, please comment and explain your code because this application is for learning porpuses in the first place... Thanks in advance!oh I've just noticed one little problem, in my info field, the text doesn't break and start a new line, it just keeps going horizontally although I've set it to multiline and gave it a width and height... so what shall I do to fix this problem? here's the code:
var infoF:TextField = new TextField();
infoF.text = eventData.info;
infoF.x = 250;
infoF.y = dateF.y + padding;
infoF.multiline = true;
infoF.width = 200;
infoF.height = 100;
addChild(infoF); -
Help with xml and getNextHighestDepth
I have a thumbnail gallery that is called in with xml- On
stage is a movieClip that covers the entire thumbnail area with the
alpha set to 0. what I'm trying to do is onRelease- have that mc
brought to the front and it's alpha state tween to 100- i've not
much experience using 'getNextHighestDepth' so I'm assuming
something is wrong here... if anyone can help I'd really appreciate
it!
Thanks!i think you want something along the lines of :
stageFade_mc.swapDepths(theMovieOnTopAtTheMoment);
Note that only dynamically created movies have depths. So if
either of the movieclips in question are just sitting in your
timeline you cant swap their depths.
In that case you either need to duplicateMovieClip() or just
set things _visible property where apropriate.
good luck
jon -
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; -
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() -
Need help with XML transformation
I am not sure this is the right place for this. But i will try it here. I am very troubled with my XSLT. Trying to transform a text Coupon which has the following html for it. So,
_1. INPUT is:_
<html>
<head>
</head>
<body>
<p>
This coupon is for a good guy whose first name is :
</p>
<p>
</p>
<p align="center">
Sadd
</p>
<p align="center">
</p>
<p align="right">
<b>also</b> whose <var>full_name</var> is Sadd Hossain
</p>
<p align="left">
</p>
<p align="left">
He is a <font size="3">software </font><font size="4">engineer for</font><font size="5">
S&H</font>
</p>
</body>
</html>
*2. output needed is:*
<?xml version="1.0" encoding="UTF-8"?>
<POSMESSAGE>
<TextMSG >
This coupon is for a good guy whose first name is :
</TextMSG>
<TextMSG >
</TextMSG>
<TextMSG align="center">
<emph>SADD</emph>
</TextMSG>
<TextMSG >
</TextMSG>
<TextMSG align="right" >
also whose full_name is Sadd Hossain
</TextMSG>
<TextMSG>
</TextMSG>
<TextMSG align="left" >
He is a software engineer
for S&H
</TextMSG>
</POSMESSAGE>
*3. XSLT for this*
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:template match="body">
<POSMESSAGE>
<xsl:for-each select="p">
<TextMSG>
<!--xsl:if test="not[@align='']"-->
<xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute>
<!--/xsl:if-->
<xsl:attribute name="font"><xsl:value-of select="@size"/></xsl:attribute>
<xsl:value-of select="."/>
</TextMSG>
<xsl:for-each select="b">
<emph>
<xsl:value-of select="."/>
</emph>
</xsl:for-each>
</xsl:for-each>
</POSMESSAGE>
</xsl:template>
</xsl:stylesheet>
*4: the above xslt generating this output*
<?xml version="1.0" encoding="UTF-8"?>
<POSMESSAGE><TextMSG align="" font="">
This coupon is for a good guy whose first name is :
</TextMSG><TextMSG align="" font="">
</TextMSG><TextMSG align="center" font="">
SADD
</TextMSG><TextMSG align="center" font="">
</TextMSG><TextMSG align="right" font="">
also whose full_name is Sadd Hossain
</TextMSG><TextMSG align="left" font="">
</TextMSG><TextMSG align="left" font="">
He is a software engineer
for S&H
</
*5: Need help with this. what should my xslt look like to get the desired output???????????????*
any help or direction will be very much appreciated. Thank you_I have below suggestions:
1. Please use code option given in message editor toolbar for posting any formatted content like XML, Java code snippet etc.
2. replace & in your source XML with _& a m p ;_ (Without spaces, I have put spaces to make it visible here).
3. I have modified your XSLT according output XML you have given. I am not sure what you want to do with some elements like <b>, <font>, <var> etc. change below XSLT as you require for these elements.
Modified XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:template match="body">
<POSMESSAGE>
<xsl:for-each select="p">
<TextMSG>
<xsl:if test=". != ''">
<xsl:for-each select="@align">
<xsl:attribute name="align">
<xsl:value-of select="."></xsl:value-of>
</xsl:attribute>
</xsl:for-each>
<xsl:value-of select="."/>
</xsl:if>
</TextMSG>
</xsl:for-each>
</POSMESSAGE>
</xsl:template>
</xsl:stylesheet>
OUTPUT:
<?xml version="1.0"?>
<POSMESSAGE>
<TextMSG>This coupon is for a good guy whose first name is :</TextMSG>
<TextMSG/>
<TextMSG align="center">Sadd</TextMSG>
<TextMSG/>
<TextMSG align="right">alsowhose full_name is Sadd Hossain</TextMSG>
<TextMSG/>
<TextMSG align="left">He is a softwareengineer forS&H</TextMSG>
</POSMESSAGE> -
Hello, I would like to create an extention that will help to
manage a
glossary.
First I need to decide on the structure of the xml document
that will
contain all glossary entries. Since I don't have much
experience with XML in
extention content, I was wondering if there are certain
recommendations I
should follow.
What is preferable: using attributes that will holt the
content or rather
having xml-elements. What is easy to parce?
I would greatly appreciate any tips, help and suggestions.
Olyalyu.oO(olga)
>First I need to decide on the structure of the xml
document that will
>contain all glossary entries. Since I don't have much
experience with XML in
>extention content, I was wondering if there are certain
recommendations I
>should follow.
I would start as simple as possible, for example with
something like
this:
<glossary>
<entry>
<term>...</term>
<explanation>...</explanation>
</entry>
<entry>
<term>...</term>
<explanation>...</explanation>
</entry>
</glossary>
Of course it also depends on what you want to do with this
structure and
if you need additional informations.
>What is preferable: using attributes that will holt the
content or rather
>having xml-elements. What is easy to parce?
There's no real rule-of-thumb whether to use elements or
attributes.
If unsure, use elements.
Micha -
Can someone help with my video setting?
I have a bunch of small, heavily compressed AVI clips that I want to edit together. But I can't figure out how to export it with the best quality. The dimensions are 640x480, but those dimensions are always different on the exported video- I'm so confused. Here is the data of my video, if someone can help me find the settings that will keep my videos at the same or almost the same quality I would be so grateful!
Hi,
This link takes you to some info about your file ( pasted below )..and from this link you can probably also find more info as it applies to your needs...maybe.....
Also, Bill Hunt's suggestion and questions seem important ...you could give more info about what you are doing and using ( version premiere) etc etc
Rod
Good Luck
http://www.modthesims.info/archive/index.php/t-236047.html
prez28
17th Jun 2007, 08:08 AM
Hello!! Hopefully I am posting in the proper section. If not, I will be glad to repost in the proper area. I am hoping that a fellow ModtheSims2 member who has experimented with movie making in the sims 2 and Adobe Premiere Pro 2.0 could answer my question: I have been toying around with movie-making in the game
I film (or capture)the video clips (or shall I say computer game animations)using the game's best option of a resolution of 640 x 480 at 30 fps with audio at 11025hz 16-Bit mono (compressed). As you are surely aware the game saves the file into AVI format with the VP61 codec. When I open and view the AVI files using Microsoft Windows Media Player, the image is beautiful and crystal clear!!
If I import the AVI file into Windows Movie Maker 2.0, same thing, the image is beautiful and crystal clear!! But here is the problem, when I import the same AVI file into Adobe Premiere Pro 2.0, and play the file into the source window, the video is heavily pixelated, in fact very large square pixels...It almost appears like a mossiac over the entire video. I tried turning the frame blending off in Adobe Premiere under 'clip' and then 'video options' but that does not appear to help. All the latest drivers for everything on my PC have been installed. Here are my specs Windows Media Center Edition 2005
P5W-DH Deluxe ASUS motherboard
Intel Dual Core 2.4ghz processor
2 XFX NVidia 7950GT graphic's card (512mb)
4GB Ram (although windows xp only uses about 2.5 to 3ghz of it)
1 200gb hard drive
1 500gb hard drive
Audigy 2 Platinum zs sound card Maybe Adobe does not support the VP61 codec, but I have not been able to confirm this anywhere. However I did find an article from the Adobe website about two machinima artists that use Adobe Premiere to make 'Sims 2' videos.
Here is the link to that article: http://www.adobe.com/motion/roosterteeth.html When I record using the game's top setting of 640 x 480 30fps, I am playing the game on a 20" widecreen LCD monitor with the resolution set at 1024 x 768. Might this be the problem? I found a 'cheat' on the internet to change the game's settings in the game's config. file so that it would capture the animations at 1024 x 768, like the resolution for my PC monitor. But once played in Adobe Premiere Pro 2.0, the clips still have the large square pixel problem... Its like big white and blue squares all over the image... But Maybe since I am using a widescreen monitor I must capture and edit in a true widecreen format like 1280x720 or above??? I dont know. I just find it weird that the AVI files play fine with Windows Movie Maker and Windows Media Player but not with Adobe Premiere Pro 2.0 Being the amature I am with Adobe, maybe I am doing something wrong. But I did search all the forums and cannot seem to find any info to fix the problem... Maybe I must convert the AVI files before importing them into Adobe, but if it could be avoided that would be cool ... so if you have any info that could help me it would be much appreciated!! Cheers!
Prez28
Sims 2 movie-maker and Adobe-Beginner
whiterider
17th Jun 2007, 11:45 AM
I'm afraid I haven't used Adobe Premiere, but have you checked on their site and support forums? I've used TS2 video clips in other movie editing programs in the past, so the format does work - it certainly sounds like Adobe is having issues there. Have you tried different codecs? You may also want to go have a look at sims99.com, a TS2 machinima site, which may have more info.
prez28
17th Jun 2007, 10:13 PM
Thank-you for your reply - I did post this question at the sites you mentionned and suprisingly received many responses from the Adobe Premiere Pro 2.0 support forums It would appear the Adobe Premiere Pro 2.0 does not like compressed AVI files and it would also appear that Adobe does not like the VP61 codec that the Sims 2 game uses to compress the movie file (AVI). When I capture the Sims 2 movies by setting the options to 'Large' (640 x 480) and 'High' (30fps) - then the clips will not play properly in Adobe Premiere Pro 2.0 But when I capture the Sims 2 movies by setting the options to 'Large' (640 x 480) and 'High, uncompressed' (30fps) - then the clips play properly in Adobe Premiere Pro 2.0 I thought I had tested this originally, but that it was not making a difference. But I must of messed up, because as I say, if I film compressed, the clips have the pixelation problems in Adobe. If I film uncompressed there is no problems with the clips in Adobe. The only downside is that uncompressed clips are very large. (Like 1.5GB for 60 second clip) Cheers! -
I have posted this over on the Spry forum but wonder if someone else has had a similar issue and found a solution as I am trying to find the answer to this quickly if possible; I want to use a tooltip with an xml data set.
I have an xml data set of events and within it there is a tooltip element. How can I get another element to act as a trigger so my tooltip appears when I mouseover the element?
My data set is displaying correctly. I'm trying to get the event title element to act as the trigger and the code that I have so far:
<div spry:region="eventsDS">
<table width="533">
<tr>
<th width="108" spry:sort="date">Date</th>
<th width="105" spry:sort="title">Title</th>
<th width="98" spry:sort="location">Location</th>
<th width="202" spry:sort="price">Price</th>
</tr>
<tr spry:repeat="eventsDS">
<td>{date}</td>
<td><a href="#tooltiptrigger">{title}</a></td>
<td>{location}</td>
<td>{price}</td>
</tr>
</table>
</div>
<div class="tooltipContent" id="sprytooltip" spry:detailregion="eventsDS">{tooltip}</div>
<p><a href="#top">back to top</a></p>
<script type="text/javascript">
var sprytooltip = new Spry.Widget.Tooltip("sprytooltip", "#tooltiptrigger");
</script>I see & chars in your xml, try wrapping it in <[CDATA[
]> tags like this:
<description> <[CDATA[Beer (B), Beer & Wine (BW)
or Beer, Wine & Liquor (BWL)<br />
Off sale only, no consumption on the licensed
premises]]></description>
Also if check out your xml in firefox, you will see that it
shows a parsing error, most likely caused by the issue i addressed
above. -
Need help with XML response to refresh document with context and prompts
I've been working with the Restful api for a few weeks now and have been able to figure out most of what I need to automate testing of our reports. However, one task that I have not been able to figure out is how to refresh a document that contains both a context and two prompts for dates.
Here is what I have tried, and what the API responds with.
1) I queried the API for this document's parameters using the following call after logging in -
headers = {:accept=>'application/xml', :content_type=>'application/xml', :x_sap_logontoken=>@token}
url = "http://our.url.net:6405/biprws/raylight/v1/documents/12345/parameters"
RestClient.get(url, headers)
The response from the API is:
<parameters>
<parameter dpId="DP0" type="context" optional="false">
<id>0</id>
<technicalName>cQuery 1</technicalName>
<name>Select a context</name>
<answer type="Text" constrained="true">
<info cardinality="Single">
<lov partial="false">
<values>
<value id="CTX_1">LOAN</value>
<value id="CTX_9">LOAN_APPLICATION</value>
</values>
</lov>
<values>
<value id="CTX_1">LOAN</value>
<value id="CTX_9">LOAN_APPLICATION</value>
</values>
<previous>
<value id="CTX_9">LOAN_APPLICATION</value>
</previous>
</info>
<values>
<value id="CTX_9">LOAN_APPLICATION</value>
</values>
</answer>
</parameter>
</parameters>
2) This tells me I need to supply a context, so I then replace my RestClient.get call with a RestClient.put call with the following payload:
<parameters>
<parameter>
<id>0</id>
<answer>
<values>
<value id=\"CTX_9\"/>
</values>
</answer>
</parameter>
</parameters>
3) This satisfies the context portion of the refresh. The API replies with the following response, telling me I need to answer two prompts -
<parameters>
<parameter dpId=\"DP0\" type=\"prompt\" optional=\"false\">
<id>1</id>
<technicalName>psEnter value(s) for Start Date of Application Received Date</technicalName>
<name>Enter value(s) for Start Date of Application Received Date</name>
<answer type=\"DateTime\" constrained=\"false\">\
<info cardinality=\"Single\"/>
</answer>
</parameter>
<parameter dpId=\"DP0\" type=\"prompt\" optional=\"false\">
<id>2</id>
<technicalName>psEnter value for End Date of Application Received Date</technicalName>
<name>Enter value for End Date of Application Received Date</name>\
<answer type=\"DateTime\" constrained=\"false\">
<info cardinality=\"Single\"/>
</answer>
</parameter>
</parameters>
4) Here is where I am having problems. I have tried all kinds of permutations of the below payload/response body. All I ever get from the API is a 400 - BadResponse error.
<parameters>
<parameter>
<id>0</id>
<answer>
<values>
<value id=\"CTX_9\"/>
</values>
</answer>
</parameter>
</parameters>
<parameters>
<parameter type=\"prompt\">
<id > 1 </ id>
<answer type=\"DateTime\">
<values>
<value>2012-06-11T09:50:54.000-04:00</value>
</values>
</answer>
</parameter>
<parameter type=\"prompt\">
<id > 2 </ id>
<answer type=\"DateTime\">
<values>
<value>2014-07-11T09:50:54.967-04:00</value>
</values>
</answer>
</parameter>
</parameters>
I am not very good with XML and the terminology around it, and I haven't received much training around using the Restful API other than the SDK documentation. I have a feeling there is something very basic that Im missing here. What is the correct XML needed in the response body to properly refresh the document?If you are more confortable with JSON, Raylight supports it as well.
Best regards,
Anthony -
Help with corrupted nested sequences.
First off, let me say that next project I'm going with Avid.
I have been using nested sequences as sparingly as possible on a long, complicated project, but the few that I have are prone to getting "corrupted" (this is the technical term that Kevin Monahan from Adobe has used to describe what's happening). So it's been recommended that I replace the corrupted sequence. Sure I can just copy the material in the corrupted sequence and place it in a new sequence, but how can I do this without loosing my HOURS of edits with this nested sequence in my main timeline?
Thanks,
Steve KellerHave you got a backup of your original photos? If so then you can
recreate the catalogue very easily in less than 5 minutes. PSE always
leaves photos in their original location. they are not moved at all.
One should always backup photos, videos, documents, emails etc
separately from applications that created them in the first place.
Disasters happen and we can't always protect from them except to backup
as taught in computing 101 class. -
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'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'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's First Name</Attr_desc><AttrValue>Enroll</AttrValue></Attr><Attr><AttrID>30002</AttrID><AttrName>ENROLLEE_MIDDLE_INIT</AttrName><Attr_desc>Enrollee's Middle Initial</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30003</AttrID><AttrName>ENROLLEE_LAST_NAME</AttrName><Attr_desc>Enrollee's Last Name</Attr_desc><AttrValue>User11</AttrValue></Attr><Attr><AttrID>30004</AttrID><AttrName>ENROLLEE_WORK_PHONE</AttrName><Attr_desc>Enrollee'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's Work Extension</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30007</AttrID><AttrName>ENROLLEE_EMAIL</AttrName><Attr_desc>Enrollee'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'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's Mailing Address #2</Attr_desc><AttrValue> </AttrValue></Attr><Attr><AttrID>30010</AttrID><AttrName>ENROLLEE_CITY</AttrName><Attr_desc>Enrollee's City</Attr_desc><AttrValue>Herndon</AttrValue></Attr><Attr><AttrID>30011</AttrID><AttrName>ENROLLEE_STATE</AttrName><Attr_desc>Enrollee's State</Attr_desc><AttrValue>VA</AttrValue></Attr><Attr><AttrID>30012</AttrID><AttrName>ENROLLEE_ZIP</AttrName><Attr_desc>Enrollee's Zip</Attr_desc><AttrValue>28408</AttrValue></Attr><Attr><AttrID>30013</AttrID><AttrName>ENROLLEE_USER_NAME</AttrName><Attr_desc>Enrollee'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'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's First Name</AttrDesc>
<AttrName>ENROLLEE_FIRST_NAME</AttrName>
<AttrID>30001</AttrID>
<AttrValue>John</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Middle Initial</AttrDesc>
<AttrName>ENROLLEE_MIDDLE_INIT</AttrName>
<AttrID>30002</AttrID>
<AttrValue>J</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Last Name</AttrDesc>
<AttrName>ENROLLEE_LAST_NAME</AttrName>
<AttrID>30003</AttrID>
<AttrValue>Doe</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee'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's Work Extension</AttrDesc>
<AttrName>ENROLLEE_EXT</AttrName>
<AttrID>30006</AttrID>
<AttrValue>1234567</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Email</AttrDesc>
<AttrName>ENROLLEE_EMAIL</AttrName>
<AttrID>30007</AttrID>
<AttrValue>[email protected]</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Mailing Address #1</AttrDesc>
<AttrName>ENROLLEE_MAIL_ADDR_1</AttrName>
<AttrID>30008</AttrID>
<AttrValue>10 Maple Street</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Mailing Address #2</AttrDesc>
<AttrName>ENROLLEE_MAIL_ADDR_2</AttrName>
<AttrID>30009</AttrID>
<AttrValue>.</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's State</AttrDesc>
<AttrName>ENROLLEE_STATE</AttrName>
<AttrID>30011</AttrID>
<AttrValue>MA</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee's Zip</AttrDesc>
<AttrName>ENROLLEE_ZIP</AttrName>
<AttrID>30012</AttrID>
<AttrValue>02668</AttrValue>
</Attr>
<Attr>
<AttrDesc>Enrollee'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'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> -
Found this on the internet and am not sure where i would set
the height for my iframe content to be 100% or to adjust to the
content within, as I am a novice I was hoping someone could direct
me easily. Please just indicate where I would actually set the
dimensions for the height, thanks!
I have an external page called settings.xml, that contains
the following:
<?xml version="1.0" encoding="iso-8859-1"?>
<iframe>
<item name="height" attribute="height" type="text">
</iframe>
In the content of my page I have this:
<xsl:template mode="show"
match="element[@type='iframe']">
<div>
<xsl:variable name="height">
<xsl:value-of select="600px"/>
</xsl:variable>
<iframe width="770px" height="{$height}" scrolling="no"
frameborder="0" src="
http://172.16.5.139/netpub/server.np?find&catalog=catalog&site=showcase&temp
late=results.np&field=Path&op=starts
with&value=::Nycfpcl01-d1:NYCGeneral:DTM:Showcase:print:brochures&sorton=Cataloged&ascend i
ng=0" />
</div>
</xsl:template>
Any help would be greatly appreciated.:confused;can anyone offer advice?
-
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 DocThe 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.
Maybe you are looking for
-
Can someone help me install Acrobat 8 Pro on MAC 10.9.4?
Can someone help me install Acrobat 8 Pro on MAC 10.9.4?
-
PDF files will not open in Firefox 3.0.10
When I click on a PDF file nothing happens. I have installed the Reader, repaired it, uninstalled the Reader and unistalled it to no avail. There was a problem with FoxitPDF reader which had and is installed, since then I can not open PDF files.
-
Problem exporting 1080p/59.94 CS6.0.3 ...
I have a Sony consumer camcorder where I am recording 1080p/59.94 footage which gets stored in .mts files. I put in a screen shot from MediaInfo below if that helps. My target is a Sony PS3. I can play the native .mts file off the camera directl
-
RAC One Node: downtime after HW-outage?
Hi , RAC One Node seems to be a good alternative compared to a "regular" RAC. Since we don't have any experience with RAC One Node we are currently going through the available documentaion and try to get a picture of the advantages/disadvantages. One
-
2 Things: Safari Bookmarking + FTP Publishing
Sounds like a stupid question but does anyone know how to bookmark a specific topic using safari when using a Flash skin?? I'm 85% sure this cannot be done. Also, is anyone else experience slow ftp publishing times? I'm publishing to a win2003 via ft