حزنفوريو [الأصل]
عزيزي الدكتور واجهة المستخدم الرسومية:
لدي سؤال حول XML. أنشر صفحة ASP عبر XMLHTTP، وأرسل البيانات مرة أخرى بتنسيق HTML، وأقوم بتنفيذ object.innerHTML على div أو خلية جدول أو أي عنصر.
المشكلة التي أواجهها هي أنه بمجرد إنشاء نموذج على صفحة خادم ASP وإرسال النموذج مرة أخرى بتنسيق HTML، فإن كل شيء يعمل بشكل جيد. ولكني أريد أيضًا التحقق من صحة الصفحة من جانب العميل، لذلك أضع رابط صفحة JScript في نص استجابة HTML التي أخطط لإرسالها مرة أخرى. بعد القيام بذلك، لن يتم تشغيل البرنامج النصي.
عندما أقوم بتضمين مرجع JScript src الفعلي في الصفحة الرئيسية، فإنه يعمل بشكل جيد. هل هذا بسبب عدم تحميل كود JScript في وقت التشغيل؟ هل من الممكن الرد على منشور XMLHTTP دون إرجاع رمز JScript وتشغيله؟ هل يمكن إنشاء وظائف JScript بسرعة للصفحات التي أقوم بإنشائها؟
هناك طريقة أخرى لم أحاول القيام بها وهي نشر بيانات XML عبر XMLHTTP، ثم إرسالها مرة أخرى كبيانات XML، ثم استخدام ورقة أنماط XSL لتحويلها. أعتقد أنه من الممكن تحديد وظائف JScript بهذه الطريقة. ولكن هذا النهج يبدو معقدا للغاية. هل لديك أي اقتراحات أو إجابات؟
شكرًا على
الرد من الدكتور
بيتر سونغ
واجهة المستخدم الرسومية:نعم، بيتر، يمكنك إرجاع رمز Microsoft JScript ردًا على منشور/حصول على XMLHTTP وتنفيذ هذا الرمز. إن القيام بذلك يشبه الحصول على قطعة من الكعكة وتناولها لاحقًا. وكما قد تتخيل، فإن أفضل طريقة للقيام بذلك هي الاستفادة من ورقة أنماط XSL؛ وهذا أمر سهل بمجرد إعادة جميع الأنواع إلى وضعها الطبيعي. يمكن للدكتور GUI أيضًا تقديم مثال سريع. (بالطبع، هناك حلول أخرى. طالما أن الاستجابة تحتوي على الرؤوس والأحرف الصحيحة بالترتيب الصحيح، فسيقوم المتصفح بتفسير الاستجابة بحيث تعمل الاستجابة بشكل صحيح. ويمكنك الاستفادة من تسلسل السلاسل لإنشاء الاستجابة إذا لزم الأمر. )
أدناه في المثال الخاص به، يستخدم Dr.GUI JScript للتعليمات البرمجية من جانب العميل وVBScript (إصدار البرمجة النصية لـ Microsoft Visual Basic) في صفحة ASP. الإستراتيجية المعتمدة هي كما يلي: يحتوي ملف XML على البيانات فقط (وإشارة إلى ورقة الأنماط). يحتوي ملف XSL على كافة تنسيقات HTML اللازمة لتكوين صفحة كاملة (بما في ذلك البرامج النصية الموجودة). تتكون صفحة ASP بشكل أساسي من عدد قليل من الاستدعاءات لإنشاء كائن XMLHTTP، وتحميل ملف XML إلى الكائن (باستخدام ورقة أنماط ضمنية)، وكتابة HTML الناتج إلى دفق الاستجابة.
لتجربة هذه الطريقة، اتبع الخطوات البسيطة الموضحة أدناه. استخدم "المفكرة" لنسخ كافة الملفات ولصقها وحفظها في c:inetpubwwwroot.
1.
قم بإنشاء ملف باسم books.xml يحتوي على نص XML التالي. قم بتدوين المرجع إلى ورقة أنماط books.xsl. بخلاف ذلك، هذا الملف يحتوي فقط على البيانات.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="books.xsl" ?>
<الكتالوج>
<معرف الكتاب = "bk101">
<author>غامبارديلا، ماثيو</author>
<title>دليل مطور XML</title>
</كتاب>
<معرف الكتاب = "bk102">
<author>رالز، كيم</author>
<title>أمطار منتصف الليل</title>
</كتاب>
</كتالوج>
2.
ثم قم بإنشاء ملف باسم books.xsl يحتوي على التعليمة البرمجية التالية. هذا الملف هو ورقة الأنماط المشار إليها بواسطة ملف books.xml الذي تم إنشاؤه في الخطوة 1. فهو يحتوي على المعلومات اللازمة لتنسيق ملف XML أعلاه بشكل صحيح في صفحة HTML وحتى تضمين البرامج النصية في صفحة HTML.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:نسخة ورقة الأنماط = "1.0"
xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">
<xsl:طريقة الإخراج = "html" المسافة البادئة = "نعم"/>
<xsl:تطابق القالب="/">
<أتش تي أم أل>
<الرأس>
<العنوان>اختبار</title>
</الرأس>
<لغة البرمجة = "JScript">
الدالة Test_OnLoad()
{
var objXML = new ActiveXObject("MSXML2.DOMDocument");
objXML.async=false;
objXML.load("books.xml");
تنبيه (objXML.xml)؛
objXML=null;
}
</script>
<body onload="Test_OnLoad()">
<حدود الجدول = "1">
<xsl:for-each حدد = "كتالوج/كتاب">
<تر>
<TD>
<xsl:قيمة التحديد = "المؤلف"/>
</TD>
<TD>
<xsl:value-of Select="title"/></td>
</tr>
</xsl:لكل>
</الجدول>
</الجسم>
</html>
</xsl:قالب>
</xsl:ورقة الأنماط>
3.
وأخيراً، قم بإنشاء ملف باسم books.asp الذي يحتوي على التعليمة البرمجية التالية. يتم استخدام هذا الملف فقط لإنشاء كائن XMLHTTP، وتحميل ملف XML له، وكتابة HTML الناتج في دفق الاستجابة.
<%
خافت
Response.contentType = "نص/XML"
تعيين sxh = Server.CreateObject("MSXML2.XMLHTTP.3.0")
sxh.open "GET"، http://localhost/books.xml"، خطأ
sxh.send
الاستجابة.كتابة sxh.responsetext
%>
4.
افتح متصفحك وانتقل إلى http://localhost/books.asp .
5.
ترى تنبيهًا يوضح البيانات التي تحتوي على books.xml. يتم ذلك عن طريق برنامج نصي في ملف XSL. سترى أيضًا البيانات منسقة بدقة في جدول على صفحة الويب. ويتم ذلك عن طريق رمز XSL.