تحفيز:
تعد وظيفة الاستعلام هي الوحدة الوظيفية الأكثر شيوعًا والأكثر استخدامًا التي رأيناها على موقع الويب. في الماضي، كانت استعلامات المعلومات مرتبطة بقاعدة البيانات، وكانت كل نقرة تتطلب دعم قاعدة البيانات الخلفية. ومع ذلك، في كثير من الحالات، غالبًا ما يعمل المستخدمون فقط على جزء معين من البيانات، مما لا يزيد العبء على الخادم فحسب، بل يؤثر أيضًا بشكل خطير على سرعة تصفح المستخدم.
في هذه الحالة، نحتاج إلى تمرير جزء معين من البيانات التي يحتاجها المستخدم إلى العميل على شكل XML، حتى يتمكن المستخدم من العمل على هذه البيانات بسهولة. فهو لا يسهل على المستخدمين فحسب، بل يقلل أيضًا من العبء على قاعدة بيانات الخادم. ولم لا! ويمكن تطبيق هذه الوظيفة على العديد من الوحدات الأخرى، لذلك تمت إضافة وظيفة الاستعلام الديناميكي هذه.
مادة:
يحتوي الاستعلام الديناميكي لوحدة تخزين XML على ملفين: search.xml وsearch.xsl.
والوظائف هي:
تصفية البيانات دون تحديث الصفحة، مما يؤدي إلى تحسين وظيفة الاستعلام عن البيانات بشكل فعال.
تأثير:
تصفح هنا
شفرة:
search.xml
<?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="search.xsl" ?>
<فكرة زرقاء>
<فريق>
<blue_ID>1</blue_ID>
<blue_name>الطيران الشراعي</blue_name>
<blue_text>استعلام بسيط</blue_text>
<blue_time>2002-1-11 17:35:33</blue_time>
<blue_class>موضوع XML</blue_class>
</فريق>
<فريق>
<blue_ID>2</blue_ID>
<blue_name>الطائر الطائر</blue_name>
<blue_text>زواجك سيؤذيك</blue_text>
<blue_time>2001-09-06 12:45:51</blue_time>
<blue_class>جوهر الري</blue_class>
</فريق>
<فريق>
<blue_ID>3</blue_ID>
<blue_name>كاو زي</blue_name>
<blue_text>تطبيق التعبيرات النمطية في منتدى UBB</blue_text>
<blue_time>2001-11-23 21:02:16</blue_time>
<blue_class>جوهر برمجة الويب</blue_class>
</فريق>
<فريق>
<blue_ID>4</blue_ID>
<blue_name>تايلانج</blue_name>
<blue_text>الدليل الكامل لحفلة التوجيه الكلاسيكية لنهاية العام v0.1</blue_text>
<blue_time>2000-12-08 10:22:48</blue_time>
<blue_class>منطقة الري بالمنتدى</blue_class>
</فريق>
<فريق>
<blue_ID>5</blue_ID>
<blue_name>mmkk</blue_name>
<blue_text>ملخص رسالة خطأ Asp</blue_text>
<blue_time>2001-10-13 16:39:05</blue_time>
<blue_class>جافا سكريبت</blue_class>
</فريق>
</بلو آيديا>
search.xsl
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl=" http://www.w3.org/TR/WD-xsl ">
<xsl:تطابق القالب="/">
<أتش تي أم أل>
<الرأس>
<title>نصائح عملية لـ XML (2): الاستعلام الديناميكي</title>
<نمط>
body,BlueIdea,team,blue_ID,blue_name,blue_text,blue_time,blue_class{ الخط: 12px "宋体"، "Arial"، "Times New Roman" }؛
table { حجم الخط: 12 بكسل؛ الحدود: 0 بكسل لون الحدود: #99CC99 #99CC99 #CCCCCC #CCCCCC؛
تمتد { حجم الخط: 12px اللون: أحمر }
</نمط>
<النص البرمجي>
نص البحث عن الوظيفة(x)
{
stylesheet=document.XSLDocument;
source=document.XMLDocument;
SortField=document.XSLDocument.selectNodes(" //@select ");
إذا (س! = "")
{
SortField[1].value="team[blue_ID='"+x+"']";
Layer1.innerHTML=source.documentElement.transformNode(stylesheet);
}
آخر {alert("الرجاء إدخال معايير التصفية!");}
}
</script>
</الرأس>
<الجسم>
<p align="center"><span>نصائح عملية لمجلد XML (2): الاستعلام الديناميكي</span></p>
<div id="Layer1" name="Layer1">
<xsl:apply-templates حدد = "BlueIdea" />
</div>
<hr الحجم = "1" العرض = "500" />
<جدول محاذاة = "مركز" خلية الحشو = "0" تباعد الخلايا = "0" الحدود = "0">
<تر>
<TD>
<span>الرجاء إدخال معايير التصفية: </span>
blue_ID= <نوع الإدخال = "نص" اسم = "نص البحث" الحجم = "1" الحد الأقصى للطول = "1" />
<input type = "button" class = "button" onClick = "searchtext (document.all.searchtext.value)" value = "Search" name = "button" />
</TD>
</tr>
</الجدول>
</الجسم>
</html>
</xsl:قالب>
<xsl:template match="BlueIdea">
<عرض الجدول = "500" الحدود = "1" محاذاة = "المركز" cellpadding = "1" تباعد الخلايا = "1" bordercolordark = "#ffffff" bordercolorlight = "#ADAAAD">
<tr bgcolor="#FFCC99" align="center">
<td>الرقم</td>
<td>الاسم</td>
<td>الموضوع</td>
<td>وقت النشر</td>
<td>التصنيف</td>
</tr>
<xsl:apply-templates حدد = "team" order-by = "blue_ID"/>
</الجدول>
</xsl:قالب>
<xsl:مطابقة القالب = "فريق">
<tr align="center">
<xsl:apply-templates حدد = "blue_ID" />
<xsl:apply-templates حدد = "blue_name" />
<xsl:apply-templates حدد = "blue_text" />
<xsl:apply-templates حدد = "blue_time" />
<xsl:apply-templates حدد = "blue_class" />
</tr>
</xsl:قالب>
<xsl:تطابق القالب = "blue_ID">
<td bgcolor="#eeeeee">
<xsl:قيمة />
</TD>
</xsl:قالب>
<xsl:تطابق القالب = "blue_name">
<TD>
<xsl:قيمة />
</TD>
</xsl:قالب>
<xsl:تطابق القالب='blue_text'>
<TD>
<xsl:قيمة />
</TD>
</xsl:قالب>
<xsl:مطابقة القالب = "blue_time">
<TD>
<xsl:قيمة />
</TD>
</xsl:قالب>
<xsl:تطابق القالب='blue_class'>
<TD>
<xsl:قيمة />
</TD>
</xsl:قالب>
</xsl:ورقة الأنماط>
يشرح:
1) search.xml هو ملف بيانات، وأعتقد أن الجميع لن يواجهوا أي مشكلة.
2) search.xsl هو ملف بتنسيق، وهناك العديد من الأشياء التي يجب الانتباه إليها.
(١) في النص:
SortField=document.XSLDocument.selectNodes(" //@select ");
الوظيفة هي: البحث عن جميع العقد ذات السمة المحددة. هذا ما قلته في الفرز الديناميكي
SortField=document.XSLDocument.selectSingleNode(" //@order-by ");
هناك شيء مختلف. يرجى الانتباه إلى هذا الاختلاف البسيط ووظائف كل منهما.
SortField[1].value="team[blue_ID='"+x+"']";
لذلك فإنsortField[1] هي العقدة الثانية التي تم العثور عليها، والعقدة المقابلة لها هي
<xsl:apply-templates حدد = "team" order-by = "blue_ID"/>
المعلمة x هي القيمة التي تم إدخالها في مربع النص.
قمنا بتعديل شرط البحث لـ Select="team" إلى Select="team[blue_ID='x']"
تتمثل الوظيفة في إضافة شرط حكم، وسيتم عرض بيانات XML التي تساوي قيمة blue_ID لها x فقط.
بالطبع، يمكنك إثراء شروط الحكم. الحكم البسيط الذي أقوم به هنا هو تسهيل فهمه على الجميع.
وأخيرًا، يتم عرض المحتوى المصنف الجديد من خلال إعادة عرض قيمة HTML الداخلية للطبقة 1.
(2) في النص:
حدد = "فريق"
في حالتي، يكون الأمر هوsortField[1]، ولكن قد يتغير ذلك مع تقدمك.
إذًا عليك أن تحسب بدقة ولا تخطئ، وإلا ستجد شركة أخرى!
أقدم طريقة شائعة الاستخدام: في الكود، يمكنك استخدام حلقة لتحديد ما إذا كانت هذه هي العقدة التي تحتاجها.
شيء آخر:
لدى XML متطلبات حالة صارمة للغاية. لذا، إذا لم تكن كتابتك موحدة، فسوف تصاب بالبرد!
حاشية:
بعد أن أصبح الجميع على دراية بفكرة إكمال الفرز الديناميكي والاستعلام الديناميكي، ستجد أن طريقة التنفيذ لدينا بسيطة جدًا في الواقع.
ما عليك سوى تعديل قيمة معينة ثم عرضها مرة أخرى.
في وظيفة الترحيل الديناميكي، ما زلنا نتبع هذه الفكرة.