Home arrow ASP arrow Page 4 - SQL Server 2000, XML and XSL: The Ultimate Combination
ASP

SQL Server 2000, XML and XSL: The Ultimate Combination


All the hype that once surrounded XML is finally starting to die down, and developers are really beginning to harness the power and flexibility of the language. In this article, Mitchell will show us how SQL Server 2000 incorporates XML support using the "FOR XML EXPLICIT" method to retrieve data from a table as a customised XML document.

Author Info:
By: Mitchell Harper
Rating: 5 stars5 stars5 stars5 stars5 stars / 21
January 07, 2002
TABLE OF CONTENTS:
  1. · SQL Server 2000, XML and XSL: The Ultimate Combination
  2. · Creating our sample database
  3. · Creating the stored procedure
  4. · Displaying the XML with ASP and XSL
  5. · Conclusion

print this article
SEARCH DEVARTICLES

SQL Server 2000, XML and XSL: The Ultimate Combination - Displaying the XML with ASP and XSL
(Page 4 of 5 )

Now that we've created our stored procedure named "sp_GetExplicitXML", we'll want to be able to do something useful with it. We can start by making sure the stored procedure returns the results we expected by typing the following code into a new query analyser window:

use myProducts

go

exec sp_GetExplicitXML


If all goes well, you'll be presented with one row of XML that contains the results of the stored procedure. To display our results in a browser, we'll create an ASP script that will execute the stored procedure, load the results into an MSXML DomDocument object, and then transform those results using an XSL stylesheet. Create a new ASP script and call it prodtest.asp. Enter the following code into prodtest.asp and save it into a directory that can be processed by IIS:

<!-- METADATA Type="TypeLib" File="c:\program files\common

files\system\ado\msado15.dll" -->

<%

dim objStream

dim objConn

dim objComm

dim objXML

set objStream = Server.CreateObject("ADODB.Stream")

set objConn = Server.CreateObject("ADODB.Connection")

set objComm = Server.CreateObject("ADODB.Command")

set objXML = Server.CreateObject("MSXML2.DOMDocument")

objConn.Open "Provider=SQLOLEDB; Data Source=(local); Initial

Catalog=myProducts; UId=sa; Pwd="

objComm.ActiveConnection = objConn

objComm.CommandType = adCmdStoredProc

objComm.CommandText = "sp_GetExplicitXML"

objStream.Open

objComm.Properties("Output Stream").Value = objStream

objComm.Execute ,, adExecuteStream

objStream.Position = 0

objXML.LoadXML("<?xml version='1.0'?><?xml-stylesheet type='text/xsl'

href='prodtest.xsl'?><My_Products>" &

objStream.ReadText & "</My_Products>")

if objXML.parseError.errorCode <> 0 then

Response.Write "Error loading XML: " & objXML.parseError.reason

Response.End

end if

Response.ContentType = "text/xml"

Response.Write objXML.xml

%>


I won't go into too much detail about the code for our prodtest.asp page. Basically, we're using ADO command and stream objects to execute our stored procedure and read the results to an MSXML DOMDocument, which is then parsed and checked for errors. If there are no errors, we change the content-type of our browsers output to text/xml and write the XSL transformed XML to the browser.

Notice that a stylesheet is set in our XML document to render the results into an easily readable format. The stylesheet, "prodtest.xsl" is shown below:

<?xml version="1.0" ?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">

<html>

<head>

<title> Sample Products </title>

</head>

<body>

<h1>Books in Catalog</h1>

<table border="0" cellspacing="2" cellpadding="3">

<xsl:for-each select="My_Products/Category">

<tr>

<td width="100%" bgcolor="#C0FFC0">

<xsl:value-of select="@CatName"/>

</td>

</tr>

<xsl:for-each select="Product">

<tr>

<td width="100%" bgcolor="#E9E9E9">

<p style="margin-left:30"><xsl:value-of select="@ProdName"/></p>

</td>

</tr>

</xsl:for-each>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>


Once we've saved the style sheet in the same directory as our "prodtest.asp" file, we can fire up our browser and run "prodtest.asp" (make sure you save the files into a directory that can be processed by IIS). The results are shown below:

The output from the XSL transformation
blog comments powered by Disqus
ASP ARTICLES

- Central Scoreboard with Flash and ASP
- Calorie Counter Using WAP and ASP
- Creating PGP-Encrypted E-Mails Using ASP
- Be My Guest in ASP
- Session Replacement in ASP
- Securing ASP Data Access Credentials Using t...
- The Not So Ordinary Address Book
- Adding and Displaying Data Easily via ASP an...
- Sending Email From a Form in ASP
- Adding Member Services in ASP
- Removing Unconfirmed Members
- Trapping HTTP 500.100 - Internal Server Error
- So Many Rows, So Little Time! - Case Study
- XDO: An XML Engine Class for Classic ASP
- Credit Card Fraud Prevention Using ASP and C...

Watch our Tech Videos 
Dev Articles Forums 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
Contact Us 
Site Map 
Privacy Policy 
Support 

Developer Shed Affiliates

 




© 2003-2017 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap
Popular Web Development Topics
All Web Development Tutorials