ホームページ >ウェブフロントエンド >htmlチュートリアル >XML と HTML の相補的な利点 (パート 2)
一般に、データベースからクエリする結果セットは非常に大きい場合があるため、サーバーからクライアントに返される際、データはそれぞれ複数のページに分割されて配信されます。このとき、TABLE 要素の DATAPAGESIZE 属性を使用して、各ページに含まれるレコードセット エントリの数を指定できます。
例:
<TABLE DATASRC=“#xmldso” DATAPAGESIZE=10>
明らかに、XML データ形式が対称であれば、ADO レコードセットにマップされているか、テーブル要素にバインドされているかに関係なく、正常に機能します。実際のアプリケーションでは、非対称 XML データの例が多数あります。たとえば、書籍には複数の著者がいる場合があり、マッピングやバインディングで特定の問題が発生します。この問題の解決策は、ネストを使用することです。テーブルの各行は引き続きメイン要素に対応し、各列もサブ要素に対応します。繰り返される要素には、ネストされたテーブルが使用されます。 Books.xml で、最初の本の著者が Dean Straight で、2 番目の本の著者が Charlotte Cooper、Shelley Burke、Regina Murphy であると仮定します。この時点でのバインド プロセスは次のとおりです。
● TABLE 要素を作成し、DATAFLD 属性にデータ アイランド ID を割り当てます。
● 779f037fdfb9ec1a636bb2bbe2cffba5 などの個々の XML 要素については、TD 要素を作成して設定します。対応する DATAFLD 属性。
● 繰り返される要素の場合、テーブルは 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 イベントも処理できます。 次の表に、イベントの一部を示します。
スクリプトでのさまざまなイベントの処理 メソッド。 <script> タグの FOR 属性を使用して XML データ アイランド ID を指定し、EVENT 属性を使用してイベント タイプを決定します。 <br/><br/>たとえば、レコード セット内のエントリの数を取得します: <br/></script>
<SCRIPT Language=“VB Script” FOR=“xmldso” EVENT=“onDataAvailable”> lblRecords.value = booklist.RecordSet.RecordCount </SCRIPT>
スクリプトは、レコード データを表示するだけでなく、レコード セットのクエリ、並べ替え、編集も迅速に行うことができます。ただし、ADO テクノロジには SortColumn や SortAscending などの XML データを並べ替えるメソッドが用意されていますが、その効果は XSL での並べ替え操作ほど良くないため、XSL テクノロジを最大限に活用して実現することをお勧めします。関数のこの部分。
レコードセットの追加、削除、変更などの操作を実行するためのスクリプトの使用や、ページ内の HTML テーブルの表示などの残りの機能については、ここでは個別に説明しません。使用方法は前の操作と同様です。最後に、DSO オブジェクトに対するすべての操作は、実際にはサーバー データ オブジェクトのコピーであるユーザー側で完了することに注意してください。この利点は、ネットワークが大規模なデータ通信の負担を負わないことです。ただし、現時点では、クライアントが実行する操作はサーバーに保存されているデータには影響しません。サーバーのレコードを変更する場合は、クライアントとサーバーの間でデータ交換テクノロジを使用する必要があります。これについては、「」で説明します。未来を紹介します。
以上がXML と HTML の相補的な利点 (パート 2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。