I’ve recently been playing around with the SIMILE Timeline visualizer for XML data, which is pretty neat. I had one minor little gripe with it, which is that I wanted to be able to use data from an XML string in certain cases where I already was working in the context of an XSL stylesheet instead of hitting the server again just to present the same data in a different XML structure for the timeline. So I downloaded the code, told it NOT to use the bundled code in timeline-bundle.js by editing appropriately in timeline-api.js, and started experimenting with the sources.
What seems to have worked for me is the following modification [I added it just before the line starting: Timeline.DefaultEventSource.prototype.loadXML = function…] to sources.js (pardon the messy formatting here – you can correct the line breaks in the text editor of your choice 🙂 ):
Timeline.DefaultEventSource.prototype.loadXMLText = function(sometext) {
return Try.these(
// For Firefox, etc.
function() { return new DOMParser().parseFromString(sometext, ‘text/xml’); },
// For IE
function() { var xmldom = new ActiveXObject(‘Microsoft.XMLDOM’); xmldom.loadXML(sometext); return xmldom; },
// As a last resort, try loading the document from a data: URL. This is supposed to work in Safari. Thanks to Manos Batsis and his Sarissa library (sarissa.sourceforge.net) for this technique. (NS: – got this from timeline-helper.js in the GWT Timeline build)
function() { var url = “data:text/xml;charset=utf-8,” + encodeURIComponent(sometext); var request = new XMLHttpRequest(); request.open(“GET”, url, false); request.send(null); return request.responseXML; }
);
};
and in your calling script, replacing the line:
Timeline.loadXML(“example1.xml”, function(xml, url) { eventSource.loadXML(xml, url); });
with the following:
eventSource.loadXML(eventSource.loadXMLText(xmlstring,), “http://path.to.script/goes/here”);
Replace “xmlstring” with either a quoted string of XML or a string variable, and edit your path accordingly. Hope it works for you – it seems to be working fine for me!
Hi there!
For the solution that you mentioned above,
~Timeline.loadXML(“example1.xmlâ€, ~
What should I change for the “example1.xml” since I want to call xml file from a script?
Thank you
It’s been a very long time since I touched this code, but I believe it just refers to the URL of the calling script – i.e., your PHP/Perl/ASP script (e.g., “myscript.php”) that loads the Timeline javascript in the first place.
Hope this helps.
Hi,
i’m a novice and i’m running short of time.. i din get this part.. http://path.to.script/goes/hereâ€.. so which script you are pointing to.