일반적으로 데이터베이스에서 쿼리하는 결과 집합은 매우 클 수 있으므로 서버에서 클라이언트로 반환할 때 데이터가 각각 여러 페이지로 나누어 전달됩니다. 이때 TABLE 요소의 DATAPAGESIZE 속성을 사용하여 각 페이지에 포함된 레코드세트 항목 수를 지정할 수 있습니다.
예:
<TABLE DATASRC=“#xmldso” DATAPAGESIZE=10>
분명히 XML 데이터 형식이 대칭이면 ADO 레코드 세트에 매핑되거나 테이블 요소에 바인딩되어도 잘 작동합니다. 실제 응용 프로그램에는 비대칭 XML 데이터의 예가 많이 있습니다. 예를 들어 책에 저자가 두 명 이상 있을 수 있으며 이로 인해 매핑 및 바인딩에 특정 문제가 발생할 수 있습니다. 문제에 대한 해결책은 중첩을 사용하는 것입니다. 테이블의 각 행은 여전히 기본 요소에 해당하고 각 열도 하위 요소에 해당합니다. 반복되는 요소의 경우 중첩 테이블이 사용됩니다. books.xml에서 첫 번째 책의 저자는 Dean Straight이고 두 번째 책의 저자는 Charlotte Cooper, Shelley Burke 및 Regina Murphy라고 가정해 보겠습니다. 이 시점에서 바인딩 프로세스는 다음과 같습니다.
● TABLE 요소를 생성하고 DATAFLD 속성에 데이터 아일랜드 ID를 할당합니다.
●
● 반복되는 요소의 경우 TD 요소 내에 테이블을 중첩합니다.
● 작성자 정보를 단일 행과 단일 열에 표시합니다. .
중첩된 요소의 내용이 지정된 요소에 모두 표시되도록 하려면 여기서 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를 사용할 때 가장 좋은 상황은 대칭 구조의 데이터에 대한 것이며, non- 대칭형 데이터를 구현하는 보다 효과적인 방법은 나중에 소개할 DOM 기술을 사용하는 것입니다.
DSO 기술 적용
1. 요소의 속성에 액세스
DSO를 사용하여 요소의 속성에 액세스하는 것은 매우 간단하며 속성을 하위 요소로 직접 처리할 수 있습니다.
예:
<book isbn=“9-001-122-12”> …… </book>
이런 방식으로 HTML 테이블에 바인딩할 때 하위 요소에서 직접 처리할 수 있습니다:
<TD><SPAN DATAFLD=“isbn”> </SPAN></TD>
속성명과 하위 요소명이 동일한 경우 요소명 앞에 "!"를 추가하여 구분합니다. 2. 레코드 세트 탐색
XML 데이터 아일랜드를 ADO 레코드 세트로 처리하는 DSO의 가장 큰 이점 중 하나는 ADO에서 제공하는 다양한 방법을 사용하여 데이터 소스에 액세스할 수 있다는 것입니다. 특히 데이터 아일랜드가 어떤 것과 결합될 때 더욱 그렇습니다. SPAN, p와 같이 INPUT과 같은 HTML 요소와 바인딩할 때. 일반적으로 이러한 요소는 레코드 집합의 첫 번째 레코드를 표시하고 레코드 집합을 탐색하려면 Move, MoveFirst, MoveLast, MoveNext 및 MovePRevious와 같은 ADO 메서드를 사용할 수 있습니다. 예를 들어, 버튼 응답 기능을 생성한 경우 사용자가 "다음" 버튼을 클릭하기만 하면 해당 레코드를 하나씩 찾아볼 수 있습니다.
예:
<XML ID=“xmldso” SRC=“books.xml”> </XML> Sub btnNext_onclick() xmldso.RecordSet.MoveNext End Sub
3. 스크립트 언어와 결합
스크립트 언어 작성에 더 익숙한 사용자도 있습니다. DSO 기술은 다양한 스크립트와도 잘 결합할 수 있습니다.
예를 들어(VB 스크립트를 예로 들면) 레코드 세트에 액세스할 때 코드는 다음과 같습니다.
Dim rsBooks Set rsBooks = xmldso.RecordSet 访问字段(子元素)的值: Dim sTitle sTitle = rsBooks(“title”)
innerText 및 innerHTML 속성을 사용할 수 있습니다. 얻은 값을 HTML 요소에 전달합니다. 예를 들어, pTitle이라는 p 요소가 있고 할당 코드는 다음과 같습니다.
pTitle.innerTEXT = sTitle
스크립트는 또한 많은 DSO 이벤트를 처리할 수 있습니다. 다음 표에는 그 중 일부가 나열되어 있습니다.
스크립트에서 다양한 이벤트를 처리하는 방법은