This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Modelo em árvore de documentos XMLModelo em árvore de documentos XML
As linguagens de transformação e pesquisa são baseadas no modelo em árvore de documentos XML
Um documento XML pode ser visto como uma árvore, onde os nós correspondem a elementos e a atributos Os nós-elementos têm filhos, que podem ser atributos ou sub-
elementos Texto num elemento é visto como um nó de tipo texto (sem filhos) Os filhos dum nó são ordenados de acordo com a ordem em que
aparecem no documento XML Os nós de elementos e atributos têm sempre um único pai. A raiz da árvore contém um único filho, correspondendo ao elemento
O “/” inicial denota a raiz do documento As path expressions são avaliadas da esquerda para a direita
Cada passo é aplicado ao conjunto de instâncias produzidas pelo passo anterior
Podem usar-se predicados de selecção (entre []) em qualquer dos passos do path.
E.g. /banco-2/conta[saldo > 400] Devolve os elementos de todas as contas com saldo superior a 400 /banco-2/conta[saldo] devolve os elementos de todas as contas que
contêm um sub-elemento saldo Pode aceder-se aos atributos, usando “@”
E.g. /banco-2/conta[saldo > 400]/@num-conta Devolve os números das contas cujo saldo é maior que 400
Os atributos IDREF não são desreferenciados automaticamente
Mais features do XPathMais features do XPath Operador “|” para uniões
E.g. /banco-2/conta/id(@clientes) | /banco-2/emprestimo/id(@clientes) Devolve os clientes com contas ou empréstimos NOTA: O “|” não pode estar imbricado noutros operadores.
Operador “//” para saltar vários níveis de uma árvore de uma só vez E.g. /banco-2//nome
Devolve qualquer sub-elemento com nome nome que esteja dentro do elemento /banco-2, independentemente de quantos níveis abaixo.
Um passo no path pode ir para o pai, irmãos, antecessores, descendentes (e não apenas para os filhos, como vimos até aqui). Eg: O “//”, acima, denota todos os descendentes “..” denota o pai. “.” denota o próprio nó.
Exemplo de template XSLT com match e select <xsl:template match=“/banco-2/cliente”>
<xsl:value-of select=“nome-cliente”/> </xsl:template> <xsl:template match=“*”/> O atributo match da tag xsl:template especifica um padrão em XPath Os elementos do documento XML que estão de acordo com esse padrão,
são processados de acordo com o especificado no elemento xsl:template xsl:value-of selecciona para output valor específicos (no caso, nome-cliente)
Para elementos que não caiam em nenhum padrão Os atributos e o texto são escritos no output sem processamento Os templates são aplicados recursivamente aos sub-elementos
O <xsl:template match=“*”/> é usado aqui para garantir que para todos os outros elementos, não é produzido nenhum output
Se um elemento está de acordo com vários templates, apenas um deles é usado. A escolha é feita por um esquema complexo de prioridades.
As keys do XSLT permitem a indexação de elementos por valores de sub-elementos ou atributos As keys têm que ser declaradas (com um nome) A função key() é usado para ir buscar os valores indexados. E.g.
Dentro de um template, um xsl:sort ordena todos os elementos de acordo com o padrão do template. A ordenação é feita antes de se aplicarem outros templates
Linguagem de mais alto nível para perguntas genéricas a documentos XML.
Usa uma sintaxe for … let … where .. result … for SQL from where SQL where return SQL select let não tem equivalente em SQL (para variáveis temporárias)
A parte do for tem expressões XPath e variáveis que vão tomando os vários valores retornados pela path expression
A parte do where impõe condições sobre essas variáveis A parte do return especifica o que deve aparecer no output,
Mapeamento de dados de/para XMLMapeamento de dados de/para XML
Hoje em dia os sistemas de bases de dados já tem mecanismos que facilitam a importação de dados vindos de ficheiros XML, bem como a exportação de dados para formato XML.
A transformação de dados para XML pode ser útil, não só para transferência, como também para interface com o utilizador.
A selecção dos dados para exportar pode ser feita através de views Para obter imbricação de elementos ter-se-ão que usar view com
mecanismos objecto-relacional (e.g. perguntas com nesting) Para importar dados de XML para um modelo relacional, há que
primeiro ter alguma forma de mapeamento do XML em conjuntos de relações.
De XML para relaçõesDe XML para relações Para ser possível tem que se conhecer o DTD.
Os elementos sem sub-elementos, e os atributos, são transformados em atributos de relações
Cria-se um relação para cada elemento com sub-elementos Os atributos ID do documento correspondem a chaves da
relação Os atributos do elemento são mapeados para atributos da
relação Cada sub-elemento que só possa ocorrer uma vez é
transformado num atributo:– Se for um sub-elementos de texto, nesse atributo guarda-se
o texto– Se for complexo, guarda-se o id do sub-elemento
Os sub-elementos que possam ocorrer múltiplas vezes num dado elemento, são guardados em relação separada– Semelhante à forma de representar em relações atributos