Por último, necesitamos dos rutinas escritas en VBScript (o JSCript) para realizar la transformación XML a HTML, y para añadir elementos item al documento XML a partir de un formulario en HTML.
El código para realizar la transformación es muy simple usando el parser de Microsoft.
xmlDoc = "data.xml"
xslDoc = "gbook.xsl"
Set xmlObj = CreateObject("Microsoft.XMLDOM")
xmlObj.Async = False
xmlObj.Load(Server.MapPath(xmlDoc))
Set xslObj = CreateObject("Microsoft.XMLDOM")
xslObj.Async = False
xslObj.Load(Server.MapPath(xslDoc))
Response.Write(xmlObj.transformNode(xslObj))
Set xmlObj = nothing
Set xslObj = nothing
El código para añadir un elemento item al documento XML, se basa en crear el nodo item en una cadena de texto, cargar la cadena de texto en una instancia del parser, y utilizar el método appendChild del DOM para añadirlo al documento XML que almacena nuestros datos.
stringNuevo = vbCrLf & "<item>" & vbCrLf & _
"<author>" & nombre & "</author>" & vbCrLf & _
"<email>" & email & "</email>" & vbCrLf & _
"<datetime order=""" & orden & """>" & fecha & "</datetime>" & vbCrLf & _
"<ip>" & ip & "</ip>" & vbCrLf & _
"<text>" & text & "</text>" & vbCrLf & _
"</item>" & vbCrLf & vbCrLf
Set xmlObj = CreateObject("Microsoft.XMLDOM")
xmlObj.Async = False
xmlObj.Load(Server.MapPath("data.xml"))
Set xmlObj2 = CreateObject("Microsoft.XMLDOM")
xmlObj2.Async = False
xmlObj2.LoadXML(stringNuevo)
Set root = xmlObj.documentElement
Set root2 = xmlObj2.documentElement
root.appendChild(root2)
xmlObj.Save(Server.MapPath("data.xml"))
Set xmlObj = nothing
Set xmlObj2 = nothing
Por fin, integrando este código en un solo fichero .ASP, y haciendo que el formulario se llame a si mismo:
<% If Len(Trim(nombre))=0 Then
okay = False
mensaje = mensaje & "El nombre es obligatorio. "
End If
If Len(Trim(texto))=0 Then
okay = False
mensaje = mensaje & "El texto es obligatorio. "
End If
ip = Request.ServerVariables("REMOTE_HOST")
fecha = Day(Now) & "-" & Month(Now) & "-" & Year(Now)
fecha = fecha & " (" & Hour(Now) & ":"
If Minute(Now)<10 Then fecha=fecha & "0"
fecha = fecha & Minute(Now) & ")"
orden = Year(Now)
If Month(Now)<10 Then orden=orden & "0"
orden = orden & Month(Now)
If Day(Now)<10 Then orden=orden & "0"
orden = orden & Day(Now)
If Hour(Now)<10 Then orden=orden & "0"
orden = orden & Hour(Now)
If Minute(Now)<10 Then orden=orden & "0"
orden = orden & Minute(Now)
stringNuevo = vbCrLf & "<item>" & vbCrLf & _
"<author>" & nombre & "</author>" & vbCrLf & _
"<email>" & email & "</email>" & vbCrLf & _
"<datetime order=""" & orden & """>" & fecha & "</datetime>" & vbCrLf & _
"<ip>" & ip & "</ip>" & vbCrLf & _
"<texto>" & texto & "</texto>" & vbCrLf & _
"</item>" & vbCrLf & vbCrLf
If okay Then
Set xmlObj = CreateObject("Microsoft.XMLDOM")
Set xmlObj2 = CreateObject("Microsoft.XMLDOM")
xmlObj.Async = False
xmlObj.Load(Server.MapPath("data.xml"))
xmlObj2.Async = False
xmlObj2.LoadXML(stringNuevo)
Set root = xmlObj.documentElement
Set root2 = xmlObj2.documentElement
root.appendChild(root2)
xmlObj.Save(Server.MapPath("data.xml"))
Set xmlObj = nothing
Set xmlObj2 = nothing
nombre = ""
email = ""
texto = ""
End If
Else
nombre = ""
email = ""
texto = ""
End If
xmlDoc = "data.xml"
xslDoc = "gbook.xsl"
Set xmlObj = CreateObject("Microsoft.XMLDOM")
xmlObj.Async = False
xmlObj.Load(Server.MapPath(xmlDoc))
Set xslObj = CreateObject("Microsoft.XMLDOM")
xslObj.Async = False
xslObj.Load(Server.MapPath(xslDoc))
Response.Write(xmlObj.transformNode(xslObj))
Set xmlObj = nothing
Set xslObj = nothing
%>
<br>
<form action="gbook.asp" method="POST">
<input type="Hidden" name="x" value="x">
<table width="95%" border="0" cellspacing="0" cellpadding="2"
align="center" class="col">
<tr>
<td width="100">Nombre</td>
<td>
<input type="text" name="nombre" value="<%= nombre %>">
</td>
</tr>
<tr>
<td width="100">Email</td>
<td>
<input type="text" name="email" value="<%= email %>">
</td>
</tr>
<tr>
<td width="100">Texto:</td>
<td rowspan="2">
<textarea rows="5" name="texto"><%= texto %></textarea>
</td>
</tr>
<tr>
<td width="100" align="left" valign="bottom">
<input type="submit" name="Submit" value=" Enviar ">
</td>
</tr>
</table>
</form>
<p align="center"><font color="red"><%= mensaje %></font></p>
</body>
Usuarios que han visto este tema también han visto...
- Desarrollo de un libro de visitas usando XML y ASP
- Microsoft Excel en ASP.NET
- Server Side Includes con ASP
- Generador de claves aleatorias
- Tres funciones útiles para fechas 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.