XSLT - แก้ไข XML
- 上一頁 XSLT 在服務器端
- 下一頁 ตัวอย่าง XSLT
ข้อมูลที่เก็บอยู่ในไฟล์ XML สามารถแก้ไขได้ผ่านทางเว็บเบราวเซอร์
เปิด แก้ไข และบันทึก XML
ตอนนี้ เราจะแสดงให้ท่านเห็นว่าจะเปิด แก้ไข และบันทึกไฟล์ XML ที่เก็บอยู่บนเซิร์ฟเวอร์
เราจะใช้ XSL เพื่อเปลี่ยน XML เอกสารเป็นฟอร์ม HTML นี้เรียกว่า HTML ฟิลด์เข้าไปในฟอร์ม HTML นี้ ซึ่งเป็นฟอร์มที่สามารถแก้ไขได้ หลังจากที่แก้ไขเสร็จแล้ว ข้อมูลจะถูกส่งกลับไปยังเซิร์ฟเวอร์ และไฟล์ XML จะได้รับการปรับปรุง (ส่วนนี้จะทำโดย ASP)
ไฟล์ XML และไฟล์ XSL
สามารถดูไฟล์ 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>
ดังนั้น โปรดดูตารางแบบงานด้านล่าง ("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>ข้อมูลเครื่องมือ (แก้ไข):</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 ถูกเพิ่มเข้าไปในชื่อและรูปแบบ id และ name ของช่องเข้า HTML ค่าขององค์ประกอบ "value" ถูกเพิ่มเข้าไปในรูปแบบ "value" ของช่องเข้า HTML ผลลัพธ์คือ สามารถได้รับแบบฟอร์ม HTML ที่สามารถแก้ไขค่าของไฟล์ XML ได้
จากนั้น มีตารางสไตล์ตัวที่สอง: "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>
ไฟล์ ASP
ในแบบงาน "tool.xsl" ตัวเลือก action ของฟอร์ม HTML คือ "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 ให้เป็น element root Set rootEl = xmlDoc.documentElement วนลูปผ่านชุด form for i = 1 To Request.Form.Count ลบออกส่วนของปุ่มในฟอร์ม if instr(1,Request.Form.Key(i),"btn_")=0 then selectSingleNode มีความหมายว่าค้นหาตัวเดียวของ XML ไฟล์ที่ตรงกับคำค้นหา คำค้นหานี้จะขอค่าของ element value ซึ่งเป็น child element ของ element field ซึ่งฟิล์ด ซึ่งมี attribute id ที่สามารถตรวจพบในฟอร์มที่คงอยู่ในตอนนี้ หากมีการตรวจพบ ก็ตั้งค่าค่าของ attribute 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