XSLT - Chỉnh sửa XML
- Trang trước XSLT trên máy chủ
- Trang tiếp theo Mẫu XSLT
Dữ liệu lưu trữ trong tệp XML có thể được chỉnh sửa bằng trình duyệt internet.
Mở, chỉnh sửa và lưu XML
Hiện tại, chúng ta sẽ hướng dẫn bạn cách mở, chỉnh sửa và lưu tệp XML lưu trữ trên máy chủ.
Chúng ta sẽ sử dụng XSL để chuyển đổi tài liệu XML thành biểu mẫu HTML. Giá trị của các yếu tố XML sẽ được ghi vào lĩnh vực nhập HTML trong biểu mẫu. Biểu mẫu này là có thể chỉnh sửa. Sau khi chỉnh sửa hoàn tất, dữ liệu sẽ được gửi lại máy chủ, tệp XML sẽ được cập nhật (phần này do ASP hoàn thành).
Tệp XML và tệp XSL
Trước tiên, hãy xem tệp XML sẽ được sử dụng ("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>
Tiếp theo, hãy xem bảng định dạng dưới đây ("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>Thông tin công cụ (chỉnh sửa):</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>
Tệp XSL này sẽ lặp lại và duyệt qua các phần tử trong tệp XML và tạo một lĩnh vực đầu vào cho mỗi phần tử "field" trong XML. Giá trị của thuộc tính id của phần tử field được thêm vào thuộc tính id và name của lĩnh vực đầu vào HTML. Giá trị của phần tử "value" được thêm vào thuộc tính "value" của lĩnh vực đầu vào HTML. Kết quả là, bạn có thể nhận được một biểu mẫu HTML có thể chỉnh sửa chứa các giá trị trong tệp XML.
thì, chúng ta còn có bảng định dạng thứ hai: "tool_updated.xsl". Tệp XSL này sẽ được sử dụng để hiển thị dữ liệu XML đã được cập nhật. Bảng định dạng này sẽ không xuất ra biểu mẫu HTML có thể chỉnh sửa mà là một bảng HTML tĩnh:
<?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>Thông tin công cụ đã cập nhật:</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>
Tệp ASP
Trong tệp "tool.xsl" trên, giá trị thuộc tính action của biểu mẫu HTML là "edittool.asp".
"edittool.asp" trang web chứa hai hàm: loadFile() tải và chuyển đổi tệp XML, updateFile() hàm cập nhật tệp XML:
<% function loadFile(xmlfile,xslfile) Dim xmlDoc,xslDoc đọc tệp XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) tải XSL tệp set xslDoc = Server.CreateObject("Microsoft.XMLDOM") xslDoc.async = false xslDoc.load(xslfile) chuyển đổi tệp Response.Write(xmlDoc.transformNode(xslDoc)) end function function updateFile(xmlfile) Dim xmlDoc,rootEl,f Dim i đọc tệp XML set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") xmlDoc.async = false xmlDoc.load(xmlfile) đặt biến rootEl là element gốc Set rootEl = xmlDoc.documentElement vòng lặp qua tập form for i = 1 To Request.Form.Count loại bỏ các element nút trong biểu mẫu if instr(1,Request.Form.Key(i),"btn_")=0 then phương thức selectSingleNode có thể tìm kiếm một nút duy nhất trong tệp XML khớp với một truy vấn câu hỏi này sẽ yêu cầu element value, element value là con của element field và element field này có thuộc tính id có thể khớp với giá trị key hiện tại trong tập biểu mẫu nếu có khớp, hãy đặt thuộc tính text là giá trị của lĩnh vực hiện tại trong tập biểu mẫu set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "/value") f.Text = Request.Form(i) end if next lưu tệp XML đã chỉnh sửa xmlDoc.save xmlfile giải phóng tất cả các tham chiếu đối tượng set xmlDoc=nothing set rootEl=nothing set f=nothing để khách hàng có thể xem thông tin đã chỉnh sửa loadFile xmlfile,server.MapPath("tool_updated.xsl") end function nếu biểu mẫu đã được gửi, hãy cập nhật tệp XML và hiển thị kết quả, nếu chưa thì chuyển đổi tệp XML này để chỉnh sửa if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
Lưu ý:Nếu bạn không biết cách viết ASP, hãy học từ bài học của chúng tôi《Hướng dẫn ASP》。
Chú ý:Chúng tôi đang chuyển đổi và cập nhật tệp XML trên máy chủ. Đây là giải pháp đa nền tảng. Client chỉ có thể nhận được HTML được trả về từ máy chủ - mà HTML có thể chạy trên bất kỳ trình duyệt nào.
- Trang trước XSLT trên máy chủ
- Trang tiếp theo Mẫu XSLT