XSLT - Editar XML
- Página anterior XSLT en el lado del servidor
- Página siguiente Editor de XSLT
Los datos almacenados en los archivos XML pueden editarse a través de un navegador de internet.
Abrir, editar y guardar XML
Ahora, le mostraremos cómo abrir, editar y guardar archivos XML almacenados en el servidor.
Vamos a mostrarle cómo abrir, editar y guardar archivos XML almacenados en el servidor. Los valores de los elementos XML se escribirán en los campos de entrada HTML del formulario. Este formulario es editable. Después de editarlo, los datos se enviarán al servidor y se actualizará el archivo XML (esta parte es realizada por ASP).
Archivos XML y XSL
Primero, vea el documento XML que se utilizará ("tool.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?> <tool> <field id="prodName"> <value>HAMMER HG2606</value> </field> <field id="prodNo"> <value>32456240</value> </field> <field id="price"> <value>$30.00</value> </field> </tool>
A continuación, vea la hoja de estilo ("tool.xsl"):
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <form method="post" action="edittool.asp"> <h2>Información de Herramienta (editar):</h2> <table border="0"> <xsl:for-each select="tool/field"> <tr> <td> <xsl:value-of select="@id"/> </td> <td> <input type="text"> <xsl:attribute name="id"> <xsl:value-of select="@id" /> </xsl:attribute> <xsl:attribute name="name"> <xsl:value-of select="@id" /> </xsl:attribute> <xsl:attribute name="value"> <xsl:value-of select="value" /> </xsl:attribute> </input> </td> </tr> </xsl:for-each> </table> <br /> <input type="submit" id="btn_sub" name="btn_sub" value="Enviar" /> <input type="reset" id="btn_res" name="btn_res" value="Reset" /> </form> </body> </html> </xsl:template> </xsl:stylesheet>
Este archivo XSL recorrerá los elementos del archivo XML y creará un campo de entrada para cada elemento "field" XML. El valor del atributo id del elemento field se agrega a los atributos id y name de cada campo de entrada HTML. El valor del elemento "value" se agrega al atributo "value" de cada campo de entrada HTML. Como resultado, se puede obtener un formulario HTML editable que contiene los valores del archivo XML.
Luego, también tenemos una segunda hoja de estilo: "tool_updated.xsl". Este archivo XSL se utilizará para mostrar los datos XML actualizados. Esta hoja de estilo no generará un formulario HTML editable, sino una tabla HTML estática:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>Información de Herramienta Actualizada:</h2> <table border="1"> <xsl:for-each select="tool/field"> <tr> <td><xsl:value-of select="@id" /></td> <td><xsl:value-of select="value" /></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Archivo ASP
En el archivo "tool.xsl", el valor de la propiedad action del formulario HTML es "edittool.asp".
La página "edittool.asp" contiene dos funciones: loadFile() que carga y convierte archivos XML, y la función updateFile() que actualiza archivos XML:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc Cargar el archivo XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Cargar el archivo XSL set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) Convertir el archivo Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i Cargar el archivo XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Establecer el variable rootEl como el elemento raíz Set rootEl = xmlDoc.documentElement Recorrer el conjunto de formularios for i = 1 To Request.Form.Count Eliminar los elementos de botón del formulario if instr(1,Request.Form.Key(i),"btn_")=0 then El método selectSingleNode puede buscar un nodo único en un archivo XML que coincida con una consulta. Esta consulta solicitará el elemento value, que es un subelemento del elemento field, Y este elemento field posee un atributo id que puede coincidir con el valor actual del key del conjunto de formularios. Si existe una coincidencia, establecer el atributo text en el valor actual del dominio del conjunto de formularios. set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next Guardar el archivo XML modificado xmlDoc.save xmlfile Liberar todas las referencias a objetos set xmlDoc=nothing set rootEl=nothing set f=nothing Cargar un archivo XML modificado a través de una hoja de estilo, de esta manera el cliente puede ver la información editada loadFile xmlfile,server.MapPath("tool_updated.xsl") end function 'Si el formulario ha sido enviado, actualiza el archivo XML y muestra los resultados, si no ha sido enviado, convierte este archivo XML para su edición if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
Consejo:Si no sabes cómo escribir ASP, aprende nuestroTutoriales de ASP》。
Nota:Estamos convirtiendo y actualizando el archivo XML ubicado en el servidor. Esta es una solución multiplataforma. El cliente solo puede obtener el HTML devuelto por el servidor, que puede ejecutarse en cualquier navegador.
- Página anterior XSLT en el lado del servidor
- Página siguiente Editor de XSLT