It sets the scene for server-side XML, and shows what you can do with it, by way of a parallel example done in ASP, PHP, and JSP (we have only included the first of the example sections here). The three chapters that follow this one in the book are case studies, which go into using XML with the three server-side languages mentioned above in much more detail.
This sample is taken from Chapter 8 "Introduction to Server-Side XML" of the glasshaus title "Practical XML for the Web".
                








ASP: Transforming the XML
  The following page (cd_list.asp) 
    does the trick:
   
    <%@ Language=VBScript %>
    <%
      Dim oXML, oXSL
      Set oXML = CreateObject("MSXML2.DOMDocument")
      oXML.load(Server.MapPath("cd_list.xml"))
      Set oXSL = CreateObject("MSXML2.DOMDocument")
      oXSL.load(Server.MapPath("cd_list.xsl"))
      Response.write oXML.transformNode(oXSL)
    %>
   
  First we create an XML document object:
   
    Set 
      oXML = CreateObject("MSXML2.DOMDocument")
   
  Then we load the cd_list.xml 
    into the object:
   
    oXML.load(Server.MapPath("cd_list.xml"))
   
  We do the same for the cd_list.xsl 
    document, and finally we perform the transformation and write out the result.
  PHP: Transforming the XML
  Performing an XSL transformation in PHP is relatively straightforward. Once 
    you have the XSLT extension installed the following script is all it takes 
    (cd_list.php):
   
    <?php
      $xsltHnd = xslt_create();
      xslt_set_base($xsltHnd,'file://c:/xml/chapter10/');
      $html =  
      xslt_process($xsltHnd, 'cd_list.xml', 'cd_list.xsl');
      echo 
      $html;
    ?>
   
  The first line:
   
    $xsltHnd = xslt_create();
   
  creates a new XSLT processor. The function returns 
    the XSLT processor resource, which we will use for all our other XSLT functions.
  If you are working on a Windows machine and intend to pass external files 
    to the XSLT functions, you will need to set the base URI so that XPath can 
    resolve the file names. In the setup I used, the URI is as follows:
  
   
    xslt_set_base($xsltHnd,'file://c:/xml/chapter10/');
   
  With all the XML and XSL documents residing in C:\xml\chapter10. 
    xslt_set_base takes 
    2 arguments  the XSLT processor resource and the URI. Once we have set that, 
    we can then use the xslt_process 
    function to perform the transformation.
   
    $html =  xslt_process($xsltHnd, 
      'cd_list.xml', 
      'cd_list.xsl');
   
  In our example we have passed the function the three arguments  the XSLT 
    processor resource, the name of the XML file, and the name of the XSL stylesheet. 
    The result of the transformation is returned and stored in the variable $html.
  The xslt_process 
    function has an additional 3 optional arguments, and it is through these that 
    we have great versatility in the manner in which we can use the function. 
    Let's take a look at some of the other ways in which we could have written 
    this script:
   
    <?php
      $xsltHnd = xslt_create();
      xslt_set_base($xsltHnd,'file://c:/xml/chapter10/');
      xslt_process($xsltHnd, 'cd_list.xml', 
      'cd_list.xsl','cd_list.html');
    ?>
   
  In this example we are not returning the result of the transformation into 
    a variable; instead we are specifying a file name as the fourth argument  
    the results will be saved in cd_list.html. Another 
    way we can use the function is by having our XML and XSL stored in variables:
   
    <?php
      $xsltHnd = xslt_create();
      $xml = join('',file('cd_list.xml'));
      $xsl = join('',file('cd_list.xsl'));
      $arguments = array(
         '/_xml' => $xml,
         '/_xsl' => $xsl
      );
      $html = xslt_process($xsltHnd, 'arg:/_xml', 
      'arg:/_xsl', 
      NULL, $arguments);
      echo 
      $html;
    ?>
   
  In this example, the first thing you'll notice is that we have left out the 
    line that sets the base URI. Since our data is going to be stored in variables 
    we will not need to set this. The two lines:
   
    $xml = join('',file('cd_list.xml'));
    $xsl = join('',file('cd_list.xsl'));
   
  are simply setting the variables $xml and $xsl 
    to the contents of the XML and XSL files. The file() function reads a file off disk into an array, 
    one line per element. The join() function joins array elements with a specified 
    string.
  We then create an associative array, called $arguments, containing $xml and $xsl. 
    Since we don't want to output to a file, we make the fourth argument NULL. While we are talking about the arguments 
    to the xslt_process 
    function, it is worth noting that we can pass it an optional fifth argument, 
    which is an array of parameters. These parameters can then be accessed in 
    your XSL document with <xsl:param name="parameter_name">.
  
   
  








     
Comments
Be the first to write a comment
You must me logged in to write a comment.