XSLT - Edit XML

Data na fassara ciki da XML za a ziyarci da za a fassara da za a kammala da za a kammala da fassara ga server.

Fannar da fassara da kammala XML

Zai ziyarci now, za a ziyarci koyar da hakan kuma za a kammala da fassara XML zuwa fassara HTML. Hanyar XML na zai ziyarci ga HTML da input. Fassara na zai ziyarci kuma za a kammala da fassara ga server, fassara XML za a samu jinyar (na hanyar ASP).

Zai ziyarci now, za a ziyarci koyar da hakan kuma za a kammala da fassara XML zuwa fassara HTML. Hanyar XML na zai ziyarci ga HTML da input. Fassara na zai ziyarci kuma za a kammala da fassara ga server, fassara XML za a samu jinyar (na hanyar ASP).

Fannar da XML da fassara XSL

Kwakwa, bai kiyiwar da XML na a ziyarci ('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>

Fannar da fassara XML

Kwakwa, bai kiyiwar da cikakken fassara na '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" ғидалацци йиyyan: loadFile() йиyyan ɗauka kuma ƙarfin XML fiila, updateFile() йиyyan ɗauka ƙarfin fiila XML:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
zai zai fa ji
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
zai zai fa ji
set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async = false
xslDoc.load(xslfile)
zhuan huan fa ji
Response.Write(xmlDoc.transformNode(xslDoc))
end function
function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Dim i
zai zai fa ji
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
she zhi rootEl bian lian wei gen yuan su
Set rootEl = xmlDoc.documentElement
xun huan bian li form ji
for i = 1 To Request.Form.Count
   chu qu biao dan zhong de an niu yuan su
   if instr(1,Request.Form.Key(i),"btn_")=0 then
   selectSingleNode fa zhong ke cha xun pei he mou ge cha xun de XML fa ji zhong de mou ge dan yi jie dian
   ci cha xun hui qing qiu value yuan su, ci value yuan su shi field yuan su de zi yuan su
   er ci field yuan su you ke pei he biao dan zhong dang qian key zhi de id shu xing
   ru guo cun zai pei he, zhi she zhi text shu xing wei biao dan zhong dang qian yuan de zhi
   set f = rootEl.selectSingleNode("field[@id='" & _
   Request.Form.Key(i) & "/value")
   f.Text = Request.Form(i)
   end if
next
ba cun bi xiu gai de XML fa ji
xmlDoc.save xmlfile
fa xing su biao jian liu quan bu de duan jian yin zhao
set xmlDoc=nothing
set rootEl=nothing
set f=nothing
ta ba da kai fa da XML fa ji, sa yin jian liu neng kan dian suo bian jie de xin xi
loadFile xmlfile,server.MapPath("tool_updated.xsl")
end function
'If the form has been submitted, then update the XML file and display the results, if not submitted, then 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
%>

Tip: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 - and HTML can run on any browser.