المعالجة المتداخلة لـ XML
بشكل عام، قد تكون مجموعة النتائج التي نستفسر عنها من قاعدة البيانات كبيرة جدًا، لذلك عند العودة من الخادم إلى العميل، سيتم تقسيم البيانات إلى عدة صفحات للتسليم على التوالي. في هذا الوقت، يمكنك استخدام سمة DATAPAGESIZE في عنصر TABLE لتحديد عدد إدخالات مجموعة السجلات التي تحتوي عليها كل صفحة.
على سبيل المثال:
<TABLE DATASRC="#xmldso" DATAPAGESIZE=10>
من الواضح أنه إذا كان تنسيق بيانات XML متماثلًا، سواء تم تعيينه إلى مجموعة سجلات ADO أو ربطه بعنصر جدول، فسيكون التأثير جيدًا. في التطبيقات العملية، هناك العديد من الأمثلة على بيانات XML غير المتماثلة، على سبيل المثال، قد يكون للكتاب أكثر من مؤلف واحد، مما قد يسبب مشاكل معينة في التعيين والربط. حل المشكلة هو استخدام التداخل. لا يزال كل صف من الجدول يتوافق مع عنصر رئيسي، وكل عمود يتوافق أيضًا مع عنصر فرعي. بالنسبة للعناصر المتكررة، يتم استخدام الجداول المتداخلة. لنفترض أنه في books.xml، مؤلف الكتاب الأول هو Dean Straight، ومؤلفو الكتاب الثاني هم Charlotte Cooper، وShelley Burke، وRegina Murphy. في هذه المرحلة، تكون عملية الربط كما يلي:
● إنشاء عنصر TABLE وتعيين معرف جزيرة البيانات لسمة DATAFLD
● بالنسبة لعناصر XML الفردية، مثل <isbn>، قم بإنشاء عنصر TD وتعيين سمة DATAFLD المقابلة؛
● بالنسبة للعناصر المكررة، يتم تضمين جدول داخل عنصر TD؛
● عرض معلومات المؤلف في صف واحد وعمود واحد.
لاحظ أنه يجب تعيين سمة DATAFLD هنا على "$TEXT"
للتأكد من عرض جميع محتويات العنصر المتداخل في العنصر المحدد.
رمز HTML الكامل هو كما يلي:
<TABLE BORDER=1 DATASRC="#xmldso">
<THEAD><TR><TH>العنوان<
/TH><TH>ISBN</TH>
<TH>المؤلف</TH> </TR></THEAD>
<TBODY>
<TR><TD>
<DIV DATAFLD="title"></DIV></TD>
<TD><DIV DATAFLD="isbn">
</DIV></ TD>
<TD>
<TABLE BORDER=0 DATASRC="#xmldso" DATAFLD="author">
<TR><TD><SPAN DATAFLD="$Text"></SPAN></TD></TR>
< /TABLE>
</TD>
</TR></TBODY>
</TABLE>
في الواقع، أفضل موقف عند استخدام DSO هو للبيانات ذات البنية المتماثلة، والطريقة الأكثر فعالية للتعامل مع البيانات غير المتماثلة هي استخدام ما لدينا سوف نرى في المستقبل إدخال تكنولوجيا DOM.
تطبيق تقنية DSO
1. الوصول إلى سمات العنصر
من السهل جدًا استخدام DSO للوصول إلى سمات العنصر. يمكنك التعامل مع السمات مباشرة عن طريق العناصر الفرعية.
على سبيل المثال:
<book isbn="9-001-122-12">
...
</book>
بهذه الطريقة، عند الارتباط بجدول HTML، يمكن معالجته مباشرةً بواسطة العنصر الفرعي:
<TD><SPAN DATAFLD=" isbn"> </SPAN></TD>
إذا كان اسم السمة واسم العنصر الفرعي متماثلين، أضف "!" قبل اسم العنصر للتمييز بينهما. 2. اجتياز مجموعة السجلات
تتمثل الميزة الرئيسية لمعالجة DSO لجزر بيانات XML كمجموعات سجلات ADO في أنه يمكنك استخدام الأساليب المتنوعة التي توفرها ADO للوصول إلى مصدر البيانات، خاصة عندما تكون جزيرة البيانات مرتبطة بعناصر HTML مثل SPAN وDIV وINPUT توقيت. عادةً ما تعرض هذه العناصر السجل الأول لمجموعة السجلات، إذا كنت تريد اجتياز مجموعة السجلات، فيمكنك استخدام أساليب ADO: Move وMoveFirst وMoveLast وMoveNext وMovePrevious. على سبيل المثال، إذا قمت بإنشاء وظيفة استجابة للزر، فطالما قام المستخدم بالنقر فوق الزر "التالي"، يمكن تصفح السجلات المقابلة واحدًا تلو الآخر.
على سبيل المثال:
<XML ID="xmldso" SRC="books.xml">
</XML>
Sub btnNext_onclick()
xmldso.RecordSet.MoveNext
End Sub
3. الجمع مع لغة البرنامج النصي
بعض المستخدمين معتادون أكثر على كتابة لغة البرنامج النصي، ويمكن أيضًا دمج تقنية DSO بشكل جيد مع البرامج النصية المختلفة.
على سبيل المثال (مع أخذ VB Script كمثال)، عند الوصول إلى مجموعة السجلات، يكون الرمز كما يلي:
Dim rsBooks
Set rsBooks = xmldso.RecordSet
للوصول إلى قيمة الحقل (العنصر الفرعي):
Dim sTitle
sTitle = rsBooks( "title")
يمكنك استخدام سمات النص الداخلي وinnerHTML، وتمرير القيمة الناتجة إلى عنصر HTML. على سبيل المثال، يوجد عنصر DIV يسمى divTitle، ويكون رمز التعيين كما يلي:
divTitle.innerTEXT = sTitle.
يمكن للبرامج النصية أيضًا التعامل مع العديد من أحداث DSO. يسرد الجدول التالي بعضًا منها:
طريقة التعامل مع الأحداث المختلفة في البرامج النصية هي استخدم سمة FOR في العلامة <SCRIPT> لتحديد معرف جزيرة بيانات XML، واستخدم سمة الحدث لتحديد نوع الحدث.
على سبيل المثال، احصل على عدد الإدخالات في مجموعة السجلات:
<SCRIPT Language="VB Script" FOR="xmldso" EVENT="onDataAvailable">
lblRecords.value = booklist.RecordSet.RecordCount
</SCRIPT>
بالإضافة إلى عرض السجل البيانات، البرنامج النصي يمكن للبرنامج أيضًا الاستعلام بسرعة عن مجموعة السجلات وفرزها وتحريرها وغيرها من العمليات. ومع ذلك، تجدر الإشارة إلى أنه على الرغم من أن تقنية ADO توفر طرقًا مثل SortColumn وSortAscending لفرز بيانات XML، إلا أن التأثير ليس بجودة عملية الفرز في XSL، لذا يوصى بالاستفادة الكاملة من تقنية XSL لتحقيق ذلك هذا الجزء من الوظيفة.
الوظائف المتبقية، مثل استخدام البرامج النصية لتنفيذ عمليات مثل إضافة مجموعات السجلات وحذفها وتعديلها، أو عرض جداول HTML في الصفحات، وما إلى ذلك، لم يتم شرحها هنا واحدة تلو الأخرى. الاستخدام مشابه للعمليات السابقة. أخيرًا، تجدر الإشارة إلى أن جميع العمليات على كائنات DSO تتم من جانب المستخدم، وهو في الواقع نسخة من كائن بيانات الخادم. وتتمثل ميزة ذلك في أنه يتجنب تحمل الشبكة عبء اتصالات البيانات الكبيرة. لكن في الوقت الحالي، ليس لأي عمليات يقوم بها العميل أي تأثير على البيانات المخزنة على الخادم. إذا كنت تريد تعديل سجلات الخادم، فيجب عليك استخدام تقنية تبادل البيانات بين العميل والخادم المستقبل.