XSLT - အခြေခံ ဟိုင်လိုင်
- အရှေ့ပိုင်း လက်ဖက် XSLT
- နောက်ပိုင်း XSLT အမှတ်
存储在 XML 文件中的数据可通过因特网浏览器进行编辑。
打开、编辑并保存 XML
现在,我们会为您展示如何打开、编辑及保存存储于服务器上的 XML 文件。
我们将使用 XSL 把 XML 文档转换到一个 HTML 表单中。XML 元素的值会被写到 HTML 表单中的 HTML 输入域。此表单是可编辑的。在被编辑完成后,数据会被提交回服务器,XML 文件会得到更新(这部分由 ASP 完成)。
XML ဖိုင်နှင့် XSL ဖိုင်
ပထမသုံး အော်ဒါအချက်အလက်များ ("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>Tool Information (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 ဖိုင်သည် XML ဖိုင်၏ အကိရိယာများကို အစုပေါင်းလျှက် လည်ပတ်လျက် နှင့် အတိုင်း "field" အကိရိယာကို မူကြမ်း တစ်ခု ဖွဲ့စည်းသည်။ field အကိရိယာ၏ id အကိုးအခဏ်း၏ ပြင်းအားဖြင့် ရှိသော အသုံးပြုသော HTML အရိုးအကြွေး၏ id နှင့် name အကိုးအခဏ်းများသို့ ထပ်ထည့်သည်။ "value" အကိရိယာ၏ ပြင်းအားဖြင့် ရှိသော အသုံးပြုသော HTML အရိုးအကြွေး၏ "value" အကိုးအခဏ်းသို့ ထပ်ထည့်သည်။ အနေဖြင့် XML ဖိုင်၏ ပြင်းအားဖြင့် ရှိသော အသုံးပြုသော HTML ပုံစံပေါင်းအချက်အလက်များ ပြင်ဆင်နိုင်သော HTML ပုံစံပါ ဖြစ်သည်။
နောက်ပိုင်းတွင် ကျမ်းကိုး စနစ်များမှာ ပထမဆုံး စနစ်တစ်ခုကို လည်း ရှိသည်: "tool_updated.xsl" အဖြစ် သတ်မှတ်ထားသည်။ အဲ့ဒါ ဖြစ်သော XSL ဖိုင်သည် အသုံးပြုသည်မှာ ထပ်ဆုံး ဖိုင်ကို ပြသခြင်း ဖြစ်သည်။ အဲ့ဒါ ဖြစ်သော စနစ်သည် ပြန်လည်ပြင်ဆင်ထားသော XML ဖိုင်ကို ပြသသည်မှာ အလွန်ကျယ်လုံး သော 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>
ASP ဖိုင်
အပြင် "tool.xsl" ဖိုင်တွင် ဟောင်းသော HTML ပေါင်းစား လုပ်ငန်းများမှာ action လုပ်ငန်းအား "edittool.asp" ကို ချူပြထားသည်。
"edittool.asp" စက်ပိုင်ဆိုင်ရာ စာရင်းရှိ လုပ်ငန်းများမှာ loadFile() လုပ်ငန်းများ ဖိုင်ကို ဆောက်လုပ်စီးဆင်းခြင်း နှင့် updateFile() လုပ်ငန်းများ ဖိုင်ကို သုံးစွဲခြင်း ဖြစ်သည််:
<% 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 မီးရွား ဘက်တွင် အချက်အလက်များ ကို တွေ့ရှိခြင်း'''' ''''အခုနှင့်တူညီဘဲ ပုံစံကို အမှတ်ပြု၍ အင်တာနက်တွင် တင်သွင်းခြင်း၊ အခုနှင့်မတူဘဲ ပုံစံကို ပြင်ဆင်ခြင်း၊ ပြင်ဆင်ပြီး အင်တာနက်တွင် တင်သွင်းခြင်း'''' ''''အခုနှင့်တူညီဘဲ ပုံစံကို အမှတ်ပြု၍ အင်တာနက်တွင် တင်သွင်းခြင်း၊ အခုနှင့်မတူဘဲ ပုံစံကို ပြင်ဆင်ခြင်း၊ ပြင်ဆင်ပြီး အင်တာနက်တွင် တင်သွင်းခြင်း'''' ''''အခုနှင့်တူညီဘဲ ပုံစံကို အမှတ်ပြု၍ အင်တာနက်တွင် တင်သွင်းခြင်း၊ အခုနှင့်မတူဘဲ ပုံစံကို ပြင်ဆင်ခြင်း၊ ပြင်ဆင်ပြီး အင်တာနက်တွင် တင်သွင်းခြင်း'''' set f = rootEl.selectSingleNode("field[@id='" & _ Request.Form.Key(i) & "']/value") f.Text = Request.Form(i) end if next ''''ပြင်ဆင်ပြီး အင်တာနက်တွင် တင်သွင်းခြင်း'''' xmlDoc.save xmlfile ''''အားလုံးသော အရေးယူဆောင်ရသည်များကို ပြန်လည်သတ်မှတ်ခြင်း'''' set xmlDoc=nothing set rootEl=nothing set f=nothing ''''ပြင်ဆင်ပြီး အင်တာနက်တွင် တင်သွင်းခြင်း၊ ပြင်ဆင်ပြီး အင်တာနက်တွင် တင်သွင်းခြင်း'''' loadFile xmlfile,server.MapPath("tool_updated.xsl") end function ''''အခုနှင့်တူညီဘဲ ပုံစံကို အမှတ်ပြု၍ အင်တာနက်တွင် တင်သွင်းခြင်း၊ အခုနှင့်မတူဘဲ ပုံစံကို ပြင်ဆင်ခြင်း၊ ပြင်ဆင်ပြီး အင်တာနက်တွင် ပြသခြင်း'''' if Request.Form("btn_sub")="" then loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl") else updateFile server.MapPath("tool.xml") end if %>
အကြောင်းအခြေခံ အသုံးပြုခြင်း မရှိဘူးလားဘူး၊ ကျမ်းသစ် အခြေခံ အကျယ်အဝန် ကို လေးသွားပါ။ASP ပါးများ}}
အကြောင်းလက်ဖက် မှာ အခြေခံ အကျယ်အဝန် အချက်အလက် ကို ပြန်လည် ပြောင်းလဲခြင်း နှင့် ထပ်ထည့်ခြင်း လုပ်ဆောင်နေပါသည်။ အဆိုပါ အကျယ်အဝန် သည် အဆိုပါ အဆိုပါ ပြည်ပန်း အကျယ်အဝန် ဖြစ်သည်။ အဆိုပါ အကျယ်အဝန် သည် လက်ဖက် မှ သာ လက်ဆင်းသည်။ အဆိုပါ လက်ဆင်း သည် အဆိုပါ လက်ဖက် မှ သာ ပြန်လည် သုံးနိုင်သည်။
- အရှေ့ပိုင်း လက်ဖက် XSLT
- နောက်ပိုင်း XSLT အမှတ်