XSLT - XML Editeren
- Vorige pagina XSLT op de server
- Volgende pagina XSLT Voorbeelden
Data stored in XML files can be edited through an internet browser.
Open, edit, and save XML
Now, we will show you how to open, edit, and save XML files stored on the server.
We will use XSL to convert an XML document into an HTML form. The values of XML elements will be written to HTML input fields in the form. This form is editable. After editing, the data will be submitted back to the server, and the XML file will be updated (this part is done by ASP).
XML-bestanden en XSL-bestanden
Eerst, bekijk het te gebruiken XML-document ("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>
Vervolgens, bekijk de onderstaande stylesheet ("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>Tool Informatie (bewerken):</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="Indienen" /> <input type="reset" id="btn_res" name="btn_res" value="Herstel" /> </form> </body> </html> </xsl:template> </xsl:stylesheet>
Deze XSL-bestand loopt door de elementen in de XML-bestanden en maakt voor elk XML "field"-element een invoerveld aan. De waarde van de id-eigenschap van het field-element wordt toegevoegd aan de id- en name-eigenschappen van elk HTML-invoerveld. De waarde van het "value"-element wordt toegevoegd aan de "value"-eigenschap van elk HTML-invoerveld. Het resultaat is een bewerkbare HTML-formulier die de waarden uit de XML-bestanden bevat.
Daarnaast hebben we nog een tweede sjabloon: "tool_updated.xsl". Dit XSL-bestand wordt gebruikt om de geüpdateerde XML-gegevens weer te geven. Deze sjabloon geeft geen bewerkbare HTML-formulieren weer, maar een statische HTML-tabel:
<?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>Geüpdateerde Tool Informatie:</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>
ASP-bestand
In het "tool.xsl" bestand is de waarde van de action-eigenschap van het HTML-formulier "edittool.asp".
"edittool.asp" pagina bevat twee functies: loadFile() het laden en omzetten van XML-bestanden, updateFile() functie update XML-bestanden:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc Laad het XML-bestand set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) het laden van de XSL-bestand set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) het omzetten van het bestand Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i Laad het XML-bestand set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Stel de variabele rootEl in op de root-element Set rootEl = xmlDoc.documentElement Bewerk de form-set for i = 1 To Request.Form.Count Verwijder de knop-elementen in het formulier if instr(1,Request.Form.Key(i),"btn_")=0 then De selectSingleNode-methode kan een enkele node in een XML-bestand met een specifieke query verkennen. Deze query zal de value-element vragen, die een onder-element van de field-element is. Deze field-element heeft een id-eigenschap die kan worden overeengekomen met de huidige key-waarde in het formulier. Als er een overeenkomst bestaat, stel dan de text-eigenschap in op de waarde van het huidige veld in het formulier. set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next Sla het gewijzigde XML-bestand op xmlDoc.save xmlfile Vrijwaar alle objectverwijzingen set xmlDoc=nothing set rootEl=nothing set f=nothing Laad het gewijzigde XML-bestand met een stijltafel, zodat de client de gewijzigde informatie kan zien. loadFile xmlfile,server.MapPath("tool_updated.xsl") end function Als het formulier is ingediend, updateer dan het XML-bestand en toon het resultaat, indien niet, converteer dit XML-bestand voor het bewerken. if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
Tip:Als je niet weet hoe je ASP kunt schrijven, leer dan onzeASP Handleiding》。
Opmerking:We zijn bezig met het converteren en bijwerken van XML-bestanden op de server. Dit is een cross-platform oplossing. De client kan alleen HTML ontvangen van de server, dat op elke browser kan draaien.
- Vorige pagina XSLT op de server
- Volgende pagina XSLT Voorbeelden