Mabadiliko ya XML kwa XSLT
- Mwituaji wa Mlima XSLT katika Mtuaji
- Pya Tena Mifano ya XSLT
Data zilizosimamishwa kwenye wasoma wa XML inaweza kuhaririwa kwa kutumia wasiwasi wa intaneti.
Kufungua, kuhariri na kusafisha wasoma wa XML
Sasa, tunatutambua kuhusu matukio ya kufungua, kuhariri na kusafisha wasoma wa XML ambao haujafikia kwenye mbinu.
Tunatumi kutumia XSL kusaidia kusafisha wasoma wa XML kwenye formu ya HTML. Hiyani ya upeo wa XML itakatwa kusoma kwenye eneo la input ya HTML formu. Formu hii inaweza kuhaririwa. Baada ya kuhaririwa, data itakadhatiwa kubalewa kwenye mbinu, wasoma wa XML itakuwa inayohusishwa (hii inasimamishwa na ASP).
Faili ya XML na faili ya XSL
Kwanza, tazama faili ya XML yenye uwanja wa kutumika ("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>
Kisha, tazama muundo wa stili hii ("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>Taarifa ya Msingal (hariri):</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>
Mfano hivi XSL kimeangalia kila uadilifu katika faili XML na kimeaisha uingizwa katika eneo input kwa kila uadilifu "field" katika XML. Watakiwa kuongeza thamani ya id katika id na name ya kila eneo input HTML. Thamani ya "value" ya eneo "value" inaitwa kwa kila eneo input HTML. Nchi ya kuwa hivi, inafikia formu ya HTML yenye thamani ya faili ya XML yenye uharibifu.
Kwa baadhi, tuna na msahari ya uhariri ya pili: "tool_updated.xsl". Hii faili ya XSL inatumiwa kusoma data ya XML zilizohaririwa. Msahari hii haichangaa formu ya HTML inayowasiliana, bali ni tablica ya HTML inayobadilika:
<?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>
ASP 文件
在上面 "tool.xsl" 文件中, HTML 表单的 action 属性的值是 "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 方法可查询匹配某个查询的 XML 文件中的某个单一节点。 '此查询会请求 value 元素,此 value 元素是 field 元素的子元素, '而此 field 元素拥有可匹配表单集中当前 key 值的 id 属性。 '如果存在匹配,则设置 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 "Kamaanisha ifomu kimeheshwa, tukipakia faili XML na tukionyesha matokeo, kama haukumeheshwa, tukiconverti faili hii ya XML iliweza kurekebisha" if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
提示:假如您不了解如何编写 ASP,请学习我们的《Mafunzo ya ASP》。
Tahadhari:Hili ni kusikia na kusasisha na kusasisha faili ya XML iliyotumika kwenye mtuaji. Hii ni solusha ya kichanganyiko. Mtuaji peke yake inaweza kufikia HTML ikifikia kwenye kila kifaa cha kusoma. HTML hauwezi kufikia kwenye kifaa cha kusoma kwa sababu HTML inaweza kufanya kazi kwenye kila kifaa cha kusoma.
- Mwituaji wa Mlima XSLT katika Mtuaji
- Pya Tena Mifano ya XSLT