Processamento aninhado de XML
Em geral, o conjunto de resultados que consultamos no banco de dados pode ser muito grande, portanto, ao retornar do servidor para o cliente, os dados serão divididos em várias páginas para entrega respectivamente. Neste momento, você pode usar o atributo DATAPAGESIZE no elemento TABLE para especificar o número de entradas do conjunto de registros que cada página contém.
Por exemplo:
<TABLE DATASRC="#xmldso" DATAPAGESIZE=10>
Obviamente, se o formato de dados XML for simétrico, seja mapeado para um conjunto de registros ADO ou vinculado a um elemento de tabela, o efeito será bom. Em aplicações práticas, existem muitos exemplos de dados XML assimétricos. Por exemplo, um livro pode ter mais de um autor, o que causará alguns problemas no mapeamento e na ligação. A solução para o problema é usar o aninhamento. Cada linha da tabela ainda corresponde a um elemento principal, e cada coluna corresponde também a um subelemento. Para elementos repetidos, são usadas tabelas aninhadas. Vamos supor que em books.xml o autor do primeiro livro seja Dean Straight e os autores do segundo livro sejam Charlotte Cooper, Shelley Burke e Regina Murphy. Neste ponto, o processo de vinculação é o seguinte:
● Crie um elemento TABLE e atribua o ID da ilha de dados ao atributo DATAFLD.
● Para elementos XML individuais, como <isbn>, crie um elemento TD e defina o atributo DATAFLD correspondente;
● Para elementos duplicados, uma tabela é aninhada dentro do elemento TD.
● Exibe informações do autor em uma única linha e coluna.
Observe que o atributo DATAFLD aqui deve ser definido como "$TEXT"
para garantir que todo o conteúdo do elemento aninhado seja exibido no elemento especificado.
O código HTML completo é o seguinte:
<TABLE BORDER=1 DATASRC="#xmldso">
<THEAD><TR><TH>Título</TH>
<TH>ISBN</TH>
<TH>Autor</TH> </TR></THEAD>
<TBODY>
<TR><TD>
<DIV DATAFLD="title"></DIV></TD>
<TD><DIV DATAFLD="isbn">
</DIV></ TD>
<TD>
<TABLE BORDER=0 DATASRC="#xmldso" DATAFLD="author">
<TR><TD><SPAN DATAFLD="$Text"></SPAN></TD></TR>
< /TABLE>
</TD>
</TR></TBODY>
</TABLE>
Na verdade, a melhor situação ao usar DSO é para dados com estrutura simétrica, e uma maneira mais eficaz de lidar com dados assimétricos é usar o que nós veremos no futuro.
Aplicação da tecnologia DSO
1. Acessando os atributos de um elemento
É muito simples usar DSO para acessar os atributos de um elemento. Você pode manipular diretamente os atributos por subelementos.
Por exemplo:
<book isbn="9-001-122-12">
...
</book>
Desta forma, ao vincular a uma tabela HTML, ela pode ser processada diretamente pelo subelemento:
<TD><SPAN DATAFLD=" isbn”> </SPAN></TD>
Se o nome do atributo e o nome do subelemento forem iguais, adicione “!” 2. Atravessando o conjunto de registros
Uma grande vantagem do DSO processar ilhas de dados XML como conjuntos de registros ADO é que você pode usar vários métodos fornecidos pelo ADO para acessar a fonte de dados, especialmente quando a ilha de dados está vinculada a elementos HTML como SPAN, DIV e INPUT . tempo. Geralmente esses elementos exibem o primeiro registro do conjunto de registros. Se você deseja percorrer o conjunto de registros, pode usar os métodos ADO: Move, MoveFirst, MoveLast, MoveNext e MovePrevious. Por exemplo, se você criar uma função de resposta de botão, desde que o usuário clique no botão "Avançar", os registros correspondentes poderão ser navegados um por um.
Por exemplo:
<XML ID="xmldso" SRC="books.xml">
</XML>
Sub btnNext_onclick()
xmldso.RecordSet.MoveNext
End Sub
3. Combinando com linguagem de script
Alguns usuários estão mais acostumados a escrever em linguagem de script, e a tecnologia DSO também pode ser bem combinada com vários scripts.
Por exemplo (tomando o VB Script como exemplo), ao acessar o conjunto de registros, o código é o seguinte:
Dim rsBooks
Set rsBooks = xmldso.RecordSet
para acessar o valor do campo (subelemento):
Dim sTitle
sTitle = rsBooks( "title")
Você pode usar os atributos innerText e innerHTML para passar o valor resultante para o elemento HTML. Por exemplo, existe um elemento DIV denominado divTitle e o código de atribuição é o seguinte:
divTitle.innerTEXT = sTitle
Os scripts também podemmanipular
muitos eventos DSO.
Use o atributo FOR na tag <SCRIPT> para especificar o ID da ilha de dados XML e use o atributo EVENT para determinar o tipo de evento.
Por exemplo, obtenha o número de entradas no conjunto de registros:
<SCRIPT Language="VB Script" FOR="xmldso" EVENT="onDataAvailable">
lblRecords.value = booklist.RecordSet.RecordCount
</SCRIPT>
Além de exibir o registro dados, o script O programa também pode consultar, classificar, editar e outras operações rapidamente no conjunto de registros. No entanto, deve-se ressaltar que, embora a tecnologia ADO forneça métodos como SortColumn e SortAscending para classificar dados XML, o efeito não é tão bom quanto a operação de classificação em XSL, por isso é recomendado que você faça uso total da tecnologia XSL para realizar esta parte da função.
As funções restantes, como usar scripts para realizar operações como adicionar, excluir e modificar conjuntos de registros ou exibir tabelas HTML em páginas, etc., não são explicadas aqui uma por uma. O uso é semelhante às operações anteriores. Finalmente, deve-se notar que todas as operações nos objetos DSO são concluídas no lado do usuário, que na verdade é uma cópia do objeto de dados do servidor. A vantagem disso é que evita que a rede suporte a carga de grandes comunicações de dados. Mas, neste momento, quaisquer operações realizadas pelo cliente não têm impacto nos dados armazenados no servidor. Se desejar modificar os registros do servidor, você deve usar a tecnologia de troca de dados entre o cliente e o servidor. o futuro.