XSLT - ویرایش XML
- صفحه قبلی XSLT در سرور
- صفحه بعدی مثال XSLT
دادههای ذخیره شده در فایل XML میتوانند با استفاده از مرورگر اینترنت ویرایش شوند.
باز کردن، ویرایش و ذخیره XML
حالا، ما به شما نشان خواهیم داد که چگونه میتوانید فایلهای XML ذخیره شده بر روی سرور را باز کنید، ویرایش و ذخیره کنید.
ما از XSL برای تبدیل مستند XML به یک فرم HTML استفاده خواهیم کرد. مقادیر عناصر XML در فرم HTML به عنوان میدانهای ورودی 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"، مقدار attribute 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 که با یک جستجو تطابق دارد را پیدا کند این جستجو درخواست یک عنصر value میکند، این عنصر value یک فرزند عنصر field است و این عنصر 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 موجود در سرور هستیم. این یک راهحل چندپlatforم است. کاربران فقط میتوانند HTML بازگشتی از سرور را دریافت کنند - که میتواند در هر مرورگری اجرا شود.
- صفحه قبلی XSLT در سرور
- صفحه بعدی مثال XSLT