XSLT - အမျိုးသား XML

存储在 XML 文件中的数据可通过因特网浏览器进行编辑。

打开、编辑并保存 XML

现在,我们会为您展示如何打开、编辑及保存存储于服务器上的 XML 文件。

我们将使用 XSL 把 XML 文档转换到一个 HTML 表单中。XML 元素的值会被写到 HTML 表单中的 HTML 输入域。此表单是可编辑的。在被编辑完成后,数据会被提交回服务器,XML 文件会得到更新(这部分由 ASP 完成)。

XML 文件和 XSL 文件

首先,请看将被使用的 XML 文档 ("tool.xml"):


<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"):






<form method="post" action="edittool.asp">
<h2>Tool Information (edit):</h2>
<table border="0">


<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>



<br />
<input type="submit" id="btn_sub" name="btn_sub" value="Submit" />






查看 XSL 文件

上面这个 XSL 文件会循环遍历 XML 文件中的元素,并为每个 XML "field" 元素创建一个输入域。field 元素的 id 属性的值被添加到每个 HTML 输入域的 id 和 name 属性。"value" 元素的值被添加到每个 HTML 输入域的 "value" 属性。结果是,可以得到一个包含 XML 文件中值的可编辑的 HTML 表单。

然后,我们还有第二个样式表:"tool_updated.xsl"。这个 XSL 文件会被用来显示已更新的 XML 数据。这个样式表不会输出可编辑 HTML 表单,而是一个静态的 HTML 表格:






Updated Tool Information:

查看 XSL 文件

ASP 文件

在上面 "tool.xsl" 文件中, HTML 表单的 action 属性的值是 "edittool.asp" 。

"edittool.asp" 页面包含两个函数:loadFile() 载入并转换 XML 文件,updateFile() 函数更新 XML 文件:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
ဖိုင် ကို ပြင်ဆင်ထားသော ဖိုင်
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
ဖိုင် ကို ပြင်ဆင်ထားသော ဖိုင်
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
rootEl အရာများ ကို ပြင်ဆင်ထားသော အချက်အလက် ကို စတင်ပြခြင်း
Set rootEl = xmlDoc.documentElement
ဖိုင် အဖွဲ့ ကို လှည့်ကျင်
for i = 1 To Request.Form.Count
   ပြင်ဆင်ထားသော ဖိုင် ကို ဖြင့်ပြခြင်း
   if instr(1,Request.Form.Key(i),"btn_")=0 then
   selectSingleNode မီးရွား ဘက် အကြောင်းများ သည် စတင်ကြောင်းများ ကို ကြိုတင်ခြင်း
   ထိုအကြောင်းများ သည် value အရာများ ကို ကြိုတင်ခြင်း
   ထို field အရာများ သည် ပုံစံများ ကို စုပေါင်းနိုင်သော အချက်အလက် ကို ပိုင်ဆိုင်သည်
   နောက်ထပ် မရှိဘဲ လို့ ကြောင်း အကြောင်းများ ကို တင်ပြခြင်း
   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 အော်လိပ်ခွဲ}}

အကြောင်းကြားချက်ဘရောက်ဆား ဘာသာ ပြင်ဆင်ခြင်း နှင့် အမြောက်အနီး အချက်အလက် အော်လိပ်ခွဲ။ ဒါဟာ ကွန်ပျူတာ အကြီးအကျယ် ပြောင်းလဲခြင်း ဖြစ်ပါသည်။ ဘရောက်ဆား ဘာသာ က ဘရောက်ဆား ဘာသာ မှ လွှတ်ပေးသော HTML ဘာသာ သာ ရရှိနိုင်ပါ။ ထို HTML ဘာသာ သည် ဘရောက်ဆား ဘာသာ မှ လွှတ်ပေးသော ဘရောက်ဆား ဘာသာ မှ လွှတ်ပေးသော ဘရောက်ဆား ဘာသာ သာ လုပ်ကိုင်နိုင်ပါသည်။