• Nenhum resultado encontrado

GERÊNCIA DE DADOS SEMIESTRUTURADOS

N/A
N/A
Protected

Academic year: 2021

Share "GERÊNCIA DE DADOS SEMIESTRUTURADOS"

Copied!
7
0
0

Texto

(1)

   

EXERCÍCIO XML, DTD, XPATH e XQUERY

Considere o fragmento do documento XML a seguir, que apresenta indicadores do programa federal Luz para Todos. O referido documento também está acessível pelo Portal Brasileiro de Dados Abertos, através do link http://goo.gl/hmqhB .

...

<metadado>

<grupo_informacao> <id>13</id>

<nome>Luz Para Todos</nome>

<periodicidade>Anual</periodicidade> <base_territorial>Estadual</base_territorial> <demais_series_grupo> <serie_historica href="http://i3gov. planejamento.gov.br/xml/serie/53.xml"/> <serie_historica href="http://i3gov. planejamento.gov.br/xml/serie/54.xml"/> </demais_series_grupo> </grupo_informacao> <id>60</id>

<nome>Pessoas atendidas pelo programa Luz Para Todos</nome> <descricao>Pessoas atendidas pelo programa

Luz Para Todos</descricao>

<produto>Pessoas Beneficiadas</produto> <multiplicador/> <tipo_numerico>Inteiro</tipo_numerico> <unidade_medida>Pessoa</unidade_medida> <fonte_gestora>MME</fonte_gestora> <fonte_provedora>MME</fonte_provedora>

<aditividade>Os dados podem ser consolidados

por base territorial e/ou periodicidade</aditividade> </metadado> <dados> <dado> <ano>2004</ano> <codibge>11</codibge> <valor>430</valor> </dado> <dado> <ano>2004</ano> <codibge>12</codibge> <valor>2765</valor> </dado> <dado> ...

(2)

   

O arquivo XML divide os dados em dois conjuntos:

- Metadado: contém informações sobre os dados no arquivo - Dados: contém os dados sobre cada região.

1. Escreva u m a c o n s u l t a X P a t h q u e a p r e s e n t e o n o m e d o p r o g r a m a ( “ L u z p a r a T o d o s ” ) e a d e s c r i ç ã o d o s d a d o s a p r e s e n t a d o s n o r e f e r i d o a r q u i v o ( t a g d e s c r i c a o ) .

//metadado/grupo_informacao/nome | data//metadado/descrição

RESULTADO:

<nome>Luz Para Todos</nome>

<descricao>Pessoas atendidas pelo programa Luz Para Todos</descricao>

2. Escreva u m a c o n s u l t a X P a t h q u e a p r e s e n t e o s d a d o s ( r e g i ã o / p e s s o a s a t e n d i d a s ) d o p r o g r a m a , r e f e r e n t e s a o a n o 2 0 0 4 . //serie_historica/dados/dado[ano = 2004]/codibge | //serie_historica/dados/dado[ano = 2004]/valor RESULTADO: <codibge>11</codibge> <valor>430</valor> <codibge>12</codibge> <valor>2765</valor> ... 3. Escreva u m a c o n s u l t a X P a t h q u e a p r e s e n t e o s d a d o s d o ú l t i m o r e g i s t r o d a s é r i e ( u s a n d o a f u n ç ã o l a s t ( ) c o m o p r e d i c a d o ) . //serie_historica/dados/dado[last()] RESULTADO: <dado> <ano>2010</ano> <codibge>52</codibge> <valor>6760</valor> </dado> 4. Escreva u m a c o n s u l t a X P a t h q u e a p r e s e n t e a r e g i ã o d e t o d o s o s r e g i s t r o s d o a n o d e 2 0 1 0 e m q u e f o r a m a t e n d i d a s m a i s d e 2 4 6 0 0 0 p e s s o a s .

//serie_historica/dados/dado[valor > 246000 and ano = 2010]/codibge

RESULTADO:

<codibge>21</codibge> <codibge>29</codibge>

(3)

    5. Escreva u m a c o n s u l t a X P a t h q u e a p r e s e n t e o s d a d o s d e a t e n d i m e n t o d o e s t a d o d e S a n t a C a t a r i n a ( c o d i b g e = 4 2 ) . //serie_historica/dados/dado[codibge = 42] RESULTADO: <dado> <ano>2004</ano> <codibge>42</codibge> <valor>5000</valor> </dado> ...

6. Utilizando expressão FLWOR, escreva u m a c o n s u l t a X Q u e r y q u e a p r e s e n t e o s d a d o s d o e s t a d o d e S a n t a C a t a r i n a n o p r o g r a m a , r e f e r e n t e s a o a n o 2 0 0 9 . A p r e s e n t e o r e s u l t a d o c o m o u m a l i s t a H T M L ( < l i > E s t a d o : ? ? – A n o : ? ? ? ? - V a l o r : ? ? ? < / l i > ) .

for $x in doc("LuzParaTodos-60.xml")//serie_historica/dados/dado where $x/codibge = 42 and

$x/ano = 2009 return

<li>Estado: {data($x/codibge)} - Ano: {data($x/ano)} – Valor: {data($x/valor)}</li>

RESULTADO:

<li>Estado: 42 - Ano: 2009 – Valor: 9955</li>

7. Utilizando expressões FLWOR, escreva D U A S c o n s u l t a s X Q u e r y q u e g e r e m u m r e l a t ó r i o e m X M L , o r d e n a d o p o r E s t a d o / A n o , c o n f o r m e a e s t r u t u r a a s e g u i r :  Programa/Descrição  Estado/Ano/Pessoas atingidas a) Cabeçalho for $x in doc("LuzParaTodos-60.xml") //data/serie_historica/metadado return <cabecalho> <programa>{data($x/grupo_informacao/nome)}</programa> <descricao>{data($x/descricao)}</descricao> </cabecalho> b) Corpo for $x in doc("LuzParaTodos-60.xml") //data/serie_historica/dados/dado order by $x/codibge, $x/ano

return <dado>

<estado>{data($x/codibge)}</estado> <ano>{data($x/ano)}</ano>

(4)

   

RESULTADO: a) Cabeçalho <cabecalho>

<programa>Luz Para Todos</programa>

<descricao>Pessoas atendidas pelo programa Luz Para Todos</descricao> </cabecalho> b) Corpo <dado> <estado>11</estado> <ano>2004</ano> <pessoas>430</pessoas> </dado> ... <luz> { for $x in //metadado return <cabecalho> <programa>{data($x/grupo_informacao/nome)}</programa> {$x/descricao} </cabecalho> } <dados> { for $y in //dado

order by $y/codibge, $y/ano return <dado> <estado>{data($y/codibge)}</estado> <ano>{data($y/ano)}</ano> <pessoas>{data($y/valor)}</pessoas> </dado> }</dados> </luz>

(5)

   

8. Utilizando expressões FLWOR, escreva u m a c o n s u l t a X Q u e r y q u e a p r e s e n t e o n o m e d e t o d o s o s E s t a d o s e m q u e , n o a n o d e 2 0 1 0 , f o r a m a t e n d i d a s m a i s d e 2 4 6 0 0 0 p e s s o a s .

// Solução 01-

for $x in doc("LuzParaTodos-60.xml")

//data/serie_historica/dados/dado where $x/ano = 2010 and

$x/valor > 246000 return

if ($x/codibge = 42) then

<estado>Santa Catarina</estado> else if ($x/codibge = 12) then <estado>Acre</estado>

else if ($x/codibge = 27) then <estado>Alagoas</estado> else if ($x/codibge = 29) then <estado>Bahia</estado>

else if ($x/codibge = 21) then <estado>Maranhão</estado> else <estado>{data($x/codibge)}</estado> ... RESULTADO: <estado>Maranhão</estado> <estado>Bahia</estado>

(6)

    // Solução alternativa let $estados := <estados> <estado codibge="12">Acre</estado> <estado codibge="27">Alagoas</estado> <estado codibge="16">Amapa</estado> <estado codibge="13">Amazonas</estado> <estado codibge="29">Bahia</estado> <estado codibge="23">Ceara</estado>

<estado codibge="53">Distrito Federal</estado> <estado codibge="32">Espirito Santo</estado> <estado codibge="52">Goias</estado>

<estado codibge="21">Maranhao</estado> <estado codibge="51">Mato Grosso</estado>

<estado codibge="50">Mato Grosso do Sul</estado> <estado codibge="31">Minas Gerais</estado>

<estado codibge="15">Para</estado> <estado codibge="25">Paraiba</estado> <estado codibge="41">Parana</estado> <estado codibge="26">Pernambuco</estado> <estado codibge="22">Piaui</estado>

<estado codibge="33">Rio de Janeiro</estado>

<estado codibge="24">Rio Grande do Norte</estado> <estado codibge="43">Rio Grande do Sul</estado> <estado codibge="11">Rondonia</estado>

<estado codibge="14">Roraima</estado>

<estado codibge="42">Santa Catarina</estado> <estado codibge="35">Sao Paulo</estado>

<estado codibge="28">Sergipe</estado> <estado codibge="17">Tocantins</estado> </estados>

for $x in //dados/dado

where $x/ano = 2010 and $x/valor > 246000 return <estado codibge="{data($x/codibge)}"> <nome_estado> {data($estados//estado[@codibge = $x/codibge])} </nome_estado> </estado>

(7)

   

9. Escreva u m a D T D p a r a v a l i d a r o s u b c o n j u n t o d e D A D O S d o a r q u i v o X M L c r i a d o n a q u e s t ã o 7 , a c i m a .

<!ELEMENT programa (cabecalho, dados)> <!ELEMENT cabeçalho (programa, descricao)> <!ELEMENT programa #PCDATA>

<!ELEMENT descricao #PCDATA>

<!ELEMENT dados (estado, ano, pessoas)> <!ELEMENT estado #PCDATA>

<!ELEMENT ano #PCDATA> <!ELEMENT pessoas #PCDATA>

Referências

Documentos relacionados

O nível de proficiência na língua inglesa será verificado por meio de um Teste de Inglês on-line (OPT), que será enviado individualmente por e-mail para cada

O presente estudo objetivou analisar as condições de saúde física dos praticantes de caminhada do município de Esperança – PB considerando os riscos de desenvolvimento de

É_Realizada n n (0,3) (0,n) Inscrição Nome RG Expedidor UF Data Média Tipo Nota Questões Número Área Sub-Área Avaliação 3 n Esquema ER para o banco de dados CONCURSO..

Marca Vendedor Veículo Ford João Carro Ford João Caminhão Ford Mário Caminhão Fiat Mário Carro Chevrolet Felipe Carro Chevrolet João Carro Chevrolet João

Membro_Faculdade (Matrícula: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato: data, Curso: string[30], professor: booleano, aluno: booleano). Membro

Carlos Gonçalo Teixeira Pereira Paula Carla Monteiro Aires Mafalda Gonçalves Coelho.. Gonçalo), Madalena, Cepelos e Gatão © Núcleo Data - Consultoria e Programação Informática,

Adult emergence (%) of five strains of Callosobruchus maculatus subjected to increasing levels of larval competition in seeds of two host species, cowpea and mung bean.. 2b).The

The input needed for the planning phase of field inventory and topographic data collection are: aerial photography, orthophotos and topographic maps at scale