XSLT - Edit XML

ຄູ່ມູນທີ່ພັກໃນເອກະສານ XML ສາມາດຖືກແກ້ໄຂໄດ້ຜ່ານບຸກຄົນຜູ້ບໍລິຫານເວັບຊີບ.

ເປີດ, ແກ້ໄຂ ແລະ ຮັກສາ XML

ຕອນນີ້ພວກເຮົາຈະສະແດງໃຫ້ເຈົ້າເຫັນວິທີທີ່ເປີດເອກະສານ XML, ແກ້ໄຂ ແລະ ຮັກສາເອກະສານ XML ທີ່ພັກພິມໃນທີ່ບໍລິຫານ.

ພວກເຮົາຈະໃຊ້ XSL ເພື່ອປ່ຽນແປງເອກະສານ XML ເປັນຮູບແບບ HTML ຟອມ. ຄູ່ມູນຂອງສະມາພັນ XML ຈະຖືກຂຽນໄປໃນບ່ອນສະໜອງ HTML ຂອງ HTML ຟອມ. ຟອມນີ້ແມ່ນອາດແກ້ໄຂ. ຫຼັງຈາກນັ້ນຫຼັງຈາກນັ້ນຈະຖືກສົ່ງກັບຫຼັງຄະແນນຄະແນນທີ່ຖືກຄັດເລືອກຫຼັງຈາກນັ້ນຈະຖືກກວດສອບ (ບາງສ່ວນນີ້ຈະຖືກເຮັດໂດຍ 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 ບັນຊີ.

ເອກະສານ XSL ນີ້ຈະຢູ່ກາງສາຍເອກະສານ XML, ແລະສ້າງພິມຂອງ HTML input field ສຳລັບແຕ່ລະ element "field" XML. ຄູ່ຄືນ attribute id ຂອງ element field ໄດ້ສະເໜີໃຫ້ id ແລະ name attribute ຂອງ HTML input field. ຄູ່ຄືນ value element "value" ໄດ້ສະເໜີໃຫ້ attribute "value" ຂອງ HTML input field. ພາຍໃນ, ສາມາດມີ HTML form ທີ່ສາມາດແກ້ໄຂຄູ່ຄືນຂອງ XML ບັນຊີ.

ຫຼັງຈາກນັ້ນ, ພວກເຮົາມີແຜນງານຮູບແບບອີກຢ່າງ: "tool_updated.xsl". ເອກະສານ XSL ນຳໃຊ້ສະແດງຂໍ້ມູນ XML ທີ່ໄດ້ກ່າວຫາ. ແຜນງານຮູບແບບນີ້ຈະບໍ່ອອກສຽງ HTML form ແຕ່ເປັນແຜນງານ HTML table:

<?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 ບັນຊີ.

ເອັສເພີ່ມ ບັນຊີ

ໃນເອກະສານ "tool.xsl" HTML form action attribute value ແມ່ນ "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 ສາມາດຊອກຫາຫນື່ງຫນື່ງທີ່ຕິດຕໍ່ກັບການຊອກຫາ
   ການຊອກຫາຈະຮຽກຮ້ອງ value ສິ່ງນີ້ເປັນລູກຂອງ field
   ບັນດາ field ປະກອບມີ id ທີ່ສາມາດຈະຕິດຕໍ່ກັບ key ຂອງຟອມກົດລວມ
   ຖ້າມີການຕິດຕໍ່ ຈະຕັ້ງຜົນຂອງ 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
'If the form has been submitted, update the XML file and display the results, if not submitted, convert this 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
%>

Hint:If you do not know how to write ASP, please learn ourASP tutorial》。

Note:We are converting and updating the XML files located on the server. This is a cross-platform solution. The client can only obtain HTML returned from the server - while HTML can run on any browser.