XSLT - Edit XML
- 上一页 XSLT 在服务器端
- 下一页 XSLT Examples
Ang data na nakaimbak sa XML file ay maaaring i-edit gamit ang internet browser.
Buksan, i-edit, at i-save ang XML
Ngayon, ipapakita namin kung paano buksan, i-edit, at i-save ang XML file na nakaimbak sa server.
Magkakaroon tayo ng paggamit ng XSL upang i-convert ang XML dokumento sa isang HTML form. Ang halaga ng XML na elemento ay ililipat sa HTML input field ng form. Ang form na ito ay maaaring ipalit. Pagkatapos ng pagwawasto, ang data ay ililipat pabalik sa server, at ang XML file ay mababago (ang bagay na ito ay ginagawa ng ASP).
Ang XML file at ang XSL file
Unang-una, tingnan ang gagamitin na 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>
Pagkatapos, tingnan ang sumusunod na 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>Information ng Tool (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>
Ang XSL na file na ito ay mag-aabot sa bawat elemento ng XML file at magbibigay ng isang input field para sa bawat "field" na elemento ng XML. Ang halaga ng atributo ng id ng "field" na elemento ay idinagdag sa bawat HTML input field sa mga atributo ng id at name. Ang halaga ng elemento na "value" ay idinagdag sa atributo ng "value" ng bawat HTML input field. Ang resulta, makakakuha ka ng isang editable na HTML form na naglalaman ng mga halaga ng XML file.
Pagkatapos, mayroon pa namin pang ikalawang style sheet: "tool_updated.xsl". Ginagamit ang XSL file na ito upang ipakita ang pinag-aupdate na XML data. Ang style sheet na ito ay hindi naglalabas ng puwedeng-ipalilagay sa HTML form, kundi isang statikong HTML table:
<?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>
ASP file
Sa "tool.xsl" na file, ang halaga ng attribute na action ng HTML form ay "edittool.asp" .
"edittool.asp" na pahina ay naglalaman ng dalawang function: loadFile() na inilalagay at nagbabagong XML file, at updateFile() na function na nag-aupdate ng XML file:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc I-load ang file XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Maglilingkod ng XSL file set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) Gawing salin ang file Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i I-load ang file XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) I-set ang variable na rootEl bilang ang root element Set rootEl = xmlDoc.documentElement Umikot sa koleksyon ng form for i = 1 To Request.Form.Count Alisin ang elemento ng button sa form if instr(1,Request.Form.Key(i),"btn_")=0 then Ang method na selectSingleNode ay maaaring maghanap ng isang single node na tumugma sa query sa file XML Ang query na ito ay hihiling ang value element, ang value element ay isang anak ng element ng field At ang element ng field ay may id attribute na maaring tumugma sa kasalukuyang key value ng form set Kung may katugma, ay i-set ang text attribute bilang ang halaga ng kasalukuyang domain ng form set set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next I-save ang napagwawastong file XML xmlDoc.save xmlfile Lihis ang lahat ng paggamit ng object reference set xmlDoc=nothing set rootEl=nothing set f=nothing Sa pamamagitan ng isang stylesheet, i-load ang napagwawastong file XML, upang makakita ng client ang binagong impormasyon loadFile xmlfile,server.MapPath("tool_updated.xsl") end function Kung ang form ay nairekumponde, ay i-update ang file XML at ipakita ang resulta, kung hindi nairekumponde, ay i-convert ang file XML para sa pagwawasto 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 教程》。
注释:我们正在转换并更新位于服务器上的 XML 文件。这是一个跨平台的解决方案。客户端仅能获得从服务器返回的 HTML - 而 HTML 可运行于任何浏览器。
- 上一页 XSLT 在服务器端
- 下一页 XSLT Examples