Verschachtelte Verarbeitung von XML
Im Allgemeinen kann die Ergebnismenge, die wir aus der Datenbank abfragen, sehr groß sein, sodass die Daten bei der Rückgabe vom Server an den Client jeweils auf mehrere Seiten zur Übermittlung aufgeteilt werden. Zu diesem Zeitpunkt können Sie das DATAPAGESIZE-Attribut im TABLE-Element verwenden, um die Anzahl der Recordset-Einträge anzugeben, die jede Seite enthält.
Beispiel:
<TABLE DATASRC="#xmldso" DATAPAGESIZE=10>
Wenn das XML-Datenformat symmetrisch ist, unabhängig davon, ob es einem ADO-Recordset zugeordnet oder an ein Tabellenelement gebunden ist, ist der Effekt offensichtlich gut. In praktischen Anwendungen gibt es viele Beispiele für asymmetrische XML-Daten. Beispielsweise kann ein Buch mehr als einen Autor haben, was zu bestimmten Problemen bei der Zuordnung und Bindung führen kann. Die Lösung des Problems besteht in der Verwendung von Verschachtelungen. Jede Zeile der Tabelle entspricht weiterhin einem Hauptelement und jede Spalte entspricht auch einem Unterelement. Für wiederholte Elemente werden verschachtelte Tabellen verwendet. Nehmen wir an, dass in „books.xml“ der Autor des ersten Buchs Dean Straight ist und die Autoren des zweiten Buchs Charlotte Cooper, Shelley Burke und Regina Murphy sind. Zu diesem Zeitpunkt läuft der Bindungsprozess wie folgt ab:
● Erstellen Sie ein TABLE-Element und weisen Sie die Dateninsel-ID dem DATAFLD-Attribut zu.
● Erstellen Sie für einzelne XML-Elemente wie <isbn> ein TD-Element und legen Sie das entsprechende DATAFLD-Attribut fest.
● Für Duplikate-Elemente wird eine Tabelle innerhalb des TD-Elements verschachtelt.
● Zeigt Autoreninformationen in einer einzelnen Zeile und einzelnen Spalte an.
Beachten Sie, dass das DATAFLD-Attribut hier auf „$TEXT“ gesetzt werden muss,
um sicherzustellen, dass der Inhalt des verschachtelten Elements vollständig im angegebenen Element angezeigt wird.
Der vollständige HTML-Code lautet wie folgt:
<TABLE BORDER=1 DATASRC="#xmldso">
<THEAD><TR><TH>Titel</TH>
<TH>ISBN</TH>
<TH>Autor</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>
Tatsächlich ist die beste Situation bei der Verwendung von DSO für Daten mit symmetrischer Struktur, und eine effektivere Möglichkeit, mit asymmetrischen Daten umzugehen, besteht darin, das zu verwenden, was wir wird in Zukunft die Einführung der DOM-Technologie sehen.
Anwendung der DSO-Technologie
1. Auf die Attribute eines Elements zugreifen
Es ist sehr einfach, mit DSO auf die Attribute eines Elements zuzugreifen. Sie können die Attribute direkt nach Unterelementen verarbeiten.
Zum Beispiel:
<book isbn="9-001-122-12">
...
</book>
Auf diese Weise kann bei der Bindung an eine HTML-Tabelle diese direkt vom Unterelement verarbeitet werden:
<TD><SPAN DATAFLD=" isbn"> </SPAN></TD>
Wenn der Attributname und der Unterelementname identisch sind, fügen Sie „!“ vor dem Elementnamen hinzu, um sie zu unterscheiden. 2. Durchlaufen des Datensatzes
Ein großer Vorteil der DSO-Verarbeitung von XML-Dateninseln als ADO-Datensatzsätze besteht darin, dass Sie verschiedene von ADO bereitgestellte Methoden verwenden können, um auf die Datenquelle zuzugreifen, insbesondere wenn die Dateninsel an HTML-Elemente wie SPAN, DIV und INPUT gebunden ist . Zeitpunkt. Normalerweise zeigen diese Elemente den ersten Datensatz des Recordsets an. Wenn Sie den Recordset durchlaufen möchten, können Sie die ADO-Methoden verwenden: Move, MoveFirst, MoveLast, MoveNext und MovePrevious. Wenn Sie beispielsweise eine Schaltflächenantwortfunktion erstellen, können die entsprechenden Datensätze einzeln durchsucht werden, solange der Benutzer auf die Schaltfläche „Weiter“ klickt.
Zum Beispiel:
<XML ID="xmldso" SRC="books.xml">
</XML>
Sub btnNext_onclick()
xmldso.RecordSet.MoveNext
End Sub
3. Kombination mit Skriptsprache
Einige Benutzer sind eher daran gewöhnt, Skriptsprache zu schreiben, und die DSO-Technologie lässt sich auch gut mit verschiedenen Skripten kombinieren.
Beispielsweise (am Beispiel von VB Script) lautet der Code beim Zugriff auf den Datensatz wie folgt:
Dim rsBooks
Set rsBooks = xmldso.RecordSet,
um auf den Wert des Felds (Unterelements) zuzugreifen:
Dim sTitle
sTitle = rsBooks( „title“)
Sie können die Attribute innerText und innerHTML verwenden. Übergeben Sie den resultierenden Wert an das HTML-Element. Beispielsweise gibt es ein DIV-Element mit dem Namen divTitle und der Zuweisungscode lautet wie folgt:
divTitle.innerTEXT = sTitle
Skripte können auch viele DSO-Ereignisse verarbeiten. Die folgende Tabelle listet einige davon auf:
Die Methode zur Behandlung verschiedener Ereignisse in Skripten ist Verwenden Sie das FOR-Attribut im <SCRIPT>-Tag, um die XML-Dateninsel-ID anzugeben, und verwenden Sie das EVENT-Attribut, um den Ereignistyp zu bestimmen.
Rufen Sie beispielsweise die Anzahl der Einträge im Datensatz ab:
<SCRIPT Language="VB Script" FOR="xmldso" EVENT="onDataAvailable">
lblRecords.value = booklist.RecordSet.RecordCount
</SCRIPT>
Zusätzlich zur Anzeige des Datensatzes Daten, das Skript Das Programm kann den Datensatz auch schnell abfragen, sortieren, bearbeiten und andere Vorgänge durchführen. Es sollte jedoch darauf hingewiesen werden, dass die ADO-Technologie zwar Methoden wie SortColumn und SortAscending zum Sortieren von XML-Daten bereitstellt, der Effekt jedoch nicht so gut ist wie der Sortiervorgang in XSL. Daher wird empfohlen, die XSL-Technologie vollständig zu nutzen, um dies zu erreichen Dieser Teil der Funktion.
Die übrigen Funktionen, wie die Verwendung von Skripten zum Ausführen von Vorgängen wie dem Hinzufügen, Löschen und Ändern von Datensatzsätzen oder dem Anzeigen von HTML-Tabellen auf Seiten usw., werden hier nicht einzeln erläutert. Die Verwendung ähnelt den vorherigen Vorgängen. Abschließend ist zu beachten, dass alle Vorgänge an DSO-Objekten auf der Benutzerseite ausgeführt werden, bei der es sich tatsächlich um eine Kopie des Serverdatenobjekts handelt. Der Vorteil besteht darin, dass das Netzwerk nicht die Last großer Datenkommunikation tragen muss. Zu diesem Zeitpunkt haben jedoch alle vom Client ausgeführten Vorgänge keine Auswirkungen auf die auf dem Server gespeicherten Daten. Wenn Sie die Serverdatensätze ändern möchten, müssen Sie die Datenaustauschtechnologie zwischen dem Client und dem Server verwenden die Zukunft. Machen Sie eine Einführung.