[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Load XSL dynamically

Subject: RE: Load XSL dynamically
From: Maria Amuchastegui <mamuchastegui@xxxxxxxxxxx>
Date: Wed, 13 Apr 2005 09:17:24 -0400
javascript load xsl
I'm not sure if this is what you had in mind. The following HTML file
contains links to two external XSL stylesheets, each of which provides a
different view of the same data:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script language="JavaScript">
function transformIsland(xmlIsland,xslFile) {

     if (document.implementation && document.implementation.createDocument)
// Netscape
          {
          var xsltProcessor = new XSLTProcessor();

          // Load the xsl file using synchronous XMLHttpRequest
          var myXMLHTTPRequest = new XMLHttpRequest();
          myXMLHTTPRequest.open("GET", xslFile, false);
          myXMLHTTPRequest.send(null);
          var xslRef = myXMLHTTPRequest.responseXML;
          xsltProcessor.importStylesheet(xslRef);

          // create a new XML document in memory
          var xmlRef = document.implementation.createDocument("", "", null);
          var myNode = document.getElementById(xmlIsland);
          var clonedNode = xmlRef.importNode(myNode.childNodes.item(1),
true);
          xmlRef.appendChild(clonedNode);

          // do the transform
          var fragment = xsltProcessor.transformToFragment(xmlRef,
document);
          var divNode=document.getElementById("divResults");
          divNode.innerHTML="";
          divNode.appendChild(fragment);

          }
     else if (window.ActiveXObject) // Internet Explorer
          {
          xslRef = new ActiveXObject("Microsoft.XMLDOM");
          xslRef.load(xslFile);
          var xmlRef = document.getElementById(xmlIsland);
          divResults.innerHTML = xmlRef.transformNode(xslRef);

          }
     else
          {
          alert('Your browser can\'t handle this script'); // unsupported
browser
          }

}
</script>
</head>
<body>

<a href="javascript:transformIsland('XMLData','xslStyle1.xsl');">View
1</a><br>
<a href="javascript:transformIsland('XMLData','xslStyle2.xsl');">View
2</a><br>
<br><br>
<div id="divResults">
</div>

<xml id="XMLData" style="display:none;">
<catalog>
     <cd>
          <header>Empire Burlesque</header>
          <artist>Bob Dylan</artist>
          <country>USA</country>
          <company>Columbia</company>
          <price>10.90</price>
          <year>1985</year>
     </cd>
     <cd>
          <header>Hide your heart</header>
          <artist>Bonnie Tyler</artist>
          <country>UK</country>
          <company>CBS Records</company>
          <price>9.90</price>
          <year>1988</year>
     </cd>
     <cd>
          <header>Greatest Hits</header>
          <artist>Rod Stewart</artist>
          <country>USA</country>
          <company>RCA</company>
          <price>9.90</price>
          <year>1982</year>
     </cd>
</catalog>

</xml>

</body>
</html>

-----Original Message-----
From: Camalesn [mailto:noelamac@xxxxxxxxx]
Sent: Wednesday, April 13, 2005 7:26 AM
To: XSL list
Subject:  Load XSL dynamically

Hello,

I'm not sure about how to achieve this or even if it's an XSL related
question:

I have one XML file (sample):

-<book>
--<section>
----<chapter>Chapter 1</chapter>
----<notes>Some notes on this chapter</notes> --</section> --<section>
----<chapter>Chapter 2</chapter> ----<notes>Some notes on this
chapter</notes> --</section> --<section> ----<chapter>Chapter 3</chapter>
----<notes>Some notes on this chapter</notes> --</section> -</book>

As <notes> are very long (some of them cannot be printed on standard
sheet) I would like to make a link in order to render the content of this
node in a new XHTML page. For example:

Section 1 (<a href="#">see notes</a>)
Chapter  1 (...)

Section 2 (<a href="#">see notes</a>)
Chapter  2 (...)

Is it possible? How could this be done? How can I store the node value in a
param and then get its content to display in a new transformation? Can I
dynamically perform another transform with a new XSL file on the same XML?

Greetings.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.