XSLT - ویرایش XML
- صفحه قبلی XSLT در سرور
- صفحه بعدی ویرایشگر XSLT
دادههای ذخیره شده در فایل XML میتوانند از طریق مرورگر اینترنت ویرایش شوند.
باز کردن، ویرایش و ذخیره XML
حالا، ما به شما نشان خواهیم داد که چگونه فایل XML ذخیره شده در سرور را باز کنید، ویرایش و ذخیره کنید.
ما از XSL برای تبدیل فایل XML به یک فرم HTML استفاده خواهیم کرد. مقادیر عناصر XML نوشته میشوند به فیلدهای ورودی HTML فرم. این فرم قابل ویرایش است. پس از ویرایش، دادهها به سرور ارسال میشوند و فایل XML بهروزرسانی میشود (این بخش توسط ASP انجام میشود).
فایل XML و فایل XSL
ابتدا، به فایل XML مورد استفاده ("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>اطلاعات ابزار (ویرایش):</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" XML یک میدان ورودی ایجاد میکند. مقدار ویژگی id عنصر field به هر میدان ورودی HTML برای ویژگیهای id و name اضافه میشود. مقدار عنصر "value" به ویژگی "value" هر میدان ورودی HTML اضافه میشود. در نتیجه، میتوان یک فرم HTML قابل ویرایش شامل مقادیر فایل XML دریافت کرد.
پس، ما یک استایلشابون دیگر نیز داریم: "tool_updated.xsl". این فایل 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>اطلاعات ابزار بهروز شده:</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"، مقدار ویژگی action فرم HTML برابر با "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 باز داری مجموعه فرم for i = 1 To Request.Form.Count عناصر دکمه فرم حذف شوند if instr(1,Request.Form.Key(i),"btn_")=0 then مетод selectSingleNode میتواند یک نقطه در فایل XML که با یک جستجو هماهنگ است را پیدا کند. این جستجو درخواست میکند که element value را درخواست کند، این element value یک فرزند element field است، این element field دارای ویژگی 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 اگر فرم ارسال شده باشد، فایل 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》。
نکته:ما در حال تبدیل و بهروزرسانی فایلهای XML قرار گرفته در سرور هستیم. این یک راهحل چندپایه است. کاربران فقط میتوانند HTML که از سرور بازمیگردد را دریافت کنند - در حالی که HTML میتواند در هر مرورگری اجرا شود.
- صفحه قبلی XSLT در سرور
- صفحه بعدی ویرایشگر XSLT