Latest web development tutorials

XSLT - XML ​​บรรณาธิการ

ข้อมูลที่เก็บไว้ในไฟล์ XML สามารถแก้ไขได้ผ่านทางเบราว์เซอร์อินเทอร์เน็ต


เปิดแก้ไขและบันทึก XML

ตอนนี้เราจะแสดงวิธีการเปิดแก้ไขและบันทึกไฟล์ XML ที่เก็บไว้ในเซิร์ฟเวอร์

เราจะใช้ XML เพื่อ XSL เอกสารในรูปแบบ HTML ไป ค่าองค์ประกอบ 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>

ดูไฟล์ XML

ถัดไปพิจารณาต่อไปนี้แผ่นสไตล์ ( "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.html">
<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

แฟ้ม XSL ข้างต้นจะห่วงผ่านองค์ประกอบในไฟล์ XML และสร้างช่องใส่สำหรับแต่ละ XML "ช่อง" องค์ประกอบ ค่าแอตทริบิวต์ "id" ของ XML "ช่อง" องค์ประกอบที่จะถูกเพิ่มใน "id" และ "ชื่อ" แอตทริบิวต์ของแต่ละช่องใส่ HTML ค่าของแต่ละ XML ค่า "" องค์ประกอบที่จะถูกเพิ่มลงแอตทริบิวต์ "ค่า" ของแต่ละช่องใส่ 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>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>

ดูไฟล์ XSL


ASP ไฟล์

ในข้างต้น "tool.xsl" แฟ้มค่าของแอตทริบิวต์การกระทำของรูปแบบ HTML คือ "edittool.asp"

"Edittool.asp หน้า" มีสองฟังก์ชั่น: LoadFile () ฟังก์ชั่นโหลดและแปลงไฟล์ XML, updateFile () ฟังก์ชันการปรับปรุงไฟล์ XML:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
'Load XML file
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
'Load XSL file
set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async = false
xslDoc.load(xslfile)
'Transform file
Response.Write(xmlDoc.transformNode(xslDoc))
end function

function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Dim i
'Load XML file
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)

'Set the rootEl variable equal to the root element
Set rootEl = xmlDoc.documentElement

'Loop through the form collection
for i = 1 To Request.Form.Count
'Eliminate button elements in the form
if instr(1,Request.Form.Key(i),"btn_")=0 then
'The selectSingleNode method queries the XML file for a single node
'that matches a query. This query requests the value element that is
'the child of a field element that has an id attribute which matches
'the current key value in the Form Collection. When there is a match -
'set the text property equal to the value of the current field in the
'Form Collection.
set f = rootEl.selectSingleNode("field[@id='" & _
Request.Form.Key(i) & "']/value")
f.Text = Request.Form(i)
end if
next

'Save the modified XML file
xmlDoc.save xmlfile

'Release all object references
set xmlDoc=nothing
set rootEl=nothing
set f=nothing

'Load the modified XML file with a style sheet that
'allows the client to see the edited information
loadFile xmlfile,server.MapPath("tool_updated.xsl")
end function

'If the form has been submitted update the
'XML file and display result - if not,
'transform the XML file for editing
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 และสามารถทำงานบนเบราว์เซอร์