XSLT - Pagwawasto ng XML

Ang data na nakatago sa XML na file ay maaaring i-edit sa pamamagitan ng internet browser.

Buksan, i-edit, at i-save ang XML

Ngayon, ipapakita namin kung paano buksan, i-edit, at i-save ang nakatago sa server na XML na file.

Ginagamit namin ang XSL upang i-convert ang XML na dokumento sa isang HTML na form. Ang halaga ng XML na elemento ay magiging parte ng HTML na input field sa form. Ang form na ito ay puwedeng maisalin. Pagkatapos ng pag-edit, ang data ay ililipat pabalik sa server, at ang XML na file ay magiging napapalitan (ang bagay na ito ay ginagawa ng ASP).

XML na file at XSL na file

Unang-una, tingnan ang gagamitin na XML na dokumento ("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>

Tingnan ang XML na file.

Pagkatapos, tingnan ang sumusunod na style sheet ("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>Informasyon ng Tool (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 និងបង្កើតកម្មវិធីបញ្ចូលនូវ HTML "field" ឯកសារ ទីនិដ្ឋាន id អាត្រានៃ field ឯកសារ ត្រូវបានបន្ថែមទៅក្នុង HTML កម្មវិធីបញ្ចូល id និង name អាត្រា ទីនិដ្ឋាន value អាត្រានៃ "value" ឯកសារ ត្រូវបានបន្ថែមទៅក្នុង HTML កម្មវិធីបញ្ចូល value អាត្រា បែបនេះ ទទួលបាន HTML ទំព័រអាចនិយាយ ដែលមានតំរង់ XML ឯកសារ ទិន្នន័យ:

បន្ទាប់ពីនេះ យើងក៏មាន ប្លុកក្រាហ្វ ទីពីរ: "tool_updated.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 ទំព័រ action អាត្រាមានកំណត់ "edittool.asp" 。

“edittool.asp” ទំព័រមានកម្មវិធីបម្រើពីរ: loadFile() ដើម្បីបញ្ជូន និងប្រែប្រួល XML ឯកសារ,updateFile() កម្មវិធីដើម្បីបច្ចុប្បន្នអោយ XML ឯកសារ:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
I-load ang XML file
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
I-load ang XSL file
set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async = false
xslDoc.load(xslfile)
I-convert ang file
Response.Write(xmlDoc.transformNode(xslDoc))
end function
function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Dim i
I-load ang XML file
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
Itakda ang rootEl bilang ang pangunahing elemento
Set rootEl = xmlDoc.documentElement
Ulitin ang form set
for i = 1 To Request.Form.Count
   Alisin ang elemento ng button sa form
   if instr(1,Request.Form.Key(i),"btn_")=0 then
   Ang selectSingleNode method ay maaaring hilingin ang isang single node sa XML file na tumugma sa isang query
   Ang query na ito ay hihiling ng value element, na siya ay anak ng field element
   Ang field element na ito ay may katugma na id attribute na maaring katugma ang kasalukuyang key value ng form set
   Kung may katugma, itatatakbo ang text attribute bilang ang halaga ng kasalukuyang domain ng form set
   set f = rootEl.selectSingleNode("field[@id='" & _
   Request.Form.Key(i) & "]/value")
   f.Text = Request.Form(i)
   end if
next
I-save ang napag-alinlangang XML file
xmlDoc.save xmlfile
Lisin ang lahat ng pagpapakita ng mga bagay
set xmlDoc=nothing
set rootEl=nothing
set f=nothing
Tinagayang maglaan ng isang style sheet ang napag-alinlangang XML file, upang makakita ang client ng inililipat na impormasyon
loadFile xmlfile,server.MapPath("tool_updated.xsl")
end function
'Kung naibigay na ang form, ay i-update ang file ng XML at ipakita ang resulta, kung hindi, ay i-convert ang file ng XML para sa pagwawasto
if Request.Form("btn_sub")="" then
loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl")
else
updateFile server.MapPath("tool.xml")
end if
%>

Paalala:Kung hindi mo alam kung paano magsulat ng ASP, matututunan mo sa amingTutorial ng ASP》。

Komentaryo:Nagpapatuloy kami sa pagbabago at pag-aupdate ng mga file ng XML na nasa server. Ito ay isang solusyon na walang platform. Ang client ay makakakuha lamang ng HTML na ibinabalik ng server - at ang HTML ay makakapatuloy sa anumang browser.