Traitement imbriqué de XML
En général, l'ensemble de résultats que nous interrogeons à partir de la base de données peut être très volumineux, donc lors du retour du serveur au client, les données seront divisées en plusieurs pages pour être livrées respectivement. À ce stade, vous pouvez utiliser l'attribut DATAPAGESIZE dans l'élément TABLE pour spécifier le nombre d'entrées de jeu d'enregistrements que contient chaque page.
Par exemple :
<TABLE DATASRC="#xmldso" DATAPAGESIZE=10>
Évidemment, si le format de données XML est symétrique, qu'il soit mappé à un jeu d'enregistrements ADO ou lié à un élément de table, l'effet sera bon. Dans les applications pratiques, il existe de nombreux exemples de données XML asymétriques. Par exemple, un livre peut avoir plusieurs auteurs, ce qui entraînera certains problèmes de mappage et de liaison. La solution au problème consiste à utiliser l’imbrication. Chaque ligne du tableau correspond toujours à un élément principal, et chaque colonne correspond également à un sous-élément. Pour les éléments répétés, des tableaux imbriqués sont utilisés. Supposons que dans books.xml, l'auteur du premier livre est Dean Straight et que les auteurs du deuxième livre sont Charlotte Cooper, Shelley Burke et Regina Murphy. À ce stade, le processus de liaison est le suivant :
● Créez un élément TABLE et attribuez l'ID d'îlot de données à l'attribut DATAFLD.
● Pour les éléments XML individuels, tels que <isbn>, créez un élément TD et définissez l'attribut DATAFLD correspondant ;
● Pour les éléments en double, un tableau est imbriqué à l'intérieur de l'élément TD.
● Afficher les informations sur l'auteur sur une seule ligne et une seule colonne.
Notez que l'attribut DATAFLD doit ici être défini sur "$TEXT"
pour garantir que le contenu de l'élément imbriqué est tous affiché dans l'élément spécifié.
Le code HTML complet est le suivant :
<TABLE BORDER=1 DATASRC="#xmldso">
<THEAD><TR><TH>Titre</TH>
<TH>ISBN</TH>
<TH>Auteur</TH> </TR></THEAD>
<TBODY>
<TR><TD>
<DIV DATAFLD="title"></DIV></TD>
<TD><DIV DATAFLD="isbn">
</DIV></ TD>
<TD>
<TABLE BORDER=0 DATASRC="#xmldso" DATAFLD="auteur">
<TR><TD><SPAN DATAFLD="$Text"></SPAN></TD></TR>
< /TABLE>
</TD>
</TR></TBODY>
</TABLE>
En fait, la meilleure situation lors de l'utilisation de DSO est celle des données à structure symétrique, et un moyen plus efficace de traiter les données asymétriques est d'utiliser ce que nous verra dans le futur. Présentation de la technologie DOM.
Application de la technologie DSO
1. Accéder aux attributs d'un élément
Il est très simple d'utiliser DSO pour accéder aux attributs d'un élément. Vous pouvez manipuler directement les attributs par sous-éléments.
Par exemple :
<book isbn="9-001-122-12">
...
</book>
De cette façon, lors de la liaison à un tableau HTML, il peut être traité directement par sous-élément :
<TD><SPAN DATAFLD=" isbn”> </SPAN></TD>
Si le nom de l'attribut et le nom du sous-élément sont identiques, ajoutez « ! » devant le nom de l'élément pour les distinguer. 2. Parcours du jeu d'enregistrements
Un avantage majeur du traitement DSO des îlots de données XML en tant que jeux d'enregistrements ADO est que vous pouvez utiliser diverses méthodes fournies par ADO pour accéder à la source de données, en particulier lorsque l'îlot de données est lié à des éléments HTML tels que SPAN, DIV et INPUT. . Généralement, ces éléments affichent le premier enregistrement du jeu d'enregistrements. Si vous souhaitez parcourir le jeu d'enregistrements, vous pouvez utiliser les méthodes ADO : Move, MoveFirst, MoveLast, MoveNext et MovePrevious. Par exemple, si vous créez une fonction de réponse par bouton, tant que l'utilisateur clique sur le bouton « Suivant », les enregistrements correspondants peuvent être parcourus un par un.
Par exemple :
<XML ID="xmldso" SRC="books.xml">
</XML>
Sub btnNext_onclick()
xmldso.RecordSet.MoveNext
End Sub
3. Combinaison avec un langage de script
Certains utilisateurs sont plus habitués à écrire un langage de script, et la technologie DSO peut également être bien combinée avec divers scripts.
Par exemple (en prenant VB Script comme exemple), lors de l'accès au jeu d'enregistrements, le code est le suivant :
Dim rsBooks
Définissez rsBooks = xmldso.RecordSet
pour accéder à la valeur du champ (sous-élément) :
Dim sTitle
sTitle = rsBooks( "title")
Vous pouvez utiliser les attributs innerText et innerHTML. Transmettez la valeur résultante à l'élément HTML. Par exemple, il existe un élément DIV nommé divTitle et le code d'affectation est le suivant :
divTitle.innerTEXT = sTitle
Les scripts peuvent également gérer de nombreux événements DSO : Le tableau suivant en répertorie certains :
La méthode de gestion de divers événements dans les scripts est la suivante. Utilisez l'attribut FOR dans la balise <SCRIPT> pour spécifier l'ID de l'îlot de données XML et utilisez l'attribut EVENT pour déterminer le type d'événement.
Par exemple, obtenez le nombre d'entrées dans le jeu d'enregistrements :
<SCRIPT Language="VB Script" FOR="xmldso" EVENT="onDataAvailable">
lblRecords.value = booklist.RecordSet.RecordCount
</SCRIPT>
En plus d'afficher l'enregistrement les données, le script Le programme peut également rapidement interroger, trier, modifier et d'autres opérations sur l'ensemble d'enregistrements. Cependant, il convient de souligner que bien que la technologie ADO fournisse des méthodes telles que SortColumn et SortAscending pour trier les données XML, l'effet n'est pas aussi bon que l'opération de tri en XSL, il est donc recommandé d'utiliser pleinement la technologie XSL pour réaliser cette partie de la fonction.
Les fonctions restantes, telles que l'utilisation de scripts pour effectuer des opérations telles que l'ajout, la suppression et la modification de jeux d'enregistrements, ou l'affichage de tableaux HTML dans des pages, etc., ne sont pas expliquées ici une par une. L'utilisation est similaire aux opérations précédentes. Enfin, il convient de noter que toutes les opérations sur les objets DSO sont effectuées côté utilisateur, qui est en fait une copie de l'objet de données du serveur. L'avantage est que cela évite au réseau de supporter la charge des communications de données volumineuses. Mais pour le moment, les opérations effectuées par le client n'ont aucun impact sur les données stockées sur le serveur. Si vous souhaitez modifier les enregistrements du serveur, vous devez utiliser la technologie d'échange de données entre le client et le serveur. Nous en discuterons dans. l’avenir. Faites une introduction.