Gamarod JavaScript - Rutinas JavaScript Efectos javascript Codigos javascript Rutinas JavaScript

Programacion




Todo sobre Xml - Desarrollo de un libro de visitas usando XML y ASP

Desarrollo de un libro de visitas usando XML y ASP





El fichero de datos

El objeto de este mini-tutorial es desarrollar una aplicación práctica sencilla utilizando XML (eXtended Mark-up Language) y ASP (Active Server Pages). Para saber un poco más de XML, visita la "Introducción a XML en castellano" o cualquiera de las miles de páginas que existen en la red sobre el tema.

Para almacenar las firmas de los visitantes a nuestro website vamos a utilizar un documento XML de la siguiente forma:




Andres
andres@correo.com
16-5-2000 (16:03)
197.50.123.14
Hola, me gusta tu tutorial


Juan
juan@email.es
17-5-2000 (14:13)
195.2.170.174
Saludos desde Albacete

Este documento XML contiene un elemento guestbook, que a su vez contiene elementos item. Un DTD para este documento sería el siguiente;

<!ELEMENT guestbook (item*)>
<!ELEMENT item (author, email, datetime, ip, text)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT ip (#PCDATA)>
<!ELEMENT text (#PCDATA)>
<!ELEMENT datetime (#PCDATA)>
<!ATTLIST datetime order CDATA #REQUIRED>

La razón de almacenar la fecha y hora de dos maneras diferentes en el elemento datetime es tener un formato para visualización (dd-mm-aaaa hh:mm) y otro para ordenación (yyyymmddhhmm) sin tener que hacer cambios de formato de fecha.

La transformación al Html

La transformación de XML a HTML la realizamos en el servidor, para asegurarnos una compatibilidad 100% con cualquier navegador web, utilizando el parser MSXML de Microsoft.

El documento XSLT que va a realizar la transformación es el siguiente (utilizando la implementación inicial de Microsoft para XSL)



mailto:




Es fácil ver que lo que hacemos es iterar a través de todos los elementos item contenidos en guestbook, y presentarlos como un documento HTML.

El código ASP

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 & "" & vbCrLf & _
"" & nombre & "" & vbCrLf & _
"" & email & "" & vbCrLf & _
"" & fecha & "" & vbCrLf & _
"" & ip & "" & vbCrLf & _
"" & text & "" & vbCrLf & _
"
" & 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 & "" & vbCrLf & _
"" & nombre & "" & vbCrLf & _
"" & email & "" & vbCrLf & _
"" & fecha & "" & vbCrLf & _
"" & ip & "" & vbCrLf & _
"" & texto & "" & vbCrLf & _
"
" & 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
%>



















Nombre

Email

Texto:





<%= mensaje %>





Informe (Xml) de Alfredo Areino
Webmaster de http://www.alfredoareino.com


 
Valora este artículo   Malo Excelente  

Han valorado este artículo de Xml. 9 usuario(s).
Valoración media: Desarrollo

Este artículo ha sido leído ( 8348 veces ).
Fecha: 10/20/2005


Agregar comentario | (0) comentarios
trucos Xml Recomendar este artículo Xml
Foros sobre Xml
Xml
Imprimir Xml
artículo Xml Agregar a Favoritos este artículo Xml


Xml
Artículos Relacionados

• Novedades de XML para Microsoft Windows 2000

• Crear recordsets XML

• Introducción al XML.

• El DXML se globaliza: La traducción y los menús XML/DHTML.

• Codificación de datos XML

• Por qué XML?

• Manual para principiantes de XML DOM