Rogério Araújo
Série Desenvolvimento de Sistemas
Conceito básicos, XML Schema, Namespaces,
DOM/SAX, XPath, XSLT, XLink e XPointer
Curso de
Curso de
XML
XML
Rogério Araújo
Série Desenvolvimento de Sistemas
Conceitos básicos, XML Schema, Namespaces,
DOM/SAX, XPath, XSLT, XLink e XPointer
Curso de
O Autor
Eu descobri que sempre tenho escolhas. E muitas vezes, trata-se apenas de uma escolha de atitude.
Judith M. Knowlton
Nasci em Brasília/DF, porém, ainda pequeno, meus pais se mudaram para
Teresina/PI, onde cresci com muito sol na moleira. Passei no concurso do
Ministério Público da União (MPU) e fui, em janeiro de 2005, lotado inicialmente
na Procuradoria da República do Estado Pará em Belém/PA. Atualmente, estou
lotado na Procuradoria da República Federal (PGR), em Brasília/DF.
Sou especialista em Governança em TI pela Unieuro (
www.unieuro.edu.br
)
e em Desenvolvimento de Sistemas Baseados em Software Livre pela UNAMA
(Universidade da Amazônia) (
www.unama.br
), graduado no curso de Bacharelado
em Ciência da Computação pela UESPI (Universidade Estadual do Piauí)
(
www.uespi.br
) e conclui o Curso Técnico de Processamento de Dados pela ETEPI (Escola Técnica
Estadual do Piauí). No ramo de certificações, possuo a COBIT 4.1 Foundation Certified e a SCJA
(Sun Certified Associate for J2SE).
Mantenho o blog
http://rogerioaraujo.wordpress.com
. Escrevo posts sobre dicas e assuntos
para os concursos de TI e sou autor de artigos no site do professor Walter Cunha
(
www.waltercunha.com
). Tento ajudar a comunidade com meus textos, me esforçando para focar
muito mais no informalismo e na descontração das palavras do que naquela coisa rebusca, o
famoso repimboca da parafuseta!
Abraços e vamos nessa!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 1
XML
XML
Conceitos
Conceitos
básicos
básicos
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 2
Tópicos
Tópicos
● Antes de tudo, precisamos saber que... ● Introdução
● XML x HTML
● Exemplo de um documento XML ● Como podemos usar o XML ● A árvore XML
● Regras para sintaxe de documentos XML ● Notas importantes sobre a sintaxe XML ● Elementos XML
● Exemplo de um documento XML
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 3
Tópicos
Tópicos
● Regras de nomeação de elementos ● Elementos x Atributos
● Validação de XML ● Validadores XML
● Alguma dúvida? Podemos prosseguir? ● Marco - Questões!!!
● Referência
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 4
Antes de tudo, precisamos saber que...
Antes de tudo, precisamos saber que...
● XML é uma ótima solução para compartilhar dados● Para implementar soluções em gestão de informações usando XML, podemos usar:
● DTD ou XSchema para especificar o modelo de dados e validar
as informações
● As APIs DOM ou SAX para extrair dados dos documentos, gerar
documentos, ler e gravar em bancos de dados
● XSLT e XPath para transformar os dados em outros formatos ● XLink, XPointer e XQuery para criar vínculos lógicos entre os
documentos e localizar seus componentes
● XSL-FO ou XHTML para formatar os dados para impressão ou
visualização na tela (PDF, Word ou Web)
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 5
Introdução
● Significa Extensible Markup Language
● É uma linguagem de marcaçãoparecida com HTML ● Foi projetado para transportar dados, não para exibir dados ● As tags XML NÃO são predefinidas
● Podemos definir nossas próprias tags ● Foi projetado para ser auto-descritivo
● É independente de software e hardware para transporte de informações
● Um documento XML não faz nada: é preciso escrever um software para enviá-lo, recebê-lo ou exibi-lo
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 6
XML x HTML
XML x HTML
● XML não é um substituto do HTML
● XML e HTML foram projetadas com objetivos diferentes ● XML foi projetado para o transporte e armazenamento de dados,
com foco no que são os dados
● HTML foi projetado para exibir dados, com foco em como os dados aparecem
● HTML foca a exibição de informações, enquanto o XML, como transportar informações
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 7
XML x HTML
XML x HTML
<veiculo tipo="carro"> <marca>Kia</marca> <modelo>Cerato</modelo> <motor>2.0</motor> </veiculo> <h1>Kia</h1> <h2>Cerato</h2> <p>Motor <b>2.0</b></p> O HTML mostra O HTML mostra COMOCOMO apresentar apresentar
O XML mostra O XML mostra O QUE
O QUE apresentar apresentar
Exemplo de um documento XML
Exemplo de um documento XML
<veiculo tipo="moto"> <marca>Yamaha</marca> <modelo>YZF-R1</modelo> <motor>1000 cc</motor> </veiculo> <garagem quantidade="3"/> </meus_veiculos> <?xml version="1.0" encoding="ISO-8859-1"?> <meus_veiculos> <veiculo tipo="carro"> <marca>Kia</marca> <modelo>Cerato</modelo> <motor>2.0</motor> </veiculo> <veiculo tipo="carro"> <marca>Hynduai</marca> <modelo>ix35</modelo> <motor>2.0</motor>rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 13
Marco - Questões!!!
Marco - Questões!!!
[FCC 2011 TRT 8ª Região – Analista Judiciário – Tecnologia da Informação – Questão 54] Sobre as tags HTML e XML, é correto afirmar:● [A] Tags HTMLXML são case sensitive, isto é, fazem distinção entre letras maiúsculas e minúsculas.
● [B] Tags XMLHTML não são case sensitive, isto é, não fazem distinção entre letras maiúsculas e minúsculas.
● [C] As tags XMLHTML são pré-definidas pelo W3C, devendo o autor utilizá-las quando da elaboração do documento.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 14
Marco - Questões!!!
Marco - Questões!!!
[FCC 2011 TRT 8ª Região – Analista Judiciário – Tecnologia da Informação – Questão 54] Sobre as tags HTML e XML, é correto afirmar:● [D] As tags HTML não são pré-definidas, podendo o autor do documento criá-las livremente no momento da elaboração de seu documento.
● [E] A forma de fazer comentários em um documento HTML e em um documento XML são idênticas.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 15
Marco - Questões!!!
Marco - Questões!!!
[FCC 2011 TRT 8ª Região – Analista Judiciário – Tecnologia da Informação – Questão 54] Sobre as tags HTML e XML, é correto afirmar:● [D] As tags HTMLXML não são pré-definidas, podendo o autor do documento criá-las livremente no momento da elaboração de seu documento.
● [E] A forma de fazer comentários em um documento HTML e em um documento XML são idênticas.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 16
Marco - Questões!!!
Marco - Questões!!!
[ESAF 2005 STN – Questão 23] Um conjunto de informações XML é independente do formato real de um documento. É correto afirmar que todos os documentos XML possuem uma estrutura de árvore, onde● [A] os atributos que não são nós de folha poderão ou não possuir nós filhos.
● [B] os elementos são nós de folha, não irão possuir nós filhos, possuindo apenas nós pai.
● [C] os atributos são nós de folha e poderão ou não possuir nós filhos.
● [D] os nós de atributo de um elemento formam uma lista não-ordenada, não sendo possível fazer afirmações sobre a ordem em que os atributos de um elemento ocorrem.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 17
Marco - Questões!!!
[ESAF 2005 STN – Questão 23] Um conjunto de informações XML é independente do formato real de um documento. É correto afirmar que todos os documentos XML possuem uma estrutura de árvore, onde● [A] os atributos que não são nós de folha poderão ou não possuir nós filhos (atributos nunca são nós de folha).
● [B] os elementos são nós de folha, não irãopoderão possuir nós filhos, possuindo apenas nós pai.
● [C] os atributos são nós de folha e poderão ou não possuir nós filhos (atributos nunca são nós de folha).
● [D] os nós de atributo de um elemento formam uma lista não-ordenada, não sendo possível fazer afirmações sobre a ordem em que os atributos de um elemento ocorrem.
● [E] todos os nós dessa árvore são constituídos de atributos.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 18
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2011 TRE/ES – Cargo 15]rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 19
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2011 TRE/ES – Cargo 15] Considerando a estrutura XML acima, armazenada no arquivo Funcionario.xml, julgue os próximos itens.● [70] No prólogo de um arquivo XML, existe o atributo standalone, o qual, com valor padrão yes, é de escrita obrigatória, o que indica que o documento não pode ser analisado no lado servidor.
● [71] Com essa estrutura, ao se abrir o arquivo Funcionario.xml em um navegador, será mostrado um erro de processamento de recurso.
[CESPE 2011 TRE/ES – Cargo 15] Considerando a estrutura XML acima, armazenada no arquivo Funcionario.xml, julgue os próximos itens.
● [70] No prólogo de um arquivo XML, existe o atributo standalone, o qual, com valor padrão yesno, é de escrita
obrigatóriaopcional, o que indica que o documento não pode ser analisado no lado servidorespecifica se outros arquivos são necessários para renderizar o documento.
● Gabarito: ERRADO.
● [71] Com essa estrutura, ao se abrir o arquivo Funcionario.xml em um navegador, será mostrado um erro de processamento de recurso.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 21
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2010 TRE/BA – Cargo 3] Acerca do XML, julgue os itens a seguir.● [84] Em XML, as tags definem elementos de dados e o texto fornece o dado real representado no documento.
● [85] A sintaxe básica para um elemento XML pode ser corretamente representada pela instrução a seguir.
● <nome_do_elemento>Texto</nome_do_elemento>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 22
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2010 TRE/BA – Cargo 3] Acerca do XML, julgue os itens a seguir.● [84] Em XML, as tags definem elementos de dados e o texto fornece o dado real representado no documento.
● Gabarito: CERTO.
● [85] A sintaxe básica para um elemento XML pode ser corretamente representada pela instrução a seguir.
● <nome_do_elemento>Texto</nome_do_elemento> ● Gabarito: CERTO.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 23
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2010 TRE/BA – Cargo 3] Acerca do XML, julgue os itens a seguir.● [86] Um documento XML pode conter definições para o elemento raiz e para os elementos filhos, podendo também conter elementos vazios.
● [87] A instrução a seguir está sintaticamente correta e permite o uso de algarismos romanos para codificação de números.
● <?xml version="1.0" encoding="ISO-8859-1"?>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 24
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2010 TRE/BA – Cargo 3] Acerca do XML, julgue os itens a seguir.● [86] Um documento XML pode conter definições para o elemento raiz e para os elementos filhos, podendo também conter elementos vazios.
● Gabarito: CERTO.
● [87] A instrução a seguir está sintaticamente correta e permite o uso de algarismos romanos para codificação de números.
● <?xml version="1.0" encoding="ISO-8859-1ISO-8859-7"?> ● Gabarito: ERRADO.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 25
Marco - Questões!!!
[CESPE 2010 TRE/BA – Cargo 3] Acerca do XML, julgue os itens a seguir.● [88] As marcações XML não fazem distinção entre letras minúsculas e maiúsculas.
● [89] Um documento XML sempre deve ter um elemento principal, também conhecido como root tag.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 26
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2010 TRE/BA – Cargo 3] Acerca do XML, julgue os itens a seguir.● [88] As marcações XML não fazem distinção entre letras minúsculas e maiúsculas.
● Gabarito: ERRADO.
● [89] Um documento XML sempre deve ter um elemento principal, também conhecido como root tag.
● Gabarito: CERTO.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 27 [CESPE 2010 INMETRO – Cargo 26 – Questão 40] A respeito de arquitetura distribuída, assinale a opção correta.
● [E] O XML é um formato para a criação de documentos com dados organizados de forma hierárquica. Ele é
frequentemente utilizado devido a sua portabilidade, já que independe das plataformas de hardware ou de software. Um banco de dados pode, por meio de uma aplicação, escrever em um arquivo XML, e um outro banco distinto pode então ler esses mesmos dados.
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2010 INMETRO – Cargo 26 – Questão 40] A respeito de arquitetura distribuída, assinale a opção correta.
● [E] O XML é um formato para a criação de documentos com dados organizados de forma hierárquica. Ele é
frequentemente utilizado devido a sua portabilidade, já que independe das plataformas de hardware ou de software. Um banco de dados pode, por meio de uma aplicação, escrever em um arquivo XML, e um outro banco distinto pode então ler esses mesmos dados.
● Gabarito: CERTO.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 29 [CESPE 2010 INMETRO – Cargo 12 – Questão 43] A XML é uma tecnologia para criar linguagens de marcação, a fim de descrever, de forma estruturada, dados de vários tipos. Com base nessa tecnologia, assinale a opção correta.
● [A] Um documento XML é considerado bem-formado se ele estiver sintaticamente correto. A sintaxe da XML requer pelo menos dois elementos como nó raiz, uma marca de abertura e de finalização para cada elemento, as marcas corretamente alinhadas e os valores de atributos entre aspas.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 30 [CESPE 2010 INMETRO – Cargo 12 – Questão 43] A XML é uma tecnologia para criar linguagens de marcação, a fim de descrever, de forma estruturada, dados de vários tipos. Com base nessa tecnologia, assinale a opção correta.
● [A] Um documento XML é considerado bem-formado se ele estiver sintaticamente correto. A sintaxe da XML requer pelo menos doisum elementos como nó raiz, uma marca de abertura e de finalização para cada elemento, as marcas corretamente alinhadas e os valores de atributos entre aspas duplas.
● Gabarito: ERRADO.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 31 [CESPE 2010 EMBASA – Cargo 48] Acerca do XML, julgue os itens seguintes.
● [67] Uma tag em XML começa com o símbolo < e termina com o símbolo >. Pode ser de três tipos: tag de início, como em <section>; de fim, como, por exemplo, em </section>; ou de elementos vazios, como, por exemplo, <line-break/>.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 32 [CESPE 2010 EMBASA – Cargo 48] Acerca do XML, julgue os itens seguintes.
● [67] Uma tag em XML começa com o símbolo < e termina com o símbolo >. Pode ser de três tipos: tag de início, como em <section>; de fim, como, por exemplo, em </section>; ou de elementos vazios, como, por exemplo, <line-break/>.
● Gabarito: CERTO.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 33 [CESPE 2010 BASA – Cargo 16]
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 34 [CESPE 2010 BASA – Cargo 16] Com base na estrutura do documento XML apresentado acima, julgue os próximos itens.
● [103] As tags <autor>, <titulo>, <ano>, <preco>,
<lancamento> e <oferta> são atributos da entidade <livro>.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 35 [CESPE 2010 BASA – Cargo 16] Com base na estrutura do documento XML apresentado acima, julgue os próximos itens.
● [103] As tags <autor>, <titulo>, <ano>, <preco>, <lancamento> e <oferta> são atributoselementos filho da entidade <livro>.
● Gabarito: ERRADO.
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2010 UNIPAMPA – Cargo 49] Julgue os itens, a respeito de tecnologias web.
● [103] O trecho de documento XML a seguir está sintaticamente correto.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 37 [CESPE 2010 UNIPAMPA – Cargo 49] Julgue os itens, a respeito de tecnologias web.
● [103] O trecho de documento XML a seguir não está sintaticamente correto.
● Gabarito: ERRADO.
● Os valores de atributos não estão entre aspas duplas.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 38 [CESPE 2010 UNIPAMPA – Cargo 2] Julgue os próximos itens, a respeito de tecnologias Web.
● [111] Quando um documento XML tem sintaxe correta, considera-se que ele seja bem formado. Para ser válido, o documento XML precisa, além ser bem formado, seguir obrigatoriamente as regras de uma DTD (Document Type Definition) especificada.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 39 [CESPE 2010 UNIPAMPA – Cargo 2] Julgue os próximos itens, a respeito de tecnologias Web.
● [111] Quando um documento XML tem sintaxe correta, considera-se que ele seja bem formado. Para ser válido, o documento XML precisa, além ser bem formado, seguir obrigatoriamente as regras de uma DTD (Document Type Definition) especificada.
● Gabarito: CERTO.
● Um XML “válido” é um documento: – “Bem formado”
– Que também está de acordo com as regras de um: ●Document Type Definition (DTD) ou
●XML Schema
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 40 [CESPE 2009 TRE/PR – Cargo 1] Quanto ao ambiente de
desenvolvimento de aplicações para a Internet, julgue os itens. ● [67] Os validadores XML verificam se os documentos escritos
em XML estão corretos.
● [68] Um validador XML não indicará erro, se receber o trecho de código a seguir para verificar.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 41 [CESPE 2009 TRE/PR – Cargo 1] Quanto ao ambiente de
desenvolvimento de aplicações para a Internet, julgue os itens. ● [67] Os validadores XML verificam se os documentos escritos
em XML estão corretos. ● Gabarito: CERTO.
● [68] Um validador XML não indicará erro, se receber o trecho de código a seguir para verificar.
● Gabarito: ERRADO, mas era para ser CERTO.
● Utilizando os seguintes validadores, o trecho não apresenta erros:
– http://validator.w3.org/
– http://w3schools.com/xml/xml_validator.asp – http://www.validome.org/xml/
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 42 [CESPE 2008 TST] Considerando os sistemas de numeração e a representação da informação para sistemas de informática e de comunicação, julgue os itens a seguir.
● [51] Em XML (extensible markup language), a definição dos dados pode utilizar referências a outros tipos de dados previamente definidos.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 43 [CESPE 2008 TST] Considerando os sistemas de numeração e a representação da informação para sistemas de informática e de comunicação, julgue os itens a seguir.
● [51] Em XML (extensible markup language), a definição dos dados pode utilizar referências a outros tipos de dados previamente definidos. ● Gabarito: CERTO.
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2008 TJ/CE]Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 45 [CESPE 2008 TJ/CE] Apresenta-se acima o conteúdo de um documento XML usado no framework hibernate. Julgue os seguintes itens relativos às informações apresentadas e aos conceitos de desenvolvimento de aplicações e bancos de dados.
● [80] O documento declara apenas três elementos XML, sendo: um vazio; outro que não declara atributos; e outro que possui mais de um atributo declarado.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 46 [CESPE 2008 TJ/CE] Apresenta-se acima o conteúdo de um documento XML usado no framework hibernate. Julgue os seguintes itens relativos às informações apresentadas e aos conceitos de desenvolvimento de aplicações e bancos de dados.
● [80] O documento declara apenas trêsquatro elementos XML, sendo: o elemento raiz, um vazio; outro que não declara atributos; e outro que possui mais de um atributo declarado.
● Gabarito: ERRADO.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 47 [CESPE 2008 SERPRO – Cargo 17] No referente à formatação de dados, julgue os seguintes itens.
● [105] Em cada documento XML pode haver elementos e atributos; os atributos fornecem informações que descrevem elementos; os elementos são identificados por tags; os nomes de tags estão inclusos entre sinais de menor e de maior; os elementos complexos são construídos hierarquicamente a partir de outros elementos; nomes de tags são definidos de modo a descrever o significado dos elementos de dados.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 48 [CESPE 2008 SERPRO – Cargo 17] No referente à formatação de dados, julgue os seguintes itens.
● [105] Em cada documento XML pode haver elementos e atributos; os atributos fornecem informações que descrevem elementos; os elementos são identificados por tags; os nomes de tags estão inclusos entre sinais de menor e de maior; os elementos complexos são construídos hierarquicamente a partir de outros elementos; nomes de tags são definidos de modo a descrever o significado dos elementos de dados.
● Gabarito: CERTO.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 49 [CESPE 2008 IPEA – Cargo 3] Com o desenvolvimento das tecnologias da informação foi possível realizar a comunicação multi-plataformas aumentando a complexidade do controle dos dados operacionais. Relativos a arquitetura e tecnologias de sistemas de informação, julgue os itens a seguir.
● [115] O modelo XML (extended markup language) usa estruturas de árvores hierárquicas, combina conceitos de banco de dados com os de modelos de representação de documentos.
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 50 [CESPE 2008 IPEA – Cargo 3] Com o desenvolvimento das tecnologias da informação foi possível realizar a comunicação multi-plataformas aumentando a complexidade do controle dos dados operacionais. Relativos a arquitetura e tecnologias de sistemas de informação, julgue os itens a seguir.
● [115] O modelo XML (extended markup language) usa estruturas de árvores hierárquicas, combina conceitos de banco de dados com os de modelos de representação de documentos.
● Gabarito: CERTO.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 51 [CESPE 2008 IPEA – Cargo 3] Com o desenvolvimento das tecnologias da informação foi possível realizar a comunicação multi-plataformas aumentando a complexidade do controle dos dados operacionais. Relativos a arquitetura e tecnologias de sistemas de informação, julgue os itens a seguir.
● [115] O modelo XML (extended markup language) usa estruturas de árvores hierárquicas, combina conceitos de banco de dados com os de modelos de representação de documentos.
● Gabarito: CERTO.
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2004 SGA/DF] Com o desenvolvimento das tecnologias da informação foi possível realizar a comunicação
multi-plataformas aumentando a complexidade do controle dos dados operacionais. Relativos a arquitetura e tecnologias de sistemas de informação, julgue os itens a seguir.
● [52] A XML (extensible markup language) é uma linguagem que objetiva descrever o significado dos elementos de dados de um documento,de modo que uma pessoa ou processo computacional que leia tal documento possa interpretar os rótulos (tags) XML presentes nesse documento e fazer associações semânticas a partir desses rótulos.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 53 [CESPE 2004 SGA/DF] Com o desenvolvimento das tecnologias da informação foi possível realizar a comunicação
multi-plataformas aumentando a complexidade do controle dos dados operacionais. Relativos a arquitetura e tecnologias de sistemas de informação, julgue os itens a seguir.
● [52] A XML (extensible markup language) é uma linguagem que objetiva descrever o significado dos elementos de dados de um documento,de modo que uma pessoa ou processo computacional que leia tal documento possa interpretar os rótulos (tags) XML presentes nesse documento e fazer associações semânticas a partir desses rótulos.
● Gabarito: CERTO.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 54 [CESPE 2004 ANVISA] A respeito da sintaxe e da semântica da XML (extensible markup language), julgue os itens subsequentes.
● [65] Um documento XML normalmente começa com uma declaração XML, tal como <?xml version = “1.0” standalone=“yes” encoding=“UTF-8”?>.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 55 [CESPE 2004 ANVISA] A respeito da sintaxe e da semântica da XML (extensible markup language), julgue os itens subseqüentes.
● [65] Um documento XML normalmente começa com uma declaração XML, tal como <?xml version = “1.0” standalone=“yes” encoding=“UTF-8”?>.
● Gabarito: CERTO.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 56 [CESGRANRIO 2009 BNDES – Analista de Sistemas –
Desenvolvimento – Questão 66] Considere as afirmativas a seguir sobre tecnologias de desenvolvimento para aplicações na Internet.
● II. XML é uma metalinguagem capaz de descrever linguagens de marcação, utilizada também como elemento de integração entre sistemas.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 69
Marco - Questões!!!
● [RGA 2011] <xs:pattern value="[0-9][0-9][0-9]"/> é o mesmoque <xs:pattern value="[0-9]{3}"/>. ● [RGA 2011] <xs:enumeration
value="Cerato"/><xs:enumeration value="ix35"/> é diferente de <xs:pattern value="Cerato|ix35"/>.
● [RGA 2011] <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 70
Marco - Questões!!!
Marco - Questões!!!
● [RGA 2011] <xs:pattern value="[0-9][0-9][0-9]"/> é o mesmoque <xs:pattern value="[0-9]{3}"/>. ● Gabarito: CERTO.
● [RGA 2011] <xs:enumeration
value="Cerato"/><xs:enumeration value="ix35"/> é diferente deo mesmo que <xs:pattern value="Cerato|ix35"/>
● Gabarito: ERRADO.
● [RGA 2011] <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>. ● Aceitam-se três letras maiúsculas ou minúsculas de “a” a “z”.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 71
Marco - Questões!!!
Marco - Questões!!!
● [RGA 2011] <xs:pattern value="[abc]"/>.● [RGA 2011] Com <xs:pattern value="([a-z])*"/>, aceitam-se uma ou mais ocorrências de letras minúsculas de “a” a “z” e com <xs:pattern value="([a-z][A-Z])+"/>, aceitam-se zero ou mais ocorrências de letras minúsculas de “a” a “z”.
Marco - Questões!!!
Marco - Questões!!!
● [RGA 2011] <xs:pattern value="[abc]"/>.● Aceita-se um ÚNICO valor: a, b ou c.
● [RGA 2011] Com <xs:pattern value="([a-z])*"/>, aceitam-se
umazero ou mais ocorrências de letras minúsculas de “a” a “z” e com <xs:pattern value="([a-z][A-Z])+"/>, aceitam-se
zerouma ou mais ocorrências de letras minúsculas de “a” a “z”pares de letras (uma minúscula seguida de maiúscula).
● Gabarito: ERRADO. ● *: zero ou mais ocorrências. ● +: uma ou mais ocorrências.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 73
Referências
Referências
● XML Schema Tutorial da W3 Schools: http://w3schools.com/schema/default.asp
● X100 - XML: uma introdução prática – Helder Rocha: http://www.argonavis.com.br/cursos/xml/x100/index.html ● XML Schema e namespaces: http://www.lia.ufc.br/~eti2005/menu/modulos/XML/XML_Sch ema_e_Namespaces.pdf ● O'Reilly XML Schema: http://docstore.mik.ua/orelly/xml/schema/index.htm
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 1
XML Schema
XML Schema
Parte II
Parte II
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 2
Tópicos
Tópicos
● Indicadores ● Indicadores de Ordem ● Indicadores de Ocorrência ● Exemplo de um XML Schema ● Exemplo de um documento XML ● Indicadores de Grupo ● Grupo de elementos ● Grupo de atributos● Alguma dúvida? Podemos prosseguir? ● Elemento <any> e <anyAttribute>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 3
Tópicos
Tópicos
● Exemplo do uso do <any> ● Exemplo do uso do <anyAttribute> ● Substituição de elementos
● Exemplo do uso do substitutionGroup ● Hierarquia de tipos
● Alguma dúvida? Podemos prosseguir? ● Marco – Questões!!!
● Referências
Indicadores
Indicadores
● São utilizados para controlar como os elementos filhos devem ser usados nos documentos XML
● Há sete indicadores: ● Indicadores de Ordem: – All – Choice – Sequence ● Indicadores de Ocorrência: – maxOccurs – minOccurs ● Indicadores de grupo:
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 5
Indicadores de Ordem
Indicadores de Ordem
<sequence> especifica que os elementos filhos devem aparecer em uma ordem específica:
<xs:element name="pessoa"> <xs:complexType> <xs:sequence>
<xs:element name="nome" type="xs:string"/>
<xs:element name="sobrenome" type="xs:string"/>
</xs:sequence> </xs:complexType> </xs:element>
<choice> especifica que um ou outro elemento filho pode ocorrer: <xs:element name="pessoa"> <xs:complexType> <xs:choice>
<xs:element name="servidor" type="servidor"/>
<xs:element name="membro" type="membro"/>
</xs:choice> </xs:complexType> </xs:element>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 6
Indicadores de Ordem
Indicadores de Ordem
<all> especifica que os elementos filhos pode aparecer em qualquer ordem e que cada elemento deve ocorrer apenas uma vez:
<xs:element name="pessoa"> <xs:complexType> <xs:all>
<xs:element name="nome" type="xs:string"/>
<xs:element name="sobrenome" type="xs:string"/>
</xs:all> </xs:complexType> </xs:element>
Usando o indicador <all>, podemos especificar o indicador <minOccurs>
em 0 ou 1 e <maxOccurs> apenas em 1
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 7
Indicadores de Ocorrência
Indicadores de Ocorrência
<maxOccurs> especifica o número máximo de vezes que um elemento pode ocorrer:
<xs:element name="pessoa"> <xs:complexType> <xs:sequence>
<xs:element name="nome" type="xs:string"/>
<xs:element name="dependente" type="xs:string" maxOccurs="10"/> </xs:sequence>
</xs:complexType> </xs:element>
O exemplo indica que o elemento “dependente” pode ocorre no
mínimo uma vez (o valor padrão para minOccurs é 1)
e no máximo dez vezes em um elemento "pessoa"
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 8
Indicadores de Ocorrência
Indicadores de Ocorrência
<minOccurs> especifica o número mínimo de vezes que um elemento pode ocorrer:
<xs:element name="pessoa"> <xs:complexType> <xs:sequence>
<xs:element name="nome" type="xs:string"/>
<xs:element name="dependente" type="xs:string" maxOccurs="10" minOccurs="0"/>
</xs:sequence> </xs:complexType> </xs:element>
O exemplo mostra que o elemento “dependente” pode ocorrer nenhuma
Vez e um máximo de dez em um elemento “pessoa” Para permitir que um elemento pareça
um número ilimitado de vezes, use a instrução maxOccurs=“unbounded”
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 9
Exemplo de um XML Schema
<xs:element name="dependente" type="xs:string" minOccurs="0" maxOccurs="5"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> <?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XML Schema" elementFormDefault="qualified"> <xs:element name="pessoas"> <xs:complexType> <xs:sequence>
<xs:element name="pessoa" maxOccurs="unbounded"> <xs:complexType> <xs:sequence>
<xs:element name="nome" type="xs:string"/>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 10
Exemplo de um documento XML
Exemplo de um documento XML
<pessoa>
<nome>Roberto Gomes</nome> <dependente>Helena</dependente> <dependente>José</dependente> <dependente>João</dependente> <dependente>Carlos</dependente> </pessoa>
<pessoa>
<nome>Francisco Sousa</nome> </pessoa> </pessoas> <?xml version="1.0" encoding="ISO-8859-1"?> <pessoas xmlns:xsi="http://www.w3.org/2001/XM LSchema-instance" xsi:noNamespaceSchemaLocation= "familia.xsd"> <pessoa>
<nome>Maria da Silva</nome> <dependente>Carolina</dependente> </pessoa>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 11
Indicadores de Grupo
Indicadores de Grupo
● Grupos de elementos● Usamos esse indicador para montar um grupo de elementos reutilizáveis na definição de vários tipos complexos para elementos
● Utilizamos os indicadores de ordem (all, choice, ou sequence) dentro da declaração de um grupo
● Grupos de atributos
● Mesma finalidade dos grupos de elementos, porém com foco em grupos de atributos
● Não é preciso o uso dos indicadores de ordem
Grupo de elementos
Grupo de elementos
<xs:complexType name="infoPessoa"> <xs:sequence>
<xs:group ref="grupoPessoa"/> <xs:element name="pais" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:group name="grupoPessoa">
<xs:sequence>
<xs:element name="nome" type="xs:string"/>
<xs:element name="sobrenome" type="xs:string"/>
<xs:element name="dataNascimento" type="xs:date"/>
</xs:sequence> </xs:group>
<xs:element name="pessoa" type="infoPessoa"/>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 13
Como definir elementos complexos
Como definir elementos complexos
<!-- Definição do elemento --> <xs:element name="servidorFederal" type="infoCompletoPessoa"/> <!-- informações básicas --> <xs:complexType name="infoPessoa"> <xs:sequence> <xs:element name="nome" type="xs:string"/> <xs:element name="sobrenome" type="xs:string"/> </xs:sequence> </xs:complexType> <!-- informações completas --> <xs:complexType name="infoCompletoPessoa"> <xs:complexContent>
<xs:extension base="infoPessoa"> <xs:sequence> <xs:element name="endereco" type="xs:string"/> <xs:element name="cidade" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> Podemos criar um tipo complexo
a partir de outro já existente
<extension> Permite estender
um tipo
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 14
Grupo de atributos
Grupo de atributos
<xs:element name="pessoa"> <xs:complexType> <xs:attributeGroup ref="grupoAtributosPessoa"/> </xs:complexType> </xs:element> <xs:attributeGroup name="grupoAtributosPessoa"> <xs:attribute name="nome" type="xs:string"/>
<xs:attribute name="sobrenome" type="xs:string"/>
<xs:attribute name="dataNascimento" type="xs:date"/>
</xs:attributeGroup>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 15
Alguma dúvida? Podemos prosseguir?
Alguma dúvida? Podemos prosseguir?
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 16
Marco - Questões!!!
Marco - Questões!!!
● [RGA 2011] Usando o indicador <all>, podemos especificar oindicador <minOccurs> em 1 e <maxOccurs> apenas em 0 ou 1.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 17
Marco - Questões!!!
● [RGA 2011] Usando o indicador <all>, podemos especificar oindicador <minOccurs> em 0 ou 1 e <maxOccurs> apenas em 0 ou 1.
● Gabarito: ERRADO.
● [RGA 2011] O valor padrão tanto para minOccurs quanto para maxOccurs é 1.
● Gabarito: CERTO.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 18
Marco - Questões!!!
Marco - Questões!!!
● [RGA 2011] Para permitir que um elemento pareça um númeroilimitado de vezes, use a instrução maxOccurs=“[...]”. ● [RGA 2011] No indicador de grupo de elementos, não é
preciso o uso dos indicadores de ordem. Já no indicador de grupo de atributos, utilizamos os indicadores de ordem.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 19
Marco - Questões!!!
Marco - Questões!!!
● [RGA 2011] Para permitir que um elemento pareça um númeroilimitado de vezes, use a instrução maxOccurs=“unbounded”. ● [RGA 2011] No indicador de grupo de elementos, não é
preciso o uso dosutilizamos os indicadores de ordem. Já no indicador de grupo de atributos, utilizamos osnão é preciso o uso dos indicadores de ordem.
● Gabarito: ERRADO.
Elemento <any> e <anyAttribute>
Elemento <any> e <anyAttribute>
● São usados para fazer documentos extensíveis
● Permitem aos documentos conterem elementos adicionais que não estão declarados no esquema XML
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 21
Exemplo do uso do <any>
Exemplo do uso do <any>
<xs:sequence> <xs:element name="nome" type="xs:string"/> <xs:element name="sobrenome" type="xs:string"/> <xs:any minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> Criando o esquema pessoas.xsd:
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XML Schema" targetNamespace="http://www.empresa.c om.br" xmlns="http://www.empresa.com.br" elementFormDefault="qualified"> <xs:element name="pessoas"> <xs:complexType> <xs:sequence> <xs:element name="pessoa" maxOccurs="unbounded"> <xs:complexType>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 22
Exemplo do uso do <any>
Exemplo do uso do <any>
</xs:sequence> </xs:complexType> </xs:element> </xs:schema> Criando o esquema dependentes.xsd:
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XML Schema" targetNamespace="http://www.empresa.c om.br" xmlns="http://www.empresa.com.br" elementFormDefault="qualified"> <xs:element name="dependente"> <xs:complexType> <xs:sequence> <xs:element name="nome" type="xs:string" maxOccurs="unbounded"/>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 23
Exemplo do uso do <any>
Exemplo do uso do <any>
</pessoa> <pessoa> <nome>Roberto</nome> <sobrenome>Gome</sobrenome> </pessoa> </pessoas> <?xml version="1.0" encoding="ISO-8859-1"?> <pessoas xmlns="http://www.empresa.com.br" xmlns:xsi="http://www.w3.org/2001/XM LSchema-instance" xsi:schemaLocation="http://www.empres a.com.br pessoas.xsddependentes.xsd"> <pessoa> <nome>Maria</nome> <sobrenome>Silva</sobrenome> <dependente> <nome>Carolina</nome> </dependente> O documento XML utiliza componentes de dois esquemas
diferentes: “pessoas.xsd” e “dependentes.xsd”
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 24
Exemplo do uso do <anyAttribute>
Exemplo do uso do <anyAttribute>
<xs:sequence> <xs:element name="nome" type="xs:string"/> <xs:element name="sobrenome" type="xs:string"/> <xs:anyAttribute/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> Criando o esquema pessoas.xsd:
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XML Schema" targetNamespace="http://www.empresa.c om.br" xmlns="http://www.empresa.com.br" elementFormDefault="qualified"> <xs:element name="pessoas"> <xs:complexType> <xs:sequence> <xs:element name="pessoa" maxOccurs="unbounded"> <xs:complexType>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 25
Exemplo do uso do <anyAttribute>
</xs:simpleType> </xs:attribute> </xs:element> </xs:schema> Criando o esquema atributoSexo.xsd:
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XML Schema" targetNamespace="http://www.empresa.c om.br" xmlns="http://www.empresa.com.br" elementFormDefault="qualified"> <xs:attribute name="sexo"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="masculino| feminino"/> </xs:restriction>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 26
Exemplo do uso do <anyAttribute>
Exemplo do uso do <anyAttribute>
<pessoa sexto="masculino"> <nome>Roberto</nome> <sobrenome>Gome</sobrenome> </pessoa> </pessoas> <?xml version="1.0" encoding="ISO-8859-1"?> <pessoas xmlns="http://www.empresa.com.br" xmlns:xsi="http://www.w3.org/2001/XM LSchema-instance" xsi:schemaLocation="http://www.empres a.com.br pessoas.xsdatributoSexo.xsd"> <pessoa sexto="feminino">
<nome>Maria</nome> <sobrenome>Silva</sobrenome>
</pessoa> O documento XML utiliza componentes de dois esquemas
diferentes: “pessoas.xsd” e “atributoSexo.xsd”
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 27
Substituição de elementos
Substituição de elementos
● Um exemplo para substituição de elementos é quando utilizamos um XML Schema para validar documentos XML de vários idiomas
● Cada idioma terá seu conjunto de palavras para definir seu documento XML de mesmo contexto, porém o XML Schema pode ser o mesmo para validar todos eles
● Para resolver este problema, nós podemos definir um substitutionGroup no esquema XML
● Para evitar que um elemento seja substituído, basta ativar o atributo “block” com o valor “substitution”:
● <xs:element name="name" type="xs:string"
block="substitution"/>
Exemplo do uso do substitutionGroup
Exemplo do uso do substitutionGroup
<xs:element name="modelo" type="xs:string"/> <!-- Elemento chave --> <xs:element name="samhail" substitutionGroup="modelo"/> <!-- Irlandês --> <xs:element name="model" substitutionGroup="modelo"/> <!-- Croata --> <xs:complexType name="infoVeiculo">
<xs:sequence>
<xs:element ref="modelo"/> </xs:sequence>
</xs:complexType>
<xs:element name="veiculo" type="infoVeiculo"/> <!-- Elemento chave --> <xs:element name="feithicle" substitutionGroup="veiculo"/> <!-- Irlandês --> <xs:element name="vozila" substitutionGroup="veiculo"/> <!-- Croata -->
Primeiro, declaramos o elemento chave para depois declararmos outros elementos
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 29
Exemplo do uso do substitutionGroup
Exemplo do uso do substitutionGroup
<veiculo>
<modelo>Cerato</modelo> </veiculo>
<!-- Irlandês --> <feithicle>
<samhail>Cerato</samhail> </feithicle>
<!-- Croata --> <vozila>
<model>Cerato</model> </vozila>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 30
Alguma dúvida? Podemos prosseguir?
Alguma dúvida? Podemos prosseguir?
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 31
Referências
Referências
● XML Schema Tutorial da W3 Schools: http://w3schools.com/schema/default.asp
● X100 - XML: uma introdução prática – Helder Rocha: http://www.argonavis.com.br/cursos/xml/x100/index.html ● XML Schema e namespaces: http://www.lia.ufc.br/~eti2005/menu/modulos/XML/XML_Sch ema_e_Namespaces.pdf ● O'Reilly XML Schema: http://docstore.mik.ua/orelly/xml/schema/index.htm
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 1
XML Schema
XML Schema
Questões de
Questões de
concursos
concursos
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 2 [FGV 2009 MEC – Arquiteto de Sistema – Questão 74 – Item III - Adaptado] Com relação às tecnologias relacionadas a XML (eXtensible Markup Language), leia os trechos a seguir.
● XSD é uma linguagem baseada no formato XML para definição de regras de validação em documentos XML. Esta linguagem é uma alternativa ao DTD, cuja sintaxe não é baseada no formato XML.
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 3 [FGV 2009 MEC – Arquiteto de Sistema – Questão 74 – Item III - Adaptado] Com relação às tecnologias relacionadas a XML (eXtensible Markup Language), leia os trechos a seguir.
● XSD é uma linguagem baseada no formato XML para definição de regras de validação em documentos XML. Esta linguagem é uma alternativa ao DTD, cuja sintaxe não é baseada no formato XML.
● Gabarito: CERTO.
Marco - Questões!!!
Marco - Questões!!!
[FGV 2008 Senado Federal – Analista de Sistemas – Questão 45]
Marco - Questões!!!
Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 29
Marco - Questões!!!
Marco - Questões!!!
[CESGRANRIO 2008 Petrobrás - Técnico em Informática] Ao ler e processar arquivos XML, é interessante considerar o desempenho em duas dimensões: tempo e memória. Examine, a seguir, as afirmativas sobre os padrões de consumo de memória, tanto no SAX quanto no DOM.● I. O consumo de memória do SAX é uma constante, independente do tamanho do documento XML.
● II. O consumo de memória de uma implementação DOM depende do tamanho do documento XML.
● III. SAX sempre consome mais memória do que DOM.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 30
Marco - Questões!!!
Marco - Questões!!!
[CESGRANRIO 2008 Petrobrás - Técnico em Informática] Ao ler e processar arquivos XML, é interessante considerar o desempenho em duas dimensões: tempo e memória. Examine, a seguir, as afirmativas sobre os padrões de consumo de memória, tanto no SAX quanto no DOM.● I. O consumo de memória do SAX é uma constante, independente do tamanho do documento XML.
● II. O consumo de memória de uma implementação DOM depende do tamanho do documento XML.
● III. SAX sempre consome maismenos memória do que DOM.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 31
Marco - Questões!!!
Marco - Questões!!!
[CESGRANRIO 2008 Petrobrás - Técnico em Informática] Ao ler e processar arquivos XML, é interessante considerar o desempenho em duas dimensões: tempo e memória. Examine, a seguir, as afirmativas sobre os padrões de consumo de memória, tanto no SAX quanto no DOM.Está(ão) correta(s) a(s) afirmativa(s) ● [A] I, apenas.
● [B] I e II, apenas. ● [C] I e III, apenas. ● [D] II e III, apenas. ● [E] I, II e III.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 32
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2009 INMETRO – Cargo 5] Julgue os itens seguintes a respeito das tecnologias de bancos de dados e aplicações web.● [75] Na linguagem XML, todo atributo é parte de um elemento, todo elemento é raiz ou filho de uma raiz, a construção de uma árvore pode empregar o modelo DOM, uma transformação pode ser direcionada por um documento XSLT, e quando se deseja consumir pouca memória no processamento de XML pode-se empregar um parser do tipo SAX.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 33
Marco - Questões!!!
[CESPE 2009 INMETRO – Cargo 5] Julgue os itens seguintes a respeito das tecnologias de bancos de dados e aplicações web.● [75] Na linguagem XML, todo atributo é parte de um elemento, todo elemento é raiz ou filho de uma raiz, a construção de uma árvore pode empregar o modelo DOM, uma transformação pode ser direcionada por um documento XSLT, e quando se deseja consumir pouca memória no processamento de XML pode-se empregar um parser do tipo SAX.
● Gabarito: CERTO.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 34
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2009 INMETRO – Cargo 10] Em relação a formatação de dados, HTML e XML, julgue os itens a seguir.● [113] Arquivos XML permitem o processamento automatizado de seus dados por meio de tecnologias como DOM e SAX. Os arquivos HTML, por sua vez, só podem ser processados automaticamente por meio da tecnologia SAX.
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 35
Marco - Questões!!!
Marco - Questões!!!
[CESPE 2009 INMETRO – Cargo 10] Em relação a formatação de dados, HTML e XML, julgue os itens a seguir.● [113] Arquivos XML permitem o processamento automatizado de seus dados por meio de tecnologias como DOM e SAX. Os arquivos HTML, por sua vez, só podem ser processados automaticamente por meio da tecnologia SAX e DOM.
● Gabarito: ERRADO.
Referências
Referências
● XML DOM Tutorial da W3 Schools: http://w3schools.com/dom/default.asp
● X100 - XML: uma introdução prática – Helder Rocha: http://www.argonavis.com.br/cursos/xml/x100/index.html ● APIs Java para XML:
http://www.inf.ufrgs.br/gppd/disc/inf01008/trabalhos/sem0 1-1/t2/apis_xml_java/
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 1
XPath
XPath
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 2
Tópicos
Tópicos
● Introdução ● Exemplo de um documento XML ● Exemplo de XPath ● Terminologia Xpath ● Relacionamentos dos nós ● Selecionando nós ● Exemplo de um documento XML ● Exemplos de seleções de nós ● Predicados ● Exemplos de predicadosrogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 3
Tópicos
Tópicos
● Selecionando nós desconhecidos
● Exemplos de seleção de nós desconhecidos ● Selecionando alguns caminhos
● Eixos XPath
● Caminhos de localização ● Uso dos eixos
● Exemplos de formação de etapas ● Operadores
● Alguma dúvida? Podemos prosseguir? ● Marco - Questões!!!
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 4
Introdução
Introdução
● É uma linguagem de expressão para selecionar nós ou conjuntos de nós através da especificação de seus caminhos de localização no documento XML
● Usa expressões de caminho para selecionar os nós ou conjuntos de nós em um documento XML
● A sintaxe do XPath foi inspirada, em parte, pelos sistemas de arquivos de um sistema operacional
● Contém uma biblioteca de funções padrão ● É o elemento principal em XSLT
● Serve para navegar pelos nós e localizar dados ● É uma recomendação da W3C
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 5
Exemplo de um documento XML
<preco>85000</preco> </veiculo> <veiculo tipo="moto"> <marca>Yamaha</marca> <modelo>YZF-R1</modelo> <motor>1000 cc</motor> <preco>25000</preco> </veiculo> <garagem quantidade="3"/> </meus_veiculos> <?xml version="1.0" encoding="ISO-8859-1"?> <meus_veiculos> <veiculo tipo="carro"> <marca>Kia</marca> <modelo>Cerato</modelo> <motor>2.0</motor> <preco>50000</preco> </veiculo> <veiculo tipo="carro"> <marca>Hynduai</marca> <modelo>ix35</modelo> <motor>2.0</motor>rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 6
Exemplo de XPath
Exemplo de XPath
● A expressão XPath abaixo seleciona o elemento raiz meus_veiculos:
● /meus_veiculos
● A expressão XPath abaixo seleciona todos os elementos
veiculo do elemento meus_veiculos: ● /meus_veiculos/veiculo
● A expressão XPath abaixo seleciona todos os elementos modelo de todos os elementos veiculo do elemento meus_veiculos:
● /meus_veiculos/veiculo/modelo
● Se o caminho começa com uma barra ( / ) ele representa um caminho absoluto para um elemento
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 7
Terminologia XPath
Terminologia XPath
● Em XPath, existem sete (7) tipos de nós: ● Elemento ● Atributo ● Texto ● Namespace ● Instrução de processamento ● Comentário ● Nós do documento
● Documentos XML são tratados como árvores de nós ● O elemento mais alto da árvore é chamado o elemento raiz
Terminologia XPath
Terminologia XPath
● Valores atômicos ● São nós sem: – Filhos ou – Pais ● Exemplos – Kia – carro ● Item ● São valores: – Atômicos ou – Nósrogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 9
Relacionamentos dos nós
Relacionamentos dos nós
● Pais: cada elemento e atributo tem um pai
● Crianças: nós do elemento pode ter zero, um ou mais filhos ● Irmãos: nós que temos o mesmo pai
● Antepassados: pais de um nó, o pai do pai, etc ● Descendentes: filhos de um nó, filhos dos filhos, etc
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 10
Selecionando nós
Selecionando nós
ExpressãoExpressão DescriçãoDescrição
Nome do nó Seleciona todos os nós filhos com o nome citado / Seleciona a partir do nó raiz
// correspondam a seleção, não importando onde eles estãoSeleciona os nós no documento a partir do nó atual que . Seleciona o nó atual
.. Seleciona o pai do nó atual @ Seleciona os atributos
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 11
Exemplo de um documento XML
Exemplo de um documento XML
<preco>85000</preco> </veiculo> <veiculo tipo="moto"> <marca>Yamaha</marca> <modelo>YZF-R1</modelo> <motor>1000 cc</motor> <preco>25000</preco> </veiculo> <garagem quantidade="3"/> </meus_veiculos> <?xml version="1.0" encoding="ISO-8859-1"?> <meus_veiculos> <veiculo tipo="carro"> <marca>Kia</marca> <modelo>Cerato</modelo> <motor>2.0</motor> <preco>50000</preco> </veiculo> <veiculo tipo="carro"> <marca>Hynduai</marca> <modelo>ix35</modelo> <motor>2.0</motor>rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 12
Exemplos de seleções de nós
Exemplos de seleções de nós
ExpressãoExpressão DescriçãoDescrição
veiculo Seleciona todos os nós filhos do elemento veiculo
/meus_veiculos Seleciona a raiz meus_veiculos
meus_veiculos/veiculo Seleciona todos os elementos meus_veiculosveiculo que são filhos de //veiculo Seleciona todos os elementos onde eles estãoveiculo, não importando meus_veiculos//marca Seleciona todos os elementos do elemento meus_veiculos, não importa onde eles estão marca que são descendente
sob esse elemento
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 13
Predicados
● São usados para encontrar um nó: ● Específico ou
● Que contém um valor específico ● São sempre incorporados entre colchetes
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 14
Exemplos de predicados
Exemplos de predicados
ExpressãoExpressão DescriçãoDescrição
/meus_veiculos/veiculo[1]
Seleciona o primeiro elemento veiculo filho de meus_veiculos
No IE5, o primeiro está na posição [0], mas de acordo com o padrão W3C é [1] /meus_veiculos/veiculo[last()] Seleciona o último elemento meus_veiculosveiculo filho de /meus_veiculos/veiculo[last() - 1] Seleciona o penúltimo elemento de meus_veiculosveiculo filho /meus_veiculos/veiculo[position() < 3] Seleciona os dois primeiros elementos veiculo filho de meus_veiculos
//veiculo[@tipo] Seleciona todos os elementos atributo tipo, não importando onde eles veiculo com estão
//veiculo[@tipo="carro"] Seleciona todos os elementos atributo tipo com valor carroveiculo, não com importando onde eles estão
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 15
Exemplos de predicados
Exemplos de predicados
ExpressãoExpressão DescriçãoDescrição
/meus_veiculos/veiculo[preco>65000] Seleciona os elementos de meus_veiculos com valor do veiculo filho elemento preco superior a 65.000 /meus_veiculos/veiculo[preco>65000]/modelo
Seleciona os elementos modelodos elementos veiculo filho de
meus_veiculos com valor do elemento preco superior a 65.000
Selecionando nós desconhecidos
Selecionando nós desconhecidos
● Curingas XPath (wildcards) podem ser usados para selecionar elementos XML desconhecidos
Curinga
Curinga DescriçãoDescrição
* Corresponde a qualquer nó @* Corresponde a qualquer atributo de nó node() Corresponde a qualquer nó de qualquer tipo
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 17
Exemplos de seleção de nós desconhecidos
Exemplos de seleção de nós desconhecidos
Expressão
Expressão DescriçãoDescrição
/meus_veiculos/* Seleciona todos os elementos filhos do elemento meus_veiculos //* Seleciona todos os elementos do documento //veiculo[@*] Seleciona todos os elementos atributoveiculo que possuem algum
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 18
Selecionando alguns caminhos
Selecionando alguns caminhos
● Com o uso do operador | nas expressões, podemos selecionar alguns caminhos
Expressão
Expressão DescriçãoDescrição
//veiculo/marca | //veiculo/modelo modeloSeleciona todos os elementos de todos os elementos marcaveiculo E //marca | //modelo Seleciona todos os elementos modelo do documentomarca E /meus_veiculos/veiculo/marca | //preco
Seleciona todos os elementos marca do elemento veiculo de meus_veiculos E
todos os elementos de preco do documento
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 19
Eixos XPath
Eixos XPath
● Definem um conjunto de nós relativo ao nó atual
● Armazenam algumas informações sobre o nó atual ou outros dentro do documento, dependendo do eixo a ser utilizado
● Por exemplo, um eixo chamado informação “child” contém informações sobre os filhos do nó atual
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 20
Eixos XPath
Eixos XPath
EixoEixo DescriçãoDescrição
ancestor Seleciona todos os ancestrais (pais, avós, etc) do nó atual ancestor-or-self Seleciona o nó atual mais todos os seus ancestrais
attribute Seleciona todos os atributos do nó atual child Seleciona todos os elementos filhos do nó atual descendant Seleciona todos os descendentes (filhos, netos, etc) do nó atual descendant-or-self Seleciona o nó atual mais todos os seus descendentes
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 21
Eixos XPath
Eixo
Eixo DescriçãoDescrição
following-sibling Seleciona todos os irmãos depois do nó atual namespace Seleciona todos os nós do namespace do nó atual
parent Seleciona o pai do nó atual
preceding Seleciona tudo no documento que está antes da tag de abertura do nó atual preceding-sibling Seleciona todos os irmãos antes do nó atual
self Seleciona o nó atual
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 22
Caminhos de localização
Caminhos de localização
● Dois tipos de caminhos:● Absoluto (começa com uma barra “/”):
– /etapa/etapa
● Relativo – etapa/etapa
● Em ambos os casos, o caminho consiste de um ou mais níveis de localização, cada um separado por uma barra
● Cada etapa é avaliado segundo os nós no conjunto do nó atual
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 23
Caminhos de localização
Caminhos de localização
● Uma etapa consiste de:● Um eixo
– Define a árvore de relacionamento entre os nós selecionados e o nó atual
● Um nó de teste
– Identifica um nó ou mais nós dentro de um eixo ● Zero ou mais predicados
– Facilita a seleção do conjunto de nós
● A sintaxe para um nível de localização é a seguinte: ● eixo::noTeste[predicado]
Uso dos eixos
Uso dos eixos
● As etapas vistas antes da apresentação dos eixos eram especificadas com o caminho exato ou, pelo menos, com o uso dos curingas
● Por exemplo:
● /meus_veiculos/veiculo/marca
● Podemos usar os eixos para construir o caminho de modo mais simples
● Por exemplo ● child::marca
● Sendo o nó atual veiculo
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 25
Uso dos eixos
Uso dos eixos
<xsl:template match="veiculo"> <xsl:value-of select="child::marca"/> </xsl:template>
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 26
Exemplos de formação de etapas
Exemplos de formação de etapas
ExemploExemplo DescriçãoDescrição
child::veiculo Seleciona todos os elementos atual veiculo que são filhos do nó attribute::tipo Seleciona o atributo tipo do nó atual
child::* Seleciona todos os elementos filhos do nó atual attribute::* Seleciona todos os atributos do nó atual child::text() Seleciona todos textos dos nós filhos do nó atual child::node() Seleciona todos os nós filhos de qualquer tipo do nó atual descendant::veiculo Seleciona todos os elementos atualveiculo descendentes do nó
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 27
Exemplos de formação de etapas
Exemplos de formação de etapas
ExemploExemplo DescriçãoDescrição
ancestor::veiculo Seleciona todos os elementos nó atual veiculo que são ancestrais do
ancestor-or-self::veiculo
Seleciona todos os elementos veiculo ancestrais do nó atual e, se o nó atual é um elemento veiculo, seleciona o nó atual
também
child::*/child::preco Seleciona todos os elementos preco netos do nó atual
rogerioaraujo.wordpress.com – twitter: @rgildoaraujo - rgildoarauj@gmail.com 28
Operadores
Operadores
OperadorOperador DescriçãoDescrição
I //marca | //modelo – Retorna um conjunto de nós com todos elementos marca e modelo
+ Adição
- Subtração
* Multiplicação
div Divisão (/ é usado para separar etapas)
= Igual