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>مطرقة 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 إلى خاصية id و name للنموذج HTML. سيتم إضافة قيمة عنصر "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 يطابق الاستعلام سيطلب هذا الاستعلام عن عنصر 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 الموجودة على الخادم. هذا هو حل متعدد المنصات. يمكن للجهاز العملاء الحصول فقط على HTML الذي يتم إرجاعه من الخادم، والذي يمكن تشغيله في أي متصفح.
- الصفحة السابقة XSLT على الجانب الخادم
- الصفحة التالية محرر XSLT