La XSL que se aplica al retorno es esta:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="Root">
<select name="cbmLista" id="cbmLista">
<Option value="0">todas las listas</Option>
<xsl:apply-templates select="row">
<xsl:sort select="@NombreLista"/>
<xsl:sort select="@IdLista"/>
</xsl:apply-templates>
</select>
</xsl:template>
<xsl:template match="row">
<xsl:element name="Option">
<xsl:attribute name="Value">
<xsl:value-of select='@IdLista'/>
</xsl:attribute>
<xsl:value-of select='@NombreLista'/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
En la segunda página vemos una grilla con la lista de los mensajes que cumplen con las condiciones ingresadas en la primera página. Esta segunda página es el resultado de aplicar otra XSL al XML retornado por el método SearchSubject o el método SearchAll del WS según el botón que se halla presionado. Este es el código.
<%
Dim oWS, lcTxtABuscar, lnDiaDesde, lnMesDesde, lnAnoDesde
Dim lnDiaHasta, lnMesHasta, lnAnoHasta, ldDesde
Dim ldHasta, oXML, oXSL, sRetornoWS, lnIdLista, lcDondeBuscar
'Creo Objeto cliente SOAP
Set oWS = Server.CreateObject("MSSOAP.SoapClient")
oWS.ClientProperty("ServerHTTPRequest") = true
'Dirección del Motor
oWS.mssoapinit "http://webservices.mug.org.ar/motor.wsdl"
'Objeto para recibir el retorno del WS
Set oXML = Server.CreateObject("MSXML2.DomDocument")
oXML.async = false
'Objeto del XSL
Set oXSL = Server.CreateObject("MSXML2.DomDocument")
oXSL.async = false
'Recupero las variables enviadas por la página anterior
lcTxtABuscar = Request("TextoABuscar")
lnIdLista = cInt(Request("cbmLista"))
lnDiaDesde = cInt(Request("DiaDesde"))
lnMesDesde = cInt(Request("MesDesde"))
lnAnoDesde = cInt(Request("AnoDesde"))
lnDiaHasta = cInt(Request("DiaHasta"))
lnMesHasta = cInt(Request("MesHasta"))
lnAnoHasta = cInt(Request("AnoHasta"))
ldDesde = dateserial(lnAnoDesde, lnMesDesde, lnDiaDesde)
ldHasta = dateserial(lnAnoHasta, lnMesHasta, lnDiaHasta)
lcDondeBuscar= Request("DondeBuscar")
If Len(lcTxtABuscar) > 0 Then
'El help está en http://www.mug.org.ar/ModoDeUso.asp
if len(lcDondeBuscar) = 0 or lcDondeBuscar = "SS" then
'busca sólo en el "Subject"
sRetornoWS = oWS.SearchSubject(lcTxtABuscar , lnIdLista, ldDesde, ldHasta)
else
'busca en el "Subject" y en el "Body"
sRetornoWS = oWS.SearchAll(lcTxtABuscar , lnIdLista, ldDesde, ldHasta)
end if
'Si el primer carácter es 255 => un error
if left(sRetornoWS, 1) = chr(255) then
Response.Write("Error: "&mid(sRetornoWS, 2))
Else
'Cargamos el retorno del método en el objeto XML
oXML.loadXML sRetornoWS
'Cargamos el XSL
oXSL.load(Server.MapPath("/Proyectos")&"/ResultadosSS.xsl")
'Le aplicamos el XSL al XML y obtenemos un HTML
Response.Write(oXML.transformNode(oXSL))
End If
Else
Response.Write("Falta el texto a buscar")
End If
Set oWS = Nothing
Set oXML = Nothing
Set oXSL = Nothing%>
La XSL que se aplica al retorno es esta:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<BR/>
<table width="100%">
<tr>
<td align="center">
<font size="3"><b>
Buscador de mensajes enviados a las listas del MUG
</b></font>
</td>
<td align="right">
<a href="javascript:window.history.back();"> Atras </a>
</td>
</tr>
</table>
<BR/>
<table border="1" width="100%">
<tr>
<td bgcolor="silver"><font size="2"><b>Fecha</b></font></td>
<td bgcolor="silver"><font size="2"><b>Titulo</b></font></td>
<td bgcolor="silver"><font size="2"><b>Autor</b></font></td>
<td bgcolor="silver"><font size="2"><b>Id</b></font></td>
</tr>
<xsl:for-each select='Root/row'>
<tr>
<td><font size="2">
<xsl:for-each select="@Received">
<xsl:value-of select="substring(text(),9,2)"/>/
<xsl:value-of select="substring(text(),6,2)"/>/
<xsl:value-of select="substring(text(),1,4)"/>
</xsl:for-each>
</font></td>
<td><font size="2">
<xsl:value-of select='@Subject'/>
</font></td>
<td><font size="2">
<xsl:value-of select='@FromName'/>
</font></td>
<td><font size="2">
<xsl:element name="A">
<xsl:attribute name="TITLE">Click para ver el contenido</xsl:attribute>
<xsl:attribute name="HREF">Detalle.asp?Id=
<xsl:value-of select='@Id'/></xsl:attribute>
<xsl:value-of select='@Id'/>
</xsl:element>
</font></td>
</tr>
</xsl:for-each>
</table><br/>
</xsl:template>
</xsl:stylesheet>
Como se podrán dar cuenta el manejo es muy similar al anterior, con otro enfoque en cuanto al XSL, pero el manejo del WS es el mismo.
Como podrán ver, el manejo de un Web Service es simple y nos sirve para obtener información vía Internet sin tener en cuenta limitaciones de orden técnico, a la vez que nos permite elegir el lenguaje que queramos usar o el que nos resulte más cómodo, puesto el Microsoft SOAP Toolkit es aplicable a cualquier lenguaje que pueda interactuar con COM.
Usuarios que han visto este tema también han visto...
- Cómo crear un proyecto ASP.NET
- Agregar, eliminar y modificar datos a una BD con ASP
- Validar usuarios con Sesiones con ASP
- Generador de claves aleatorias
- MapPath en ASP
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.