Latest web development tutorials

XSLT - XML ​​Editor

I dati memorizzati nel file XML possono essere modificati tramite il browser Internet.


Aprire, modificare e salvare XML

Ora, vi mostreremo come aprire, modificare e salvare i file XML memorizzati sul server.

Useremo XML per documento XSL in un form HTML. il valore di elemento XML sarà scritto in campi di input form HTML HTML. Questo modulo HTML è modificabile. Dopo essere stato modificato, i dati saranno presentati al server, i file XML vengono aggiornati (questa parte è fatto da ASP).


documenti XML e file XSL

In primo luogo, guardare il documento XML che verrà utilizzato ( "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>

Visualizzare il file XML .

Avanti, si consideri il seguente foglio di stile ( "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.html">
<h2>Tool Information (edit):</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="Submit" />
<input type="reset" id="btn_res" name="btn_res" value="Reset" />
</form>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

Vedere file XSL .

Il file XSL sopra ciclo volontà attraverso gli elementi nel file XML, e crea un campo di ingresso per ogni XML "sul campo" elementi. Valore elemento "id" attributo XML "campo" si aggiunge alla "id" e "name" di ogni campo di input HTML. Il valore di ogni elemento XML "valore" viene aggiunto l'attributo "valore" di ogni campo di input HTML. Di conseguenza, è possibile ottenere il valore di un file XML che contiene il modulo HTML può essere modificato.

Poi, abbiamo il secondo foglio di stile: "tool_updated.xsl". Questo file XSL viene utilizzato per visualizzare i dati XML aggiornati. Questo foglio di stile non viene emesso form HTML modificabile, ma una tabella HTML statico:

<?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>Updated Tool Information:</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>

Vedere file XSL .


file ASP

Nel file di cui sopra "tool.xsl", il valore dell'attributo azione del modulo HTML è "edittool.asp".

pagina "Edittool.asp" contiene due funzioni: LoadFile () carichi di funzioni e trasforma il file XML, updateFile () funzione aggiorna il file XML:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
'Load XML file
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
'Load XSL file
set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async = false
xslDoc.load(xslfile)
'Transform file
Response.Write(xmlDoc.transformNode(xslDoc))
end function

function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Dim i
'Load XML file
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)

'Set the rootEl variable equal to the root element
Set rootEl = xmlDoc.documentElement

'Loop through the form collection
for i = 1 To Request.Form.Count
'Eliminate button elements in the form
if instr(1,Request.Form.Key(i),"btn_")=0 then
'The selectSingleNode method queries the XML file for a single node
'that matches a query. This query requests the value element that is
'the child of a field element that has an id attribute which matches
'the current key value in the Form Collection. When there is a match -
'set the text property equal to the value of the current field in the
'Form Collection.
set f = rootEl.selectSingleNode("field[@id='" & _
Request.Form.Key(i) & "']/value")
f.Text = Request.Form(i)
end if
next

'Save the modified XML file
xmlDoc.save xmlfile

'Release all object references
set xmlDoc=nothing
set rootEl=nothing
set f=nothing

'Load the modified XML file with a style sheet that
'allows the client to see the edited information
loadFile xmlfile,server.MapPath("tool_updated.xsl")
end function

'If the form has been submitted update the
'XML file and display result - if not,
'transform the XML file for editing
if Request.Form("btn_sub")="" then
loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl")
else
updateFile server.MapPath("tool.xml")
end if
%>

Suggerimento: se non si sa come scrivere ASP, si prega di studiare la nostra esercitazione ASP .

NOTA: Siamo situati sul server e aggiorna la conversione di documenti XML.Questa è una soluzione multi-piattaforma. Il client può essere ottenuto solo dal server restituita HTML - HTML e può essere eseguito su qualsiasi browser.