XSLT - Bearbeiten von XML

Daten in XML-Dateien können über einen 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 Ihnen zeigen, wie man XML-Dokumente in ein HTML-Formular umwandelt, indem wir XSL verwenden. Die Werte der XML-Elemente werden in die HTML-Eingabefelder des Formulars geschrieben. Dieses Formular ist editierbar. Nach der Bearbeitung werden die Daten an den Server gesendet und die XML-Datei wird aktualisiert (dies wird von ASP erledigt).

XML-Datei und XSL-Datei

Zunächst, schauen Sie sich die zu verwendende XML-Dokumentation ("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>

Betrachten Sie die XML-Datei.

Dann, schauen Sie sich die folgende Stylusskala ("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>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>

XSL-Datei anzeigen.

Diese XSL-Datei durchläuft die Elemente der XML-Datei und erstellt für jeden XML "field"-Element einen Eingabebereich. Der Wert des id-Attributs 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. Das Ergebnis ist ein editierbares HTML-Formular, das die Werte der XML-Datei enthält.

Dann haben wir noch eine zweite Stylesheet: "tool_updated.xsl". Diese XSL-Datei wird verwendet, um aktualisierte XML-Daten anzuzeigen. Diese Stylesheet 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>

XSL-Datei anzeigen.

ASP-Datei

Im "tool.xsl"-Datei, ist der Wert der action-Attribut des HTML-Formulars "edittool.asp".

Die "edittool.asp"-Seite enthält zwei Funktionen: loadFile() lädt und konvertiert XML-Dateien, updateFile() aktualisiert XML-Dateien:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
Die XML-Datei laden
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
Die XSL-Datei laden
set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async = false
xslDoc.load(xslfile)
Datei konvertieren
Response.Write(xmlDoc.transformNode(xslDoc))
end function
function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Dim i
Die XML-Datei laden
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
Setzen Sie den Variablenwert rootEl auf den Wurzelelement
Set rootEl = xmlDoc.documentElement
Durchlaufen Sie den Formularsatz
for i = 1 To Request.Form.Count
   Elemente der Schaltflächen im Formular entfernen
   if instr(1,Request.Form.Key(i),"btn_")=0 then
   Die selectSingleNode-Methode kann eine bestimmte Abfrage im XML-Dokument durchführen, um einen einzelnen Knoten zu finden.
   Diese Abfrage fordert das value-Element an, das ein Unterelement des field-Elements ist,
   Dieser field-Element hat eine id-Attribut, die mit dem aktuellen key-Wert im Formular übereinstimmt.
   Wenn eine Übereinstimmung vorhanden ist, wird die text-Attribut auf den Wert des aktuellen Felds 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 speichern
xmlDoc.save xmlfile
Alle Objektverweise freigeben
set xmlDoc=nothing
set rootEl=nothing
set f=nothing
Durch eine Stylesheet 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 die Ergebnisse angezeigt, wenn nicht, wird diese XML-Datei in einen Bearbeitungsmodus konvertiert
if Request.Form("btn_sub")="" then
loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl")
else
updateFile server.MapPath("tool.xml")
end if
%>

Tipp:Wenn Sie nicht wissen, wie Sie ASP schreiben, lernen Sie unserASP-Tutorial》。

Anmerkung:Wir konvertieren und aktualisieren momentan XML-Dateien, die auf dem Server gespeichert sind. Dies ist eine plattformübergreifende Lösung. Der Client kann nur das HTML erhalten, das vom Server zurückgegeben wird, und HTML kann auf jedem Browser ausgeführt werden.