Трансформация с помощью DOMDocument

В этом примере создается ASP-страница, при обращении к которой из базы будет выбран Recordset и сохранен в объект DOMDocument. Далее к документу будет применен шаблон трансформации, и результирующий HTML будет передан клиенту. Результат будет точно таким же, как в примере с трансформацией в разделе «URL-запросы». Код ASP:

<% ' Define some constant for ADO.Const adopenStatic = 3Const adLockReadOnly = 1Const adCmdText = 1Const adPersistXML = 1 ' Creating objectsDim rs,dom,stylesheetSet dom = Server.CreateObject("MSXML2.DOMDocument")Set stylesheet = Server.CreateObject("MSXML2.DOMDocument")Set rs = Server.CreateObject("ADODB.Recordset") ' Open recordsetrs.Open "select au_fname,au_lname,address from authors where au_fname like 'M%'", _ "Provider=sqloledb;Data Source=server;Initial Catalog=pubs;" & _ "User Id=user;Password=password;", adopenStatic, adLockReadOnly, adCmdText ' Save recordset to DOMDocumentrs.Save dom,adPersistXML ' Loading stylesheetstylesheet.async = falsestylesheet.load "C:\Inetpub\wwwroot\server_pubs\format_for_ado.xsl" ' Perform transformationResponse.Write dom.transformNode(stylesheet) ' CleanupSet dom = nothingSet stylesheet = nothingSet rs = nothing%>

Шаблон трансформации практически не изменился:

<?xml version="1.0" ?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" version="1.0"> <xsl:template match = "*"> <xsl:apply-templates /> </xsl:template> <xsl:template match = "z:row"> <li> <table><tr> <td><xsl:value-of select = "@au_fname" /></td> <td><xsl:value-of select = "@au_lname" />.</td> <td>Address: <xsl:value-of select = "@address" /></td> </tr></table> </li> </xsl:template> <xsl:template match = "/"> <html> <body> <ul> <xsl:apply-templates select = "xml/rs:data" /> </ul> </body> </html> </xsl:template> </xsl:stylesheet>