Edycja XML w XSLT
- Poprzednia strona XSLT na serwerze
- Następna strona Przykład XSLT
Dane przechowywane w pliku XML można edytować za pomocą przeglądarki internetowej.
Otwieranie, edytowanie i zapisywanie XML
Teraz pokażemy, jak otworzyć, edytować i zapisać plik XML przechowywany na serwerze.
Użyjemy XSL do przekształcenia dokumentu XML do formularza HTML. Wartości elementów XML będą zapisywane w polach wejściowych HTML formularza. Formularz jest edytowalny. Po zakończeniu edycji dane będą wysyłane z powrotem do serwera, a plik XML zostanie zaktualizowany (to zostanie zrobione przez ASP).
Plik XML i plik XSL
Najpierw, zobacz używany dokument XML ("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>
Następnie, zobacz poniższy arkusz stylów ("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>Informacje o narzędziu (edytowanie):</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>
Ten plik XSL przechodzi przez elementy pliku XML i tworzy dla każdego elementu "field" formularz wejściowy. Wartość atrybutu id elementu "field" jest dodawana do atrybutów id i name każdego pola HTML. Wartość elementu "value" jest dodawana do atrybutu "value" pola HTML. W rezultacie można uzyskać edytowalny formularz HTML zawierający wartości z pliku XML.
Ponadto, mamy drugą tablicę stylową: "tool_updated.xsl". Ten plik XSL będzie używany do wyświetlania zaktualizowanych danych XML. Ta tablica stylowa nie wyświetli formularza HTML do edycji, ale statyczną tabelę HTML:
<?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>
Plik ASP
W pliku "tool.xsl", wartość atrybutu action formularza HTML to "edittool.asp".
"edittool.asp" strona zawiera dwie funkcje: loadFile() ładuje i przekształca plik XML, updateFile() funkcja aktualizuje plik XML:
<% function loadFile(xmlfile, xslfile) Dim xmlDoc, xslDoc Załaduj plik XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) ładowanie pliku XSL ustaw xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) przekształcanie pliku Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i Załaduj plik XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Ustaw zmienną rootEl na element korzeń Set rootEl = xmlDoc.documentElement Przejdź przez zestaw formularzy for i = 1 To Request.Form.Count Usun elementy przycisków z formularza if instr(1,Request.Form.Key(i),"btn_")=0 then Metoda selectSingleNode może wyszukiwać pojedynczy węzeł w pliku XML dopasowanym do zapytania. To zapytanie będzie prosić o element value, który jest podelementem elementu field, a ten element field ma atrybut id, który pasuje do bieżącego klucza formularza. Jeśli istnieje dopasowanie, ustaw atrybut text na wartość bieżącego pola formularza. set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next Zapisz zmodyfikowany plik XML xmlDoc.save xmlfile Uwolnij wszystkie odwołania do obiektów set xmlDoc=nothing set rootEl=nothing set f=nothing Załaduj zmodyfikowany plik XML za pomocą arkusza stylów, aby klient mógł zobaczyć edytowane informacje loadFile xmlfile,server.MapPath("tool_updated.xsl") end function Jeśli formularz został złożony, zaktualizuj plik XML i wyświetl wynik, jeśli nie został złożony, przejdź do konwersji tego pliku XML do edycji if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
Wskazówka:Jeśli nie wiesz, jak pisać ASP, naucz się z naszego:Tutorial ASP》。
Komentarz:Przekształcamy i aktualizujemy pliki XML znajdujące się na serwerze. Jest to rozwiązanie wieloplatformowe. Klient może uzyskać tylko HTML zwrócony przez serwer - a HTML może być uruchomiony w każdej przeglądarce.
- Poprzednia strona XSLT na serwerze
- Następna strona Przykład XSLT