XSLT - Bearbeiten von XML
- Previous page XSLT on the server side
- Next page XSLT-Beispiel
Daten, die in XML-Dateien gespeichert sind, können mit einem Internetbrowser bearbeitet werden.
Öffnen, bearbeiten und speichern von XML
Jetzt werden wir Ihnen zeigen, wie Sie XML-Dateien, die auf dem Server gespeichert sind, öffnen, bearbeiten und speichern.
Wir werden XSL verwenden, um XML-Dokumente in HTML-Formulare zu konvertieren. Die Werte der XML-Elemente werden in HTML-Eingabefelder des Formulars geschrieben. Dieses Formular ist editierbar. Nachdem es bearbeitet wurde, werden die Daten an den Server gesendet und das XML-Dokument wird aktualisiert (dies wird von ASP erledigt).
XML-Dokument und XSL-Dokument
Zunächst, schauen Sie sich das zu verwendende XML-Dokument ("tool.xml") an:
<?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>
Nun, schauen Sie sich die folgende Stilvorlage ("tool.xsl") an:
<?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>Werkzeuginformationen (bearbeiten):</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>
Dieser XSL-Datei wird der Inhalt des XML-Dokuments durchlaufen und für jeden "field"-Element im XML-Dokument einen Eingabefeld erstellen. Der Wert der "id"-Attribut des "field"-Elements wird zu den "id"- und "name"-Attributen jedes HTML-Eingabefeldes hinzugefügt. Der Wert des "value"-Elements wird zu den "value"-Attributen jedes HTML-Eingabefeldes hinzugefügt. Als Ergebnis kann eine editierbare HTML-Formular erhalten werden, die die Werte aus dem XML-Dokument enthält.
Dann haben wir noch eine zweite Stilvorlage: "tool_updated.xsl". Diese XSL-Datei wird verwendet, um aktualisierte XML-Daten anzuzeigen. Diese Stilvorlage gibt kein editierbares HTML-Formular aus, sondern eine statische HTML-Tabelle:
<?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>Aktualisierte Werkzeuginformationen:</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-Datei
Im "tool.xsl"-Datei ist der Wert der action-Attribut des HTML-Formulars "edittool.asp".
"edittool.asp"-Seite enthält zwei Funktionen: loadFile() lädt und wandelt XML-Dateien um, updateFile() aktualisiert XML-Dateien:
<% function loadFile(xmlfile, xslfile) Dim xmlDoc, xslDoc Das XML-Dokument wird geladen set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Datei laden XSL set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) Datei umwandeln Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i Das XML-Dokument wird geladen set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Der Variable rootEl wird das Wurzelelement zugewiesen Set rootEl = xmlDoc.documentElement Das Formular-Set wird durchlaufen for i = 1 To Request.Form.Count Elemente der Schaltfläche im Formular werden entfernt if instr(1,Request.Form.Key(i),"btn_")=0 then Die selectSingleNode-Methode kann nach einem bestimmten Abfragekriterium im XML-Dokument nach einem bestimmten Knoten suchen. Diese Abfrage fordert das value-Element an, das ein Unterlement des field-Elements ist, Dieser field-Element hat eine id-Attribut, das mit dem aktuellen key-Wert im Formular übereinstimmt. Wenn ein Treffer vorhanden ist, wird das text-Attribut auf den Wert des aktuellen Feldes im Formular gesetzt. set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next Die geänderte XML-Datei wird gespeichert xmlDoc.save xmlfile Alle Objektverweise werden freigegeben set xmlDoc=nothing set rootEl=nothing set f=nothing Durch eine Stilvorlage wird die geänderte XML-Datei geladen, sodass der Client die bearbeiteten Informationen sehen kann loadFile xmlfile,server.MapPath("tool_updated.xsl") end function Wenn das Formular bereits eingereicht wurde, wird die XML-Datei aktualisiert und das Ergebnis angezeigt, wenn nicht, wird diese XML-Datei in eine für die Bearbeitung konvertierte Form umgewandelt if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
提示:假如您不了解如何编写 ASP,请学习我们的《ASP 教程》。
Note:We are converting and updating the XML files located on the server. This is a cross-platform solution. The client can only obtain HTML returned from the server - while HTML can run on any browser.
- Previous page XSLT on the server side
- Next page XSLT-Beispiel