XSLT - Pagwawasto ng XML
- Nakaraang Pahina XSLT sa Server-side
- Susunod na Pahina Editor ng XSLT
Ang data na nakatago sa XML na file ay maaaring i-edit sa pamamagitan ng internet browser.
Buksan, i-edit, at i-save ang XML
Ngayon, ipapakita namin kung paano buksan, i-edit, at i-save ang nakatago sa server na XML na file.
Ginagamit namin ang XSL upang i-convert ang XML na dokumento sa isang HTML na form. Ang halaga ng XML na elemento ay magiging parte ng HTML na input field sa form. Ang form na ito ay puwedeng maisalin. Pagkatapos ng pag-edit, ang data ay ililipat pabalik sa server, at ang XML na file ay magiging napapalitan (ang bagay na ito ay ginagawa ng ASP).
XML na file at XSL na file
Unang-una, tingnan ang gagamitin na XML na dokumento ("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 style sheet ("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>Informasyon 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>
XSL ឯកសារនេះនឹងចរចារទាំងអស់នៅក្នុងឯកសារ XML និងបង្កើតកម្មវិធីបញ្ចូលនូវ HTML "field" ឯកសារ ទីនិដ្ឋាន id អាត្រានៃ field ឯកសារ ត្រូវបានបន្ថែមទៅក្នុង HTML កម្មវិធីបញ្ចូល id និង name អាត្រា ទីនិដ្ឋាន value អាត្រានៃ "value" ឯកសារ ត្រូវបានបន្ថែមទៅក្នុង HTML កម្មវិធីបញ្ចូល value អាត្រា បែបនេះ ទទួលបាន HTML ទំព័រអាចនិយាយ ដែលមានតំរង់ XML ឯកសារ ទិន្នន័យ:
បន្ទាប់ពីនេះ យើងក៏មាន ប្លុកក្រាហ្វ ទីពីរ: "tool_updated.xsl" ដែលនឹងត្រូវបានប្រើដើម្បីបង្ហាញ XML ទិន្នន័យដែលបានកែប្រែ និងប្រែប្រួល ដែលប្លុកក្រាហ្វនេះ នឹងមិនបង្ហាញ HTML ទំព័រអាចនិយាយ ប៉ុន្តែជាតំរង់ 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>
ASP ឯកសារ
នៅក្នុងឯកសារ "tool.xsl" ទាំងនោះ HTML ទំព័រ action អាត្រាមានកំណត់ "edittool.asp" 。
“edittool.asp” ទំព័រមានកម្មវិធីបម្រើពីរ: loadFile() ដើម្បីបញ្ជូន និងប្រែប្រួល XML ឯកសារ,updateFile() កម្មវិធីដើម្បីបច្ចុប្បន្នអោយ XML ឯកសារ:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc I-load ang XML file set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) I-load ang XSL file set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) I-convert ang file Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i I-load ang XML file set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) Itakda ang rootEl bilang ang pangunahing elemento Set rootEl = xmlDoc.documentElement Ulitin ang form set 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 selectSingleNode method ay maaaring hilingin ang isang single node sa XML file na tumugma sa isang query Ang query na ito ay hihiling ng value element, na siya ay anak ng field element Ang field element na ito ay may katugma na id attribute na maaring katugma ang kasalukuyang key value ng form set Kung may katugma, itatatakbo 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 napag-alinlangang XML file xmlDoc.save xmlfile Lisin ang lahat ng pagpapakita ng mga bagay set xmlDoc=nothing set rootEl=nothing set f=nothing Tinagayang maglaan ng isang style sheet ang napag-alinlangang XML file, upang makakita ang client ng inililipat na impormasyon loadFile xmlfile,server.MapPath("tool_updated.xsl") end function 'Kung naibigay na ang form, ay i-update ang file ng XML at ipakita ang resulta, kung hindi, ay i-convert ang file ng 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 %>
Paalala:Kung hindi mo alam kung paano magsulat ng ASP, matututunan mo sa amingTutorial ng ASP》。
Komentaryo:Nagpapatuloy kami sa pagbabago at pag-aupdate ng mga file ng XML na nasa server. Ito ay isang solusyon na walang platform. Ang client ay makakakuha lamang ng HTML na ibinabalik ng server - at ang HTML ay makakapatuloy sa anumang browser.
- Nakaraang Pahina XSLT sa Server-side
- Susunod na Pahina Editor ng XSLT