Edición en línea de documentos XML utilizando XSL y ASP
Autor:Eve Cole
Fecha de actualización:2009-06-23 16:38:26
Este artículo explica el método de edición en línea de datos de documentos XML mediante un ejemplo detallado. Dado que el soporte de Netscape para XML es relativamente débil, para lograr el intercambio de datos entre plataformas, el procesamiento de datos debe realizarse en el lado del servidor. Para editar un documento XML, lo primero que debemos hacer es cómo extraer y mostrar los datos a los visitantes. XSL nos proporciona una buena solución para mostrar archivos XML. El siguiente ejemplo utiliza una hoja de estilos XSL para mostrar un documento XML para que los usuarios lo editen y luego envía los datos editados al servidor, donde los datos se actualizan en el lado del servidor. Aquí se utiliza ASP (Active Server Pages) para completar nuestras tareas.
Primero, cargue el documento XML que queremos editar. Usando el modelo de objetos de documento de Microsoft (objeto XMLDOM de Microsoft) y XSL, el documento XML se puede convertir en el lado del servidor en contenido de archivo HTML que se puede mostrar en el lado del cliente. Primero echemos un vistazo a cómo se ven los archivos XML y XSL que utilizamos.
Archivo XML: datos de usuario.xml
<?xml versión="1.0" codificación="gb2312"?>
<Perfil de usuario>
<campo id="Nombre" taborder="1">
<field_value>Mencio</field_value>
</campo>
<campo id="género" taborder="2">
<field_value>Hombre</field_value>
</campo>
<field id="Nombre de la organización" taborder="3">
<field_value>Sucursal de Beijing de la Corporación de Desarrollo Tecnológico de Redes de China</field_value>
</campo>
<field id="Dirección detallada" taborder="4">
<field_value>Piso 102, Kerry Center, Pekín</field_value>
</campo>
<field id="Teléfono" taborder="5">
<field_value>1391139136*</field_value>
</campo>
<campo id="correo electrónico" taborder="6">
<field_value>[email protected]</field_value>
</campo>
</perfil de usuario>
'www.knowsky.com
Archivo XSL: datos de usuario.xsl
<?xml versión="1.0" codificación="gb2312" ?>
<xsl:hoja de estilo xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:coincidencia de plantilla="/">
<html>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312" />
<cuerpo>
<formulario método="publicar" acción="Editardatadeusuario.asp">
<h1>Edición de perfil de usuario:</h1>
<table border="1" cellpadding="2">
<xsl:for-each select="Perfil de usuario/campo">
<tr>
<td>
<xsl:valor-de selección="@id"/>
</td>
<td>
<tipo de entrada="texto"> <xsl:nombre del atributo="id"> <xsl:valor-de seleccionar="@id" /> </xsl:atributo> <xsl:nombre del atributo="nombre"><xsl :valor-de select="@id" /></xsl:atributo> <xsl:atributo nombre="valor"> <xsl:valor-de selección="field_value" /> </xsl:atributo></entrada >
</td>
</tr>
</xsl:para-cada>
</tabla>
<br />
<input type="submit" id="btnSubmit" name="btnSubmit" value="Edición completa" />
</formulario>
</cuerpo>
</html>
</xsl:plantilla>
</xsl:hoja de estilo>
El archivo XSL utiliza el elemento XSL:for-each para recorrer todo el archivo XML. El atributo "id" de cada elemento "campo" en el archivo XML corresponde al "id" y al "nombre" del cuadro de entrada de texto. Formulario HTML. De esta manera, el cuadro de entrada de texto del formulario HTML muestra el valor del elemento del archivo XML. Este archivo es responsable de la conversión del lado del servidor de documentos XML para que puedan mostrarse en varios navegadores.
El siguiente es el programa clave, que implementa la función de abrir y actualizar documentos XML, y decide si actualizar en función de si el formulario se envía o no. Contiene dos funciones, loadXMLFile es responsable de cargar y convertir el archivo XML que se mostrará; la función updateXML es responsable de actualizar el archivo XML.
El programa Edituserdata.asp es el siguiente:
<%
''------------------------------------------------ ----------
''Defina la función loadXMLFile(), que recibe dos parámetros:
''strXMLFile: la ruta y el nombre del archivo XML
''strXSLFilee: la ruta y el nombre del archivo XSL
'' www.knowsky.com
''------------------------------------------------ ----------
Función cargarXMLFile(strXMLFile, strXSLFile)
''Declarar variables locales
objXML atenuado
objeto oscuroXSL
''Cree una instancia de un objeto XMLDOM para cargar archivos XML.
establecer objXML = Server.CreateObject ("Microsoft.XMLDOM")
''Desactive el modo de carga de archivos asíncrono.
objXML.async = falso
'' ¡Cargue el archivo XML!
objXML.load(strXMLFile)
''Cree una instancia del objeto XMLDOM para cargar el archivo XSL.
establecer objXSL = Server.CreateObject ("Microsoft.XMLDOM")
''Desactive el modo de carga de archivos asíncrono.
objXSL.async = falso
''¡Cargue el archivo XSL!
objXSL.load(strXSLFile)
''Utilice el método transformNode de XMLDOM para aplicar la hoja de estilo XSL al documento XML y luego enviarlo al cliente.
Respuesta.Escribir(objXML.transformNode(objXSL))
Función final
''------------------------------------------------ ------------------
''La función updateXML() recibe un parámetro: strXMLFile: la ruta y el nombre del archivo XML.
''------------------------------------------------ ------------------
Función actualizarXML(strXMLFile)
''Declarar variables locales.
objeto oscuro
Raíz de objeto tenue
Campo de objeto tenue
tenue x
''Crea una instancia del objeto XMLDOM.
establecer objDOM = Server.CreateObject ("Microsoft.XMLDOM")
''Desactive el modo de carga de archivos asíncrono.
objDOM.async = falso
''Cargue el archivo XML.
objDOM.cargar strXMLFile
''Establece el elemento raíz.
Establecer objRoot = objDom.documentElement
''Recorra la colección FORM y escriba los datos enviados en el archivo XML.
Para x = 1 para Request.Form.Count
''Compruebe si los datos enviados contienen un botón. Si es así, ignora estos datos.
Si instr(1,Request.Form.Key(x),"btn") = 0 Entonces
''Según el modo de consulta XSL, establezca la variable objField y asigne los elementos del formulario a los elementos correspondientes [valor_campo] en el documento XML.
Establecer objField = objRoot.selectSingleNode("field[@id=''" & Request.Form.Key(x) & "'']/field_value")
'' Corresponde los datos enviados por el formulario a los valores de los nodos en el documento XML.
objField.Text = Solicitud.Form(x)
Terminar si
Próximo
''Guarde el archivo XML editado.
objDom.save strXMLFile
''Liberar todas las referencias al objeto.
Establecer objDom = Nada
Establecer objRoot = Nada
Establecer objField = Nada
''Llame a la función loadXMLFile para mostrar el archivo XML recién editado al cliente utilizando la hoja de estilo actualizadauserdata.xsl.
loadXMLFile strXMLFile,server.MapPath("updateduserdata.xsl")
Función final
''Compruebe si el formulario se envió correctamente; si se envía, actualice el archivo XML; de lo contrario, pase al estado de edición;
Si Request.Form("btnSubmit") = "" Entonces
loadXMLFile server.MapPath("userdata.xml"),server.MapPath("userdata.xsl")
Demás
updateXML server.MapPath("userdata.xml")
Terminar si
%>
Cuando el formulario se envía correctamente, utilizamos actualizadouserdata.xsl para mostrar los datos que acabamos de editar.
actualizadouserdata.xsl es el siguiente:
<?xml versión="1.0" codificación="gb2312" ?>
<xsl:hoja de estilo xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:coincidencia de plantilla="/">
<html>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312" />
<cuerpo>
<h1>La información de usuario actualizada es la siguiente:</h1>
<table border="1" cellpadding="2">
<xsl:for-each select="Perfil de usuario/campo">
<tr>
<td>
<xsl:valor-de selección="@id" />
</td>
<td>
<xsl:valor-de seleccionar="valor_campo" />
</td>
</tr>
</xsl:para-cada>
</tabla>
<formulario>
<tipo de entrada="botón" valor="Regresar" onclick="historia.go(-1)" />
</formulario>
</cuerpo>
</html>
</xsl:plantilla>
</xsl:hoja de estilo>
Lo anterior es solo un ejemplo simple de una aplicación multiplataforma XML. Según necesidades específicas, podemos escribir programas más potentes para completar nuestro trabajo más complejo. Todos los programas fueron depurados y pasados en el entorno WIN98SE+PWS+IE5.5+Netscape 4.75+Netscape 6+MSXML3.DLL.