一般に、データベースからクエリする結果セットは非常に大きい場合があるため、サーバーからクライアントに返される際、データはそれぞれ複数のページに分割されて配信されます。このとき、TABLE 要素の DATAPAGESIZE 属性を使用して、各ページに含まれるレコードセット エントリの数を指定できます。
例:
<TABLE DATASRC=“#xmldso” DATAPAGESIZE=10>
明らかに、XML データ形式が対称であれば、ADO レコードセットにマップされているか、テーブル要素にバインドされているかに関係なく、正常に機能します。実際のアプリケーションでは、非対称 XML データの例が多数あります。たとえば、書籍には複数の著者がいる場合があり、マッピングやバインディングで特定の問題が発生します。この問題の解決策は、ネストを使用することです。テーブルの各行は引き続きメイン要素に対応し、各列もサブ要素に対応します。繰り返される要素には、ネストされたテーブルが使用されます。 Books.xml で、最初の本の著者が Dean Straight で、2 番目の本の著者が Charlotte Cooper、Shelley Burke、Regina Murphy であると仮定します。この時点でのバインド プロセスは次のとおりです。
● TABLE 要素を作成し、DATAFLD 属性にデータ アイランド ID を割り当てます。
●
● 繰り返される要素の場合、テーブルは TD 要素内にネストされます。
● 著者情報を 1 行 1 列で表示します。
ここでの DATAFLD 属性は、
ネストされた要素の内容がすべて指定された要素に表示されるようにするために、「$TEXT」に設定する必要があることに注意してください。
完全な HTML コードは次のとおりです:
<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>
実際、DSO を使用する場合の最良の状況は対称構造のデータであり、非対称データを処理するより効果的な方法は、これから紹介する DOM を使用することです。後の技術。
DSOテクノロジーの応用
1. 要素の属性へのアクセス
DSO を使用して要素の属性にアクセスするのは非常に簡単で、サブ要素によって属性を直接処理できます。
例:
<book isbn=“9-001-122-12”> …… </book>
このようにして、HTML テーブルにバインドするときに、サブ要素によって直接処理できます:
<TD><SPAN DATAFLD=“isbn”> </SPAN></TD>
属性名とサブ要素名が異なる状況に遭遇した場合、同様に、要素名の前に「"!」を追加して区別します。 2.レコード セットの走査
XML データ アイランドを ADO レコード セットとして DSO 処理する主な利点は、特にデータ アイランドが SPAN、p、 INPUT 要素がバインドされている場合。通常、これらの要素にはレコードセットの最初のレコードが表示され、レコードセットを走査して参照するには、ADO メソッド Move、MoveFirst、MoveLast、MoveNext、および MovePRevious を使用できます。たとえば、ボタン応答関数を作成すると、ユーザーが「次へ」ボタンをクリックする限り、対応するレコードを 1 つずつ参照できます。
例:
<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”)
innerText 属性と innerHTML 属性を使用して、取得した値を HTML 要素に渡すことができます。たとえば、pTitle という名前の p 要素があり、割り当てコードは次のとおりです。
pTitle.innerTEXT = sTitle
スクリプト プログラムは、多くの DSO イベントも処理できます。 次の表に、イベントの一部を示します。
スクリプトでのさまざまなイベントの処理 メソッド。