XSLT - การแก้ไข XML
- 上一页 XSLT 在服务器端
- 下一页 XSLT ตัวอย่าง
ຂໍ້ມູນທີ່ບັນຈຸໃນ XML ບັນຊີສາມາດເລື່ອງໄດ້ຜ່ານ ບັນຊີບັນນາທິການອິນເຕີເນັດ.
ເປີດ, ເລື່ອງ ແລະ ຮັກສາ XML
ຕອນນີ້, ພວກເຮົາຈະສະແດງໃຫ້ເຈົ້າເຫັນວິທີທີ່ເປີດ, ເລື່ອງ ແລະ ຮັກສາ XML ບັນຊີທີ່ບັນຈຸຢູ່ໃນທີ່ບໍລິຫານ.
ພວກເຮົາຈະໃຊ້ XSL ເພື່ອປ່ຽນ XML ບັນຊີເປັນ HTML ຟອມ. ຄູ່ມູນຂອງ XML ຈະຂຽນໄປໃນບ່ອນເຂົ້າ HTML ຂອງ HTML ຟອມ. ຟອມນີ້ສາມາດເລື່ອງໄດ້. ຫຼັງຈາກຖືກເລື່ອງແລ້ວ, ຂໍ້ມູນຈະຖືກສົ່ງຄືນຫາທີ່ບໍລິຫານ, XML ບັນຊີຈະຖືກປັບປຸງ (ສິ່ງນີ້ໂດຍ ASP).
ເບື້ອງຕົ້ນຈະເບິ່ງເອກະສານ 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>
ຕໍ່ມາຈະເບິ່ງການແບບ (\
<?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 ຈະກຳລັງການລອດຫາສັບສິນລະຫວ່າງສັບສິນ XML ແລະຈະສ້າງປະຕູເຂົ້າສຳລັບຖະໜົນ "field" XML. ຄວາມຮູບຮ່າງຂອງຄວາມຄົນ id ຂອງສັບສິນ field ຈະຕື່ມເຂົ້າໃນຄວາມຄົນ id ແລະ name ຂອງ HTML ປະຕູເຂົ້າ. ຄວາມຄົນ "value" ຂອງ XML ຈະຕື່ມເຂົ້າໃນຄວາມຄົນ "value". ພາຍໃນນັ້ນຈະມີປະຕູເຂົ້າ HTML ທີ່ສາມາດປ່ຽນແປງຄວາມຄົນ XML ແລະເຮັດໃຫ້ມີປະຕູເຂົ້າ HTML ທີ່ສາມາດປ່ຽນແປງ.
ຫລັງຈາກນັ້ນ, ພວກເຮົາຍັງມີແບບກົດລະບຽບອີກຢ່າງດຽວ: "tool_updated.xsl". ບັນນາທິດ 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>ຂໍ້ມູນວຽກງານທີ່ໄດ້ປ່ຽນແປງ:</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>
ເອສເພັນ
ໃນເວບໄຂ "tool.xsl" ບັນນາທິດ HTML ການປະຕິບັດ action ມີຄູ່ມີ "edittool.asp" .
"edittool.asp" ເວບໄຂບໍລິຫານມີຫນື່ງພາສາສອງຫນື່ງ: loadFile() ບັນທຶນແລະປ່ຽນບັນນາທິດ XML, updateFile() ພາສາຫນື່ງບັນທຶນປັບປຸງ XML ວ່າ:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc ຈະເອົາ XML ບັນທຶກ set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) ການອ່ານ ບັນນາທິດ XSL set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) ການປ່ຽນບັນນາທິດ Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i ຈະເອົາ XML ບັນທຶກ set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) ຈະຕັ້ງຄວາມຂອງ rootEl ສຳລັບຫົວຂໍ້ທໍາອິດ Set rootEl = xmlDoc.documentElement ຈະລະລືກວົງງານ form for i = 1 To Request.Form.Count ຈະຫຼຸດອອກປະຕູບັນດາຟອມງານ if instr(1,Request.Form.Key(i),"btn_")=0 then selectSingleNode ທີ່ສາມາດຊອກຫາຫົວຂໍ້ທີ່ຕິດຕໍ່ກັບການຊອກຫາຂອງ XML ທີ່ສາມາດຖາມວັດສະດຸ value ທີ່ເປັນລູກຂອງ field ທີ່ມີຄວາມແນວງາວທີ່ສາມາດຕິດຕໍ່ກັບຄຸນນະພາບຂອງບັນດາຟອມງານ ຖ້າມີການຕິດຕໍ່ ຈະຕັ້ງຄວາມຂອງ text ສຳລັບຄຸນນະພາບຂອງບັນດາຟອມງານ ທີ່ປະຈຸບັນ set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next ຈະບັນທຶກ XML ທີ່ໄດ້ຖືກດັດແປງ xmlDoc.save xmlfile ຈະປະກອບການອ້າງອີກຂອງບັນດາໂອບຣອກ set xmlDoc=nothing set rootEl=nothing set f=nothing ຈະດັດແປງ XML ທີ່ໄດ້ຖືກດັດແປງ ຜ່ານສາຍຈຸດທົບ ເພື່ອສະແດງຂໍ້ມູນທີ່ໄດ້ບັນທຶກ loadFile xmlfile,server.MapPath("tool_updated.xsl") end function ຖ້າຟອມງານໄດ້ຖືກສົ່ງຕົວແລ້ວ ຈະດັດແປງບັນທຶກ XML ແລະສະແດງຜົນຈາກບັນທຶກດັ່ງກ່າວ ຖ້າບໍ່ໄດ້ຖືກສົ່ງຕົວແລ້ວ ຈະປ່ຽນແປງ XML ດັ່ງກ່າວ ເພື່ອບັນທຶກ 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 ตัวอย่าง