Transforming XML Content in IIS
This topic describes how to transform an XML file on an IIS server before sending the formatted content to a client. The transformation uses an XSLT file.
Example Code
The following example shows you how to use JScript to to fill an HTML DIV tag with the result of a transformation performed by a stylesheet called sample.xsl on a file called books.xml. This code can be placed in an HTML file.
This example was taken from the topic title transformNode.
<SCRIPT>
// Load data.
var source = new ActiveXObject("Msxml2.DOMDocument.4.0");
source.async = false;
source.load("books.xml");
if (xmlDoc.parseError.errorCode <> 0) {
var myErr = xmlDoc.parseError;
alert("You have error " + myErr.reason);
} else {
// Load style sheet.
var stylesheet = new ActiveXObject("Msxml2.DOMDocument.4.0");
if (xmlDoc.parseError.errorCode <> 0) {
var myErr = xmlDoc.parseError;
alert("You have error " + myErr.reason);
} else {
stylesheet.async = false
stylesheet.load("sample.xsl");
// Fill a div tag with the result of the transform
divInfo.innerHTML = source.transformNode(stylesheet);
}
}
</SCRIPT>
Example Code
The following example shows you how to use Visual Basic Scripting Edition (VBScript) to display the result of a transformation that is performed by a stylesheet called sample.xsl on a file whose name is sent in the Request.QueryString collection. This code can be placed in an ASP file.
Wrapping the call to Request.QueryString is a basic method of protecting against malicious user input. A more robust method is used in Validating User Input to Avoid Attacks.
This example was altered from sample in the the topic title transformNode.
<%@ Language = "VBScript" %>
<%
Dim source As New Msxml2.DOMDocument40
Dim stylesheet As New Msxml2.DOMDocument40
' Load data.
source.async = False
source.Load Server.HTMLEncode(Request.QueryString("XMLFileName"))
If (xmlDoc.parseError.errorCode <> 0) Then
Dim myErr
Set myErr = xmlDoc.parseError
Response.Write("You have error " & myErr.reason)
Else
' Load style sheet.
stylesheet.async = False
stylesheet.Load "sample.xsl"
If (xmlDoc.parseError.errorCode <> 0) Then
Dim myErr
Set myErr = xmlDoc.parseError
Response.Write("You have error " & myErr.reason)
Else
' Do the transform.
Response.Write(source.transformNode(stylesheet))
End If
End If
%>