Platform SDK: Exchange 2000 Server |
[This is preliminary documentation and subject to change.]
This example uses an XSL stylesheet to render the results of a PROPFIND command.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Demo DAV Request</title> <meta name="Microsoft Theme" content="none, default"> </head> <xml id=calxsl> <xsl:template xmlns:xsl="uri:xsl" xmlns:d="DAV:"> <table id="thetable" onclick="clickrow();" border="4" width="100%" style="border-style: groove" cellspacing="0" bordercolor="#808080" bordercolorlight="#808080" bordercolordark="#000080"> <tr> <td width="25%" onclick="resort(0, 'd:displayname');" bgcolor="silver"><font face="Tahoma" size="1"><b>Name</b></font></td> <td width="25%" onclick="resort(1, 'd:propstat/d:prop/d:creationdate');" bgcolor="silver"><font face="Tahoma" size="1"><b>Creation Date</b></font></td> <td width="25%" onclick="resort(2, 'd:propstat/d:prop/d:getlastmodified');" bgcolor="silver"><font face="Tahoma" size="1"><b>Last Modified</b></font></td> </tr> <xsl:for-each select="d:multistatus/d:response" order-by="d:href"> <tr> <td><xsl:value-of select="d:href" /></td> <td><xsl:for-each select="d:propstat/d:prop/d:creationdate"> <xsl:eval>this.nodeTypedValue</xsl:eval></xsl:for-each></td> <td><xsl:value-of select="d:propstat/d:prop/d:getlastmodified" /></td> </tr> </xsl:for-each> </table> </xsl:template> </xml> <body> <h1>Simple DAV request</h1> <p>URL: <INPUT type="text" id=urlid name=urlid value="http://myServer1/" size=128></p> <p>Depth: <SELECT id=depthid name=depthid> <OPTION value="0">0</OPTION> <OPTION value="1" SELECTED>1</OPTION> <OPTION value="1,noroot">1,noroot</OPTION> <OPTION value="infinity">infinity</OPTION> </SELECT><INPUT type="button" value="Go" id=button1 name=button1 onclick="update()"></p> <div id=xsldest> </div> <script> function clickrow() { src = event.srcElement; while(src.tagName != "TR") src = src.parentElement; if(src == thetable.rows[0]) return; for(i=0; i < thetable.rows.length; i++) { onerow = thetable.rows[i]; for(j = 0; j < onerow.cells.length; j++) { onecell = onerow.cells[j]; onecell.style.backgroundColor = "white"; onecell.style.color = "black"; } } for(j = 0; j < src.cells.length; j++) { onecell = src.cells[j]; onecell.style.backgroundColor = "black"; onecell.style.color = "white"; } } function resort(col, sortby) { thenode = calxsl.selectSingleNode("xsl:template/table/xsl:for-each"); thenode.setAttribute("order-by", sortby); xsldest.innerHTML = thexml.transformNode(calxsl.documentElement); therow = thetable.rows[0]; therow.cells[col].style.backgroundColor = "gray"; } </script> <script> var request; var thexml; function dostatechange() { if(request == null || request.readystate != 4) return; if(request.status != 207) { xsldest.innerText = "Error, status = " + request.status + " " + request.statusText; } else { thexml = request.responseXML; xsldest.innerHTML = thexml.transformNode(calxsl.documentElement); } request = null; } function update() { request = new ActiveXObject("microsoft.xmlhttp"); request.open("PROPFIND", urlid.value, true); request.setRequestHeader("depth", depthid.value ); request.onreadystatechange = dostatechange; xsldest.innerHTML = "<h4>loading...</h4>"; request.send(""); } update(); </script> </body> </html>