Generally, the result set we get from the database query may be very large, so when returning from the server to the client, the data will be divided into several pages and passed separately. At this time, you can use the DATAPAGESIZE attribute in the TABLE element to specify the number of recordset entries that each page contains.
For example:
<TABLE DATASRC=“#xmldso” DATAPAGESIZE=10>
Obviously, if the XML data format is symmetrical, whether it is mapped to an ADO recordset or bound to a table element, the effect will be good. In practical applications, there are many examples of asymmetric XML data. For example, a book may have more than one author, which will cause certain troubles in mapping and binding. The solution to the problem is to use nesting. Each row of the table still corresponds to a main element, and each column also corresponds to a sub-element. For repeated elements, nested tables are used. Let's assume that in books.xml, the author of the first book is Dean Straight, and the authors of the second book are Charlotte Cooper, Shelley Burke, and Regina Murphy. At this point, the binding process is as follows:
● Create a TABLE element and assign the data island ID to the DATAFLD attribute;
● For individual XML elements, such as
● For repeated elements, nest a table inside the TD element;
● Display author information in a single row and single column.
Note that the DATAFLD attribute here must be set to "$TEXT",
to ensure that the contents of the nested element are all displayed in the specified element.
The complete HTML code is as follows:
<TABLE BORDER=1 DATASRC=“#xmldso”> <THEAD><TR><TH>Title</TH> <TH>ISBN</TH> <TH>Author</TH></TR></THEAD> <TBODY> <TR><TD> <p DATAFLD=“title”></p></TD> <TD><p DATAFLD=“isbn”> </p></TD> <TD> <TABLE BORDER=0 DATASRC=“#xmldso” DATAFLD=“author”> <TR><TD><SPAN DATAFLD=“$Text”></SPAN></TD></TR> </TABLE> </TD> </TR></TBODY> </TABLE>
In fact, the best situation when using DSO is for data with symmetric structure, while processing non- A more effective way to symmetric data is to use DOM technology which we will introduce later.
Application of DSO Technology
1. Accessing the attributes of an element
It is very simple to use DSO to access the attributes of an element. You can directly handle the attributes by sub-elements.
For example:
<book isbn=“9-001-122-12”> …… </book>
In this way, when binding to an HTML table, you can process it directly by sub-element:
<TD><SPAN DATAFLD=“isbn”> </SPAN></TD>
If When the attribute name and sub-element name are the same, add "!" before the element name to distinguish them. 2. Traversing the record set
One of the great benefits of DSO processing XML data islands as ADO record sets is that you can use various methods provided by ADO to access the data source, especially when the data island is combined with something like SPAN, p When binding with HTML elements such as INPUT. Usually these elements display the first record of the recordset. If you want to traverse the recordset, you can use the ADO methods: Move, MoveFirst, MoveLast, MoveNext and MovePRevious. For example, if you create a button response function, as long as the user clicks the "Next" button, the corresponding records can be browsed one by one.
For example:
<XML ID=“xmldso” SRC=“books.xml”> </XML> Sub btnNext_onclick() xmldso.RecordSet.MoveNext End Sub
3. Combining with Script language
Some users are more accustomed to writing Script language, and the use of DSO technology can also be well combined with various Scripts.
For example (taking VB Script as an example), when accessing the record set, the code is as follows:
Dim rsBooks Set rsBooks = xmldso.RecordSet 访问字段(子元素)的值: Dim sTitle sTitle = rsBooks(“title”)
You can use the innerText and innerHTML attributes to pass the obtained value to the HTML element . For example, there is a p element named pTitle, and the assignment code is as follows:
pTitle.innerTEXT = sTitle
You can also use scripts to handle many DSO events. The following table lists some of them:
The way to handle various events in a script is to use the FOR attribute in the