Carlos Henrique M. da Silva
carloshenrique.85@globo.com
 O que é XML
 Comparação entre XML e
HTML
 Características do XML
 Definição conceitual do XML
 Padrões da estrutura ...
Extensible Markup Language (XML) é linguagem de marcação de
dados (meta-markup language) que provê um formato para
descrev...
Comparação entre XML e HTML
HTML e XML são primos. Eles derivam da mesma inspiração, o SGML.
Ambos identificam elementos e...
Características do XML
Representação estruturada dos dados
O XML provê um padrão que pode codificar o conteúdo, as
semânti...
Características do XML
Separação entre dados e apresentação
A mais importante característica do XML se resume em separar a...
Exemplo de aplicação Web em três níveis, a qual é flexível e permite a troca de dados entre mainframes e os clientes (desk...
Definição conceitual do XML
Estrutura do documento
Um documento XML é uma árvore rotulada onde um nó externo
consiste de:
...
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday...
Padrões da Estrutura do XML
O XML é baseado em padrões de tecnologia comprovadamente
otimizados para a Web.
Os padrões que...
 Extensible Stylesheet Language (XSL)- é atualmente um rascunho. O XSL
apresenta duas seções: a linguagem de transformaçã...
Principais Benefícios da Linguagem XML
O XML tem por objetivo trazer flexibilidade e poder às aplicações
Web.
Dentre os be...
Inserindo XML em Documentos HTML
Um documento XML não indica por si só como a informação deve ser
visualizada. Já o HTML é...
Os Cascade Style Sheets (CSSs) também podem ser usados para
dados XML, só que de estrutura mais simplificada, e são usuais...
Aplicações do XML
Dentre os vários exemplos que podem ser dados estão:
 Aplicações em XHTML (www.w3.org/TR/xhtml1)
 Apli...
Regras para Boa Formação de um Arquivo XML
 Todo documento XML, além da tag introdutória, deve ter um único
elemento (tag...
O Objeto XMLHttpRequest
Todos os browsers modernos (IE7+, Firefox, Chrome, Safari, and
Opera) têm embutido o objeto XMLHtt...
Analisador XML
Um Analisador XML converte um documento XML em um objeto
DOM XML - que pode ser manipulado com JavaScript.
...
EXERCÍCIOS
 Um catalogo de CDs contendo (Mínimo de 10 CDs):
 Título do álbum
 Artista
 Gravadora
 Preço
 Ano de lanç...
EXERCÍCIOS
 Monte um arquivo XML com as informações do seu
currículo. Ex.:
<curriculo>
<nome>Carlos Henrique Martins da S...
XSL - consiste em três partes:
1. XSLT - uma linguagem para transformar documentos XML
2. XPath - uma linguagem para naveg...
O XSL é formato de Templates e cada template possui duas partes:
 Pattern - Referência ao elemento
 Action - formato apl...
<?xml-stylesheet type="text/xsl" href="arquivo.xsl"?>
A primeira coisa a fazer para formatar um documento XML é incluir
um...
<?xml version="1.0" ?>
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">*
<BODY>
<TABLE BORDER="1" CELLPADDING="2">
<tr>
<td>...
A forma correta de declarar uma folha de estilo XSL de acordo com a
Recomendação W3C XSLT é:
<xsl:stylesheet version="1.0"...
Elemento <xsl:template>
Uma folha de estilo XSL consiste em um ou mais conjunto de regras
que são chamadas de modelos (tem...
Elemento <xsl:value-of>
O elemento <xsl:value-of> pode ser usado para extrair o valor de um
elemento XML e adicioná-lo par...
Elemento <xsl:for-each>
O elemento <xsl:for-each> pode ser usado para selecionar todos os
elementos XML de um determinado ...
Filtrando a saída
Nós também podemos filtrar a saída do arquivo XML, adicionando um
critério de seleção para o atributo do...
Elemento <xsl:sort>
O elemento <xsl:sort> é usado para classificar a saída.
Onde colocar as informações de classificação
P...
Elemento <xsl:if>
É usado para colocar um teste condicional contra o conteúdo do
arquivo XML.
<xsl:for-each select="catalo...
Elemento <xsl:choose>
É usado em conjunto com os elementos <xsl:when> e
<xsl:otherwise> para expressar múltiplos testes co...
EXERCÍCIOS
Criar um documento XSL para cada um dos
elementos mostrados anteriormente e
vinculá-los ao documento XML de cat...
É usado para navegar através de elementos e
atributos em um documento XML.
XPath é um elemento importante em no padrão
XSL...
O que é?
 XPath é uma sintaxe para definir partes de um documento XML
 XPath usa caminhos para definir elementos XML
 X...
Versões Xpath
XPath 1.0 - Recomendação da W3C em 16/11/1999.
XPath 2.0 - Recomendação da W3C em 23/01/2007.
Funções XPath ...
Em XPath, existem 7 tipos de nós:
1. Elemento
2. Atributo
3. Texto
4. Namespace
5. Instrução de processamento
6. Comentári...
Valores atômicos - São os nós sem filhos ou pais.
Exemplo:
ITENS
Os itens são valores atômicos ou nós.
RELAÇÃO DE NÓS
PAI ou MÃE
Cada elemento e atributo tem um pai.
No exemplo a seguir, o elemento BOOK é o PAI dos elementos ...
XPath Sintaxe
XPath usa expressões de caminho para selecionar nós ou
conjuntos de nós em um documento XML. O nó é
selecion...
Expressão Descrição
nodename Seleciona todos os nós com o nome de " nodename "
/ Seleciona a partir do nó raiz
// Selecion...
CAMINHO EXPRESSÃO RESULTADO
bookstore Seleciona todos os nós com o nome de “bookstore"
/bookstore
Seleciona a livraria ele...
PREDICADOS
Predicados são usados ​​para encontrar um nó
específico ou um nó que contém um valor
específico. Predicados são...
SELECIONANDO NÓS DESCONHECIDOS
XPath curingas podem ser usados ​​para selecionar elementos XML
desconhecidos.
CURINGA DESC...
SELEÇÃO DE VÁRIOS CAMINHOS
Ao usar o operador | em uma expressão XPath você pode selecionar
vários caminhos.
Na tabela aba...
EIXOS XPATH
Um eixo define um conjunto de nós em relação ao nó actual.
NOME DO EIXO RESULTADO
ancestor Seleciona todos os ...
EXPRESSÃO DE CAMINHO LOCAL
O caminho do local pode ser absoluto ou relativo. Um caminho local
absoluto começa com uma barr...
Cada passo é avaliado contra os nós do atual conjunto de nós.
Um passo consiste em:
 Um eixo (define a relação de árvore ...
EXEMPLO RESULTADO
child::book
Seleciona todos os nós de livros que são filhos do nó
atual
attribute::lang Seleciona o atri...
OPERADORES XPATH
Uma expressão XPath retorna um conjunto de nós, uma string, um
booleano, ou um número.
Abaixo está uma li...
OPERADOR DESCRIÇÃO EXEMPLO VALOR DE RETORNO
< Menor que price<9.80
verdadeiro se o preço é
9,00
falso se o preço é 9,80
<=...
Xquery nada mais é do que um SQL para XML, ou seja, foi
projetado para consultar dados XML e não apenas
arquivos XML, mas ...
XQuery 1.0 e XPath 2.0 compartilham o mesmo modelo de
dados e apoiam as mesmas funções e operadores. Se você
já estudou XP...
XQuery pode ser usado para:
 Extrair informações para usar em um Web Service
 Gerar relatórios resumidos
 Transformar d...
COMO SELECIONAR NÓS DE "books.xml"?
FUNÇÕES
A função do doc() é usado para abrir o arquivo "books.xml":
doc("books.xml")
E...
A Query acima irá extrair o seguinte:
<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<tit...
Expressões XQuery FLWOR
FLWOR é um acrônimo para "For, Let, Where, Order by, Return".
for $x in doc("books.xml")/bookstore...
Como selecionar nós de "books.xml" Com FLWOR
Olhe para a seguinte expressão de caminho:
doc("books.xml")/bookstore/book[pr...
Apresentar o resultado em uma lista HTML
Olhe para a seguinte expressão FLWOR XQuery:
for $x in doc("books.xml")/bookstore...
O resultado será:
<ul>
<li><title lang="en">Everyday Italian</title></li>
<li><title lang="en">Harry Potter</title></li>
<...
REGRAS BÁSICAS DE SINTAXE:
 XQuery é Case-sensitive.
 Elementos, atributos e variáveis ​​devem ser nomes XML
válidos.
 ...
Expressões XQuery condicionais
"If-Then-Else" expressões são permitidos em XQuery.
Veja o exemplo a seguir:
for $x in doc(...
COMPARAÇÕES XQUERY
No XQuery há duas formas de comparar valores.
1. Comparações gerais:! =, =, <, <=,>,> =
2. Comparações ...
Adicionando elementos e atributos para o Resultado
Como vimos no capítulo anterior, podemos incluir elementos e
atributos ...
A expressão XQuery anterior retorna os elementos do título da mesma
maneira como são descritos no documento de entrada.
Ag...
<html>
<body>
<h1>Bookstore</h1>
<ul>
<li>Everyday Italian. Category: COOKING</li>
<li>Harry Potter. Category: CHILDREN</l...
ADICIONAR ATRIBUTOS AOS ELEMENTOS HTML
Em seguida, nós queremos usar o atributo da categoria como um
atributo de classe na...
<html>
<body>
<h1>Bookstore</h1>
<ul>
<li class="COOKING">Everyday Italian</li>
<li class="CHILDREN">Harry Potter</li>
<li...
SELECIONANDO E FILTRANDO ELEMENTOS
Como vimos nos capítulos anteriores, estamos selecionando e
filtrando elementos com um ...
A CLÁUSULA FOR
A cláusula for liga uma variável para cada item retornado pela
expressão in. A cláusula de resultados em it...
A palavra-chave at pode ser utilizada para a contagem da iteração:
for $x at $i in doc("books.xml")/bookstore/book/title
r...
A CLÁUSULA LET
A cláusula let permite atribuições de
variáveis ​​e evita repetir a mesma expressão
muitas vezes. A cláusul...
XQUERY FUNÇÕES INTERNAS
O URI do namespace XQuery é:
http://www.w3.org/2005/02/xpath-functions
O prefixo padrão para o nam...
EXEMPLOS DE CHAMADAS DE FUNÇÃO
Uma chamada para uma função pode aparecer onde uma
expressão aparece. Veja os exemplos abai...
FUNÇÕES XQUERY DEFINIDAS PELO USUÁRIO
Se você não consegue encontrar a função XQuery que
você precisa, você pode escrever ...
NOTAS SOBRE FUNÇÕES DEFINIDAS PELO USUÁRIO:
 Use a palavra-chave declare function
 O nome da função deve ser prefixado
...
Aqui está um exemplo de uma questão que poderia se
resolver com XQuery:
"Selecione todos os registros de CD com um preço i...
Document Type Definition - DTD
Uma definição de tipo de documento (DTD) define os blocos de
construção legais de um docume...
Se o DTD é declarada dentro do arquivo XML, deve ser envolvido em
uma definição DOCTYPE com a seguinte sintaxe:
<!DOCTYPE ...
Se o DTD é declarado em um arquivo externo, ele deve ser envolto em uma
definição DOCTYPE com a seguinte sintaxe:
<!DOCTYP...
Por Que Usar um DTD?
Com um DTD, cada um de seus arquivos XML pode transportar uma
descrição do seu próprio formato.
Com u...
Criando um DTD
Ao criar um DTD, você precisa definir todos os elementos e atributos
que você terá nos documentos XML. Entã...
Os elementos são declarados da seguinte forma:
<!ELEMENT elementName ( elementParts ) >
Atributos são declarados como esta...
Elementos DTD
Em um DTD, elementos são declarados como !ELEMENT.
Declarando Elementos:
<!ELEMENT element-name category>
or...
Elementos com dados de caracter apenas analisados ​​são declarados com
#PCDATA entre parênteses:
<!ELEMENT element-name (#...
Elementos DTD
Declarando Apenas uma ocorrência de um elemento:
<!ELEMENT element-name (child-name)>
Exemplo:
<!ELEMENT not...
Elementos DTD
Declarando um ou outro conteúdo
Exemplo:
<!ELEMENT note (to,from,header,(message|body))>
Declarando conteúdo...
Atributos DTD
Uma declaração de atributo tem a seguinte sintaxe:
<!ATTLIST element-name attribute-name attribute-type defa...
Atributos DTD
Tipo Descrição
CDATA O valor é de dados de carácter
( en1 | en2 | ..) O valor deve ser um de uma lista
enume...
Elementos vs Atributos
Em XML, não há regras sobre quando usar atributos e quando usar elementos
filhos.
Atributos  HTML ...
Entidades DTD
Entidades são variáveis ​​utilizadas para definir atalhos para texto padrão ou
caracteres especiais.
• Refer...
Exemplos DTD
Programação TV
Artigo de Jornal
Catálogo de Produtos
WSDL
WSDL (Web Services Description Language) é uma linguagem baseada
em XML para descrever serviços Web e como acessá-los...
Um documento WSDL é apenas um documento XML simples. Ele
contém um conjunto de definições para descrever um serviço web.
U...
A estrutura principal de um documento WSDL parecido com esta:
<definitions>
<types>
data type definitions........
</types>...
Um documento WSDL pode também conter outros elementos, tais
como elementos de extensão, e um elemento de serviço, que torn...
Mensagens WSDL
O elemento <mesage> define os elementos de dados de uma
operação.
Cada mensagem pode consistir de uma ou ma...
Tipos WSDL
O elemento <types> define os tipos de dados que são utilizados
pelo web service.
WSDL usa sintaxe XML Schema pa...
Exemplo WSDL
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermRespons...
WSDL - O Elemento <portType>
Tipos de operação
Type Definition
One-way
A operação pode receber uma mensagem, mas
não vai r...
Operação One-Way
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>...
Operação Request-Response
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="g...
WSDL Bindings
Vinculando a SOAP
Um exemplo de operação de resquest-response:
<message name="getTermRequest">
<part name="t...
O elemento binding tem dois atributos – type e name.
O atributo name (você pode usar qualquer nome que você quiser)
define...
WSDL e UDDI
Universal Description, Discovery and Integration (UDDI) é um serviço
de diretório, onde as empresas podem se r...
O que é UDDI baseia?
UDDI utiliza World Wide Web Consortium (W3C) e Internet Engineering
Task Force (IETF) padrões de Inte...
SOAP (Simple Object Access Protocol)
É um protocolo baseado em XML para permitir troca de informações
de aplicativos via H...
Blocos de Construção de SOAP
Uma mensagem SOAP é um documento XML comum contendo os
seguintes elementos:
 Envelope - que ...
Regras de sintaxe
 Uma mensagem SOAP DEVE ser codificado usando XML
 Uma mensagem SOAP DEVE usar o namespace envelope SO...
Esqueleto mensagem SOAP
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:enc...
O elemento Header
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingS...
O elemento Body
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingSty...
O elemento Fault
Usado para indicar as mensagens de erro.
SubElementos Descrição
<faultcode> Um código de identificação da...
Erro Descrição
VersionMismatch
Encontrou um namespace inválido para o elemento
envelope
MustUnderstand
Um elemento filho i...
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w...
Comunicação HTTP SOAP
O protocolo HTTP se comunica através de TCP/IP. Um cliente se
conecta a um servidor HTTP usando TCP....
HTTP + XML = SOAP
Uma solicitação SOAP pode ser um HTTP POST ou uma solicitação HTTP GET.
A solicitação HTTP POST especifi...
Um SOAP Request:
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Le...
Um SOAP Response:
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0...
Web Services
Web Services pode converter seu aplicativo em um aplicativo Web, que
pode publicar sua função ou mensagem par...
Por Web Services?
Alguns anos atrás, Web services não era rápido o suficiente para ser
interessante.
A interoperabilidade ...
Web Services têm dois tipos de usos
Aplicação-componentes reutilizável
Web services podem oferecer aplicações-componentes ...
Elementos Web Services
EXEMPLO
Qualquer aplicação pode ter um componente de Web Service.
Web services podem ser criados independentemente da ling...
 Formado em Análise de Sistemas
 Pós-Graduado em Auditoria em T.I.
 Gerente de TI da CLIOC – Coleção de Leishmania do
I...
eXtensible Markup Language (XML)
Próximos SlideShares
Carregando em…5
×

eXtensible Markup Language (XML)

741 visualizações

Publicada em

eXtensible Markup Language (XML)

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

eXtensible Markup Language (XML)

  1. 1. Carlos Henrique M. da Silva carloshenrique.85@globo.com
  2. 2.  O que é XML  Comparação entre XML e HTML  Características do XML  Definição conceitual do XML  Padrões da estrutura do XML  Principais benefícios da linguagem XML  Inserindo XML em documentos HTML  Aplicações do XML Índice
  3. 3. Extensible Markup Language (XML) é linguagem de marcação de dados (meta-markup language) que provê um formato para descrever dados estruturados. O XML permite a definição de um número infinito de tags. Enquanto no HTML, se as tags podem ser usadas para definir a formatação de caracteres e parágrafos, o XML provê um sistema para criar tags para dados estruturados. Um elemento XML pode ter dados declarados como sendo preços de venda, taxas de preço, um título de livro, a quantidade de chuva, ou qualquer outro tipo de elemento de dado. O Que é XML
  4. 4. Comparação entre XML e HTML HTML e XML são primos. Eles derivam da mesma inspiração, o SGML. Ambos identificam elementos em uma página e ambos utilizam sintaxes similares. Se você é familiar com HTML, também o será com o XML. A grande diferença entre HTML e XML é que o HTML descreve a aparência e a ações em uma página na rede enquanto o XML não descreve nem aparência nem ações, mas sim o que cada trecho de dados é ou representa! Em outras palavras, o XML descreve o conteúdo do documento!
  5. 5. Características do XML Representação estruturada dos dados O XML provê um padrão que pode codificar o conteúdo, as semânticas e as esquematizações para uma grande variedade de aplicações desde simples até as mais complexas, dentre elas:  Simples documento.  Registro estruturado tal como uma ordem de compra de produtos.  Objeto com métodos e dados como objetos Java ou controles ActiveX.  Registro de dados.  Apresentação gráfica, como interface de aplicações de usuário.  Entidades e tipos de esquema padrões.  Todos os links entre informações e pessoas na web.
  6. 6. Características do XML Separação entre dados e apresentação A mais importante característica do XML se resume em separar a interface com o usuário (apresentação) dos dados estruturados. O HTML especifica como o documento deve ser apresentado na tela por um navegador. Já o XML define o conteúdo do documento. Por exemplo, em HTML são utilizadas tags para definir tamanho e cor de fonte, assim como formatação de parágrafo. No XML você utiliza as tags para descrever os dados, como exemplo tags de assunto, título, autor, conteúdo, referências, datas, etc... O XML ainda conta com recursos tais como folhas de estilo definidas com Extensible Style Language (XSL) e Cascading Style Sheets (CSS) para a apresentação de dados em um navegador.
  7. 7. Exemplo de aplicação Web em três níveis, a qual é flexível e permite a troca de dados entre mainframes e os clientes (desktops).
  8. 8. Definição conceitual do XML Estrutura do documento Um documento XML é uma árvore rotulada onde um nó externo consiste de:  Dados de caracteres (uma sequência de texto)  Instruções de processamento (anotações para os processadores), tipicamente no cabeçalho do documento  Um comentário (nunca com semântica acompanhando)  Uma declaração de entidade (simples macros)  Nós DTD (Document Type Declaration) Um nó interno é um elemento, o qual é rotulado com:  Um nome ou um conjunto de atributos, cada qual consistindo de um nome e um valor. Normalmente, comentários, declarações de entidades e informações DTD não são explicitamente representadas na árvore.
  9. 9. <root> <child> <subchild>.....</subchild> </child> </root> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> </bookstore>
  10. 10. Padrões da Estrutura do XML O XML é baseado em padrões de tecnologia comprovadamente otimizados para a Web. Os padrões que compõem o XML são definidos pelo W3C (World Wide Web Consortium) e são os seguintes:  Extensible Markup Language (XML)  XML Namespaces - é também uma Recomendação, a qual descreve a sintaxe de namespace, ou espaço de nomes, e que serve para criar prefixos para os nomes de tags.  Document Object Model (DOM) Level 1 - é uma Recomendação que provê formas de acesso aos dados estruturados utilizando scripts, permitindo aos desenvolvedores interagir e computar tais dados consistentemente.
  11. 11.  Extensible Stylesheet Language (XSL)- é atualmente um rascunho. O XSL apresenta duas seções: a linguagem de transformação e a formatação de objetos. A linguagem de transformação pode ser usada para transformar documentos XML em algo agradável para ser visto, assim como transformar para documentos HTML, e pode ser usada independentemente da segunda seção (formatação de objetos).  XML Linking Language (XLL) - e XML Pointer Language (XPointer) - são também rascunhos. O XLL é uma linguagem de construção de links que é similar aos links HTML, sendo que é mais poderosa, porque os links podem ser multidirecionais, e podem existir a nível de objetos, e não somente a nível de página. Os esquemas modelados para XML descritos pelo W3C em XML- Data Note - e Document Content Description for XML (DCD) - estão ainda sendo desenvolvidos (consulta: XML- Data Working Group).
  12. 12. Principais Benefícios da Linguagem XML O XML tem por objetivo trazer flexibilidade e poder às aplicações Web. Dentre os benefícios para desenvolvedores e usuários temos:  Buscas mais eficientes;  Desenvolvimento de aplicações Web mais flexíveis. Isso inclui: I. Integração de dados de fontes completamente diferentes, de múltiplas aplicações; II. Computação e manipulação local dos dados; III. Múltiplas formas de visualização e IV. Atualização granulares do conteúdo.  Distribuição dos dados via rede de forma mais comprimida e escalável.  Padrões abertos.
  13. 13. Inserindo XML em Documentos HTML Um documento XML não indica por si só como a informação deve ser visualizada. Já o HTML é uma linguagem ótima para a apresentação de dados para o usuário final. Os mecanismos de ligação de dados e folhas de estilos podem ser usados para organizar os dados XML em uma apresentação visual, e para adicionar interatividade. O XSL (Extensible Stylesheet Language) pode adicionar poderes ainda maiores à esse processo. Uma folha de estilos XSL contém instruções de como retirar informação de um documento XML e transformá-la para outro formato, como o HTML. Essa transformação é feita de forma declarativa, e não via scripts.
  14. 14. Os Cascade Style Sheets (CSSs) também podem ser usados para dados XML, só que de estrutura mais simplificada, e são usuais em tais situações. Entretanto, os CSSs não provém uma estrutura de apresentação que se difere da estrutura da fonte de dados. Com o XSL, é possível gerar estruturas de apresentação (em HTML, por exemplo) que são bem diferentes das estruturas de dados originais dos documentos XML, como mostrado a seguir. Inserindo XML em Documentos HTML
  15. 15. Aplicações do XML Dentre os vários exemplos que podem ser dados estão:  Aplicações em XHTML (www.w3.org/TR/xhtml1)  Aplicações em CML (Chemical Markup Language, www.xml- cml.org)  Aplicações em previsões de tempo (Weather Observation Markup Language)  Aplicações nas descrições de conteúdo matemático com MathML (Math Markup Language) - http://www.w3.org/pub/WWW/TR/REC- MathML/.  Aplicações de voz interativas (Extensible Phone Markup Language - XPML) Uma lista mais completa de aplicações pode ser encontrada em www.oasis-open.org/cover/xml.html#applications
  16. 16. Regras para Boa Formação de um Arquivo XML  Todo documento XML, além da tag introdutória, deve ter um único elemento (tag) que sirva como raiz para todos os demais elementos do documento;  XML é case sensitive, portanto difere letras maiúsculas e minúsculas, devendo tomar cuidado com o uso de CamelCases.  Todo elemento XML deve ser iniciado e fechado, exceto o que define a versão do XML usada e outras definições de tag única, exemplo <system opera="ligado" onde="aqui" />.  Comentários em XML são iguais ao HTML (<!--comentário-->).
  17. 17. O Objeto XMLHttpRequest Todos os browsers modernos (IE7+, Firefox, Chrome, Safari, and Opera) têm embutido o objeto XMLHttpRequest. Sintaxe para criar um objeto XMLHttpRequest: xmlhttp=new XMLHttpRequest(); Versões antigas do of Internet Explorer (IE5 and IE6) usam um objeto ActiveX: xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  18. 18. Analisador XML Um Analisador XML converte um documento XML em um objeto DOM XML - que pode ser manipulado com JavaScript. O fragmento de código a seguir analisa um documento XML em um objeto XML DOM: if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","books.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML;
  19. 19. EXERCÍCIOS  Um catalogo de CDs contendo (Mínimo de 10 CDs):  Título do álbum  Artista  Gravadora  Preço  Ano de lançamento  Editar o arquivo XML acima adicionado categorias aos CDs usando elementos com atributos Dica: Caracteres portugueses <?xml version="1.0" encoding="ISO-8859-1" ?>
  20. 20. EXERCÍCIOS  Monte um arquivo XML com as informações do seu currículo. Ex.: <curriculo> <nome>Carlos Henrique Martins da Silva</nome> <telefone>2197978445</telefone> <email>carloshenrique.85@globo.com</email> . . . </curriculo>
  21. 21. XSL - consiste em três partes: 1. XSLT - uma linguagem para transformar documentos XML 2. XPath - uma linguagem para navegar em documentos XML 3. XSL-FO - uma linguagem para formatar documentos XML A linguagem de transformação pode ser usada para transformar documentos XML em algo agradável para ser visto, assim como transformar para documentos HTML, e pode ser usada independentemente da segunda seção (formatação de objetos). Esquematizando temos:  XML - Informação (dados)  XSL , CSS - Apresentação ( XML + XSL = HTML )
  22. 22. O XSL é formato de Templates e cada template possui duas partes:  Pattern - Referência ao elemento  Action - formato aplicado ao elemento NOME PORTUGUES MATEMATICA CIÊNCIAS JANICE 7 8 6 JEFFERSON 5 8 7 Formatando um documento XML com XSL. Vamos mostrar como formatar o documento boletim.xml e exibir os dados no formato de um arquivo HTML , uma tabela onde devemos ter:
  23. 23. <?xml-stylesheet type="text/xsl" href="arquivo.xsl"?> A primeira coisa a fazer para formatar um documento XML é incluir uma linha no documento XML a ser formatado que indique o arquivo XSL que irá formatar os dados que serão exibidos no Navegador. A sintaxe da declaração a ser incluída é: <?xml-stylesheet type="text/xsl" href="boletim.xsl"?> <boletim> <aluno> <nome>JANICE</nome> <portugues>7</portugues> <matematica>8</matematica> <ciencias>6</ciencias> </aluno> . . . </boletim>
  24. 24. <?xml version="1.0" ?> <HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">* <BODY> <TABLE BORDER="1" CELLPADDING="2"> <tr> <td>nome</td> <td>portugues</td> <td>matematica</td> <td>ciencias</td> </tr> <xsl:for-each select="boletim/aluno"> <TR> <TD><xsl:value-of select="nome"/></TD> <TD><xsl:value-of select="portugues"/></TD> <TD><xsl:value-of select="matematica"/></TD> <TD><xsl:value-of select="ciencias"/></TD> </TR> </xsl:for-each> </TABLE> </BODY> </HTML> * Esta é a declaração XSL do documento sendo obrigatória.
  25. 25. A forma correta de declarar uma folha de estilo XSL de acordo com a Recomendação W3C XSLT é: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> OU <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> Para ter acesso aos elementos, atributos e características XSLT deve ser declarado o namespace XSLT no topo do documento. O xmlns:xsl ="http://www.w3.org/1999/XSL/Transform" aponta para o namespace oficial XSLT W3C. Se você usar este namespace, você deve também incluir o atributo de versão = "1.0".
  26. 26. Elemento <xsl:template> Uma folha de estilo XSL consiste em um ou mais conjunto de regras que são chamadas de modelos (templates). Um modelo contém regras para aplicar quando um nó especificado é correspondido. O atributo match é utilizado para associar um modelo com um elemento XML. O atributo de partida também pode ser usado para definir um modelo para todo o documento XML. O valor do atributo de correspondência é uma expressão XPath (ex.: match = "/" define o documento inteiro). <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">
  27. 27. Elemento <xsl:value-of> O elemento <xsl:value-of> pode ser usado para extrair o valor de um elemento XML e adicioná-lo para o fluxo de saída da transformação: <tr> <td><xsl:value-of select="catalog/cd/title"/></td> <td><xsl:value-of select="catalog/cd/artist"/></td> </tr> O atributo select no exemplo acima, contém uma expressão XPath. Uma expressão XPath funciona como navegar em um sistema de arquivos; uma barra (/) seleciona subdiretórios.
  28. 28. Elemento <xsl:for-each> O elemento <xsl:for-each> pode ser usado para selecionar todos os elementos XML de um determinado conjunto de nós: <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each>
  29. 29. Filtrando a saída Nós também podemos filtrar a saída do arquivo XML, adicionando um critério de seleção para o atributo do elemento <xsl:for-each>. <xsl:for-each select="catalog/cd[artist='Bob Dylan']"> Elemento <xsl:for-each> Os operadores de filtro são: = (Igual) ! = (Não igual) < (Menor) > (Maior)
  30. 30. Elemento <xsl:sort> O elemento <xsl:sort> é usado para classificar a saída. Onde colocar as informações de classificação Para ordenar a saída, basta adicionar um elemento <xsl:sort> dentro do elemento <xsl:for-each> no arquivo XSL: <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each>
  31. 31. Elemento <xsl:if> É usado para colocar um teste condicional contra o conteúdo do arquivo XML. <xsl:for-each select="catalog/cd"> <xsl:if test="price > 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:if> </xsl:for-each> O código acima irá apenas produzir os elementos do título e artista dos CDs que tem um preço que é superior a 10.
  32. 32. Elemento <xsl:choose> É usado em conjunto com os elementos <xsl:when> e <xsl:otherwise> para expressar múltiplos testes condicionais. <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor=" #FFD700 "> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> O código acima irá adicionar uma cor de fundo dourada para a coluna "Artista" quando o preço do CD for maior que 10.
  33. 33. EXERCÍCIOS Criar um documento XSL para cada um dos elementos mostrados anteriormente e vinculá-los ao documento XML de catálogo de CDs Criar um documento XSL aplicando os elementos cabíveis ao documento XML de Curriculo
  34. 34. É usado para navegar através de elementos e atributos em um documento XML. XPath é um elemento importante em no padrão XSLT da W3C. XQuery e XPointer são ambos construídos em expressões XPath.
  35. 35. O que é?  XPath é uma sintaxe para definir partes de um documento XML  XPath usa caminhos para definir elementos XML  XPath define uma biblioteca de funções padrão  XPath é o elemento principal em XSLT  XPath não é escrito em XML  XPath é um padrão W3C XPath usa expressões de caminho para identificar nós em um documento XML. Essas expressões de caminho se parecem muito com as expressões que você vê quando você trabalha num sistema de arquivos de um computador.
  36. 36. Versões Xpath XPath 1.0 - Recomendação da W3C em 16/11/1999. XPath 2.0 - Recomendação da W3C em 23/01/2007. Funções XPath padrão XPath inclui mais de 100 funções embutidas. Há funções para cadeia de valores, valores numéricos de data e hora, nós de comparação e manipulação QName, manipulação de seqüência, valores booleanos, e muito mais. Veja mais em: Funções XPath
  37. 37. Em XPath, existem 7 tipos de nós: 1. Elemento 2. Atributo 3. Texto 4. Namespace 5. Instrução de processamento 6. Comentário 7. Documentos Documentos XML são tratados como árvores de nós. O elemento mais alto da árvore é chamado de elemento raiz (root).
  38. 38. Valores atômicos - São os nós sem filhos ou pais. Exemplo: ITENS Os itens são valores atômicos ou nós.
  39. 39. RELAÇÃO DE NÓS PAI ou MÃE Cada elemento e atributo tem um pai. No exemplo a seguir, o elemento BOOK é o PAI dos elementos TITLE, AUTHOR, YEAR, e PRICE: FILHOS ????? IRMÃOS ????? AVÓS ????? DESCENDENTES ?????
  40. 40. XPath Sintaxe XPath usa expressões de caminho para selecionar nós ou conjuntos de nós em um documento XML. O nó é selecionado através de um caminho ou etapas.
  41. 41. Expressão Descrição nodename Seleciona todos os nós com o nome de " nodename " / Seleciona a partir do nó raiz // Seleciona nós no documento a partir do nó atual que correspondam a seleção, não importa onde eles estão . Seleciona o nó atual .. Seleciona o pai do nó atual @ Seleciona atributos NÓS DE SELEÇÃO As expressões de path (caminho) mais úteis estão listadas abaixo:
  42. 42. CAMINHO EXPRESSÃO RESULTADO bookstore Seleciona todos os nós com o nome de “bookstore" /bookstore Seleciona a livraria elemento raiz. Nota: Se o caminho começa com uma barra (/) ele representa sempre um caminho absoluto para um elemento! bookstore/book Seleciona todos os elementos do livro que são filhos de livraria //book Seleciona todos os elementos do livro, não importa onde eles estão no documento Bookstore//book Seleciona todos os elementos do livro que são descendentes de elemento de livraria, não importa onde eles estão sob o elemento livraria //@lang Seleciona todos os atributos que são nomeados lang Na tabela abaixo listamos algumas expressões de caminho e seus resultados:
  43. 43. PREDICADOS Predicados são usados ​​para encontrar um nó específico ou um nó que contém um valor específico. Predicados são sempre incorporados em colchetes. TABELA
  44. 44. SELECIONANDO NÓS DESCONHECIDOS XPath curingas podem ser usados ​​para selecionar elementos XML desconhecidos. CURINGA DESCRIÇÃO * Corresponde a qualquer nó de elemento @ * Corresponde a qualquer nó de atributo node() Corresponde a qualquer nó de qualquer tipo Na tabela abaixo listamos algumas expressões de caminho e seus resultados: EXPRESSÃO RESULTADO /bookstore/* Seleciona todos os nós filhos do elemento livraria //* Seleciona todos os elementos no documento //title[@*] Seleciona todos os elementos do título que possuem qualquer atributo
  45. 45. SELEÇÃO DE VÁRIOS CAMINHOS Ao usar o operador | em uma expressão XPath você pode selecionar vários caminhos. Na tabela abaixo listamos algumas expressões de caminho eo resultado das expressões: EXPRESSÃO RESULTADO //book/title | //book/price Seleciona todos os elementos title E price de todos os elementos do livro //title | //price Seleciona todos os elementos title E de price no documento /bookstore/book/title | //price Seleciona todos os elementos título do elemento livro, do elemento livraria. E todos os elementos de preço no documento
  46. 46. EIXOS XPATH Um eixo define um conjunto de nós em relação ao nó actual. NOME DO EIXO RESULTADO ancestor Seleciona todos os ancentrais ​​(avós, pais, etc) do nó atual ancestor-or-self Seleciona todos os ancentrais ​​(avós, pais, etc) do nó atual e o nó atual si attribute Seleciona todos os atributos do nó atual child Seleciona todos os filhos do nó atual descendant Seleciona todos os descendentes (filhos, netos, etc) do nó atual descendant-or-self Seleciona todos os descendentes (filhos, netos, etc) do nó atual e o nó atual si following Seleciona tudo no documento depois da tag de fechamento do nó atual following-sibling Seleciona todos os irmãos depois do nó atual namespace Seleciona todos os nós namespace do nó atual parent Seleciona o pai do nó atual preceding Seleciona todos os nós que aparecem antes do nó atual no documento, exceto antepassados, nós de atributo e nós namespace preceding-sibling Seleciona todos os irmãos antes do nó atual self Seleciona o nó atual
  47. 47. EXPRESSÃO DE CAMINHO LOCAL O caminho do local pode ser absoluto ou relativo. Um caminho local absoluto começa com uma barra (/) e um caminho local relativo não. Em ambos os casos, o caminho do local consiste em uma ou mais etapas, cada um separado por uma barra:
  48. 48. Cada passo é avaliado contra os nós do atual conjunto de nós. Um passo consiste em:  Um eixo (define a relação de árvore entre os nós selecionados e o nó atual)  Um nó de teste (identifica um nó dentro de um eixo)  Zero ou mais predicados (para refinar ainda mais o selecionado conjunto de nós) A sintaxe para um nível de localização é:
  49. 49. EXEMPLO RESULTADO child::book Seleciona todos os nós de livros que são filhos do nó atual attribute::lang Seleciona o atributo lang do nó atual child::* Seleciona todos os filhos do elemento do nó atual attribute::* Seleciona todos os atributos do nó atual child::text() Seleciona todas as crianças de texto nó do nó atual child::node() Seleciona todos os filhos do nó atual descendant::book Seleciona todos os descendentes de livros do nó atual ancestor::book Seleciona todos os ancestrais do livro do nó atual ancestor-or-self::book Seleciona todos os ancestrais do livro do nó atual - e os atuais, bem como se é um nó de livro child::*/child::price Seleciona todos os preços netos do nó atual
  50. 50. OPERADORES XPATH Uma expressão XPath retorna um conjunto de nós, uma string, um booleano, ou um número. Abaixo está uma lista dos operadores que podem ser utilizados nas expressões XPath: OPERADOR DESCRIÇÃO EXEMPLO VALOR DE RETORNO | Calcula dois conjuntos de nós //book | //cd Retorna um conjunto de nós com todos os elementos livro e cd + Adição 6 + 4 10 - Subtração 6 - 4 2 * Multiplicação 6 * 4 24 div Divisão 8 div 4 2 = Igual price=9.80 verdadeiro se o preço é 9,80 falso se o preço é 9,90 ! = Não igual price!=9.80 verdadeiro se o preço é 9,90 falso se o preço é 9,80
  51. 51. OPERADOR DESCRIÇÃO EXEMPLO VALOR DE RETORNO < Menor que price<9.80 verdadeiro se o preço é 9,00 falso se o preço é 9,80 <= Inferior ou igual a price<=9.80 verdadeiro se o preço é 9,00 falso se o preço é 9,90 > Maior do que price>9.80 verdadeiro se o preço é 9,90 falso se o preço é 9,80 > = Maior do que ou igual a price>=9.80 verdadeiro se o preço é 9,90 falso se o preço é 9,70 or Ou price=9.80 or price=9.70 verdadeiro se o preço é 9,80 falso se o preço é 9,50 and E price>9.00 and price<9.90 verdadeiro se o preço é 9,80 falso se o preço é 8,50 mod Módulo (resto da divisão) 5 mod 2 1
  52. 52. Xquery nada mais é do que um SQL para XML, ou seja, foi projetado para consultar dados XML e não apenas arquivos XML, mas qualquer coisa que possa aparecer como XML, incluindo bases de dados.  XQuery é A linguagem para consultar dados XML  XQuery para XML é como SQL para bancos de dados  XQuery é construído sobre expressões XPath  XQuery é suportado pelos principais bancos de dados  XQuery é uma recomendação da W3C
  53. 53. XQuery 1.0 e XPath 2.0 compartilham o mesmo modelo de dados e apoiam as mesmas funções e operadores. Se você já estudou XPath você não terá problemas com a compreensão XQuery.
  54. 54. XQuery pode ser usado para:  Extrair informações para usar em um Web Service  Gerar relatórios resumidos  Transformar dados XML para XHTML  Pesquisar documentos da Web para obter informações relevantes XQuery é uma recomendação da W3C XQuery é compatível com diversos padrões W3C, tais como XML, Namespaces, XSLT, XPath e XML Schema. XQuery 1.0 tornou-se uma recomendação da W3C 23 janeiro de 2007.
  55. 55. COMO SELECIONAR NÓS DE "books.xml"? FUNÇÕES A função do doc() é usado para abrir o arquivo "books.xml": doc("books.xml") EXPRESSÕES DE CAMINHO (XPath) XQuery usa Xpath para navegar através de elementos de um documento XML. A expressão de caminho a seguir é usado para selecionar todos os elementos do título no arquivo "books.xml": doc("books.xml")/bookstore/book/title
  56. 56. A Query acima irá extrair o seguinte: <title lang="en">Everyday Italian</title> <title lang="en">Harry Potter</title> <title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title> Predicados doc("books.xml")/bookstore/book[price<30] Resultado <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>
  57. 57. Expressões XQuery FLWOR FLWOR é um acrônimo para "For, Let, Where, Order by, Return". for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title A cláusula For seleciona todos os elementos do livro sob o elemento livraria em uma variável chamada $x. A cláusula Where seleciona apenas os elementos do livro com um elemento de preço com um valor maior do que 30. A cláusula Order by define a ordem de classificação. Vai ser tipo pelo elemento título. A cláusula Return especifica o que deve ser devolvido. Aqui ele retorna os elementos do título.
  58. 58. Como selecionar nós de "books.xml" Com FLWOR Olhe para a seguinte expressão de caminho: doc("books.xml")/bookstore/book[price>30]/title A expressão acima irá selecionar todos os elementos do título sob os elementos do livro que estão sob o elemento livraria que tem um elemento preço com um valor que é maior do que 30. A expressão FLWOR seguinte irá selecionar exatamente a mesma coisa: for $x in doc("books.xml")/bookstore/book where $x/price>30 return $x/title O resultado será: <title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>
  59. 59. Apresentar o resultado em uma lista HTML Olhe para a seguinte expressão FLWOR XQuery: for $x in doc("books.xml")/bookstore/book/title order by $x return $x A expressão acima irá selecionar todos os elementos do título e devolve os elementos do título em ordem alfabética. Agora queremos listar todos os livros-títulos em nossa livraria em uma lista HTML. Nós adicionamos as tags <ul> e <li> à expressão FLWOR: <ul> { for $x in doc("books.xml")/bookstore/book/title order by $x return <li>{$x}</li> } </ul>
  60. 60. O resultado será: <ul> <li><title lang="en">Everyday Italian</title></li> <li><title lang="en">Harry Potter</title></li> <li><title lang="en">Learning XML</title></li> <li><title lang="en">XQuery Kick Start</title></li> </ul> Agora, queremos eliminar o elemento título, e mostrar apenas os dados dentro do elemento de título: <ul> { for $x in doc("books.xml")/bookstore/book/title order by $x return <li>{data($x)}</li> } </ul> Resultado: <ul> <li>Everyday Italian</li> <li>Harry Potter</li> <li>Learning XML</li> <li>XQuery Kick Start</li> </ul>
  61. 61. REGRAS BÁSICAS DE SINTAXE:  XQuery é Case-sensitive.  Elementos, atributos e variáveis ​​devem ser nomes XML válidos.  Uma string pode estar entre aspas simples ou duplas.  Uma variável é definida com um $ seguido por um nome.  Comentários são delimitados por (: Comentário XQuery :)
  62. 62. Expressões XQuery condicionais "If-Then-Else" expressões são permitidos em XQuery. Veja o exemplo a seguir: for $x in doc("books.xml")/bookstore/book return if ($x/@category="CHILDREN") then <child>{data($x/title)}</child> else <adult>{data($x/title)}</adult> Notas sobre o "if-then-else" sintaxe: parênteses a expressão se são necessárias. mais é necessário, mas pode ser apenas mais (). O resultado do exemplo acima será: <adult>Everyday Italian</adult> <child>Harry Potter</child> <adult>Learning XML</adult> <adult>XQuery Kick Start</adult>
  63. 63. COMPARAÇÕES XQUERY No XQuery há duas formas de comparar valores. 1. Comparações gerais:! =, =, <, <=,>,> = 2. Comparações Valor: eq, ne, lt, le, gt, ge A diferença entre os dois métodos de comparação são mostrados abaixo. A expressão abaixo retorna true se todos os atributos q tiverem um valor superior a 10: $bookstore//book/@q > 10 A expressão seguinte devolve verdadeiro se houver apenas um atributo q retornado pela expressão, e o seu valor for superior a 10. Se mais de um q é devolvido, ocorre um erro: $bookstore//book/@q gt 10
  64. 64. Adicionando elementos e atributos para o Resultado Como vimos no capítulo anterior, podemos incluir elementos e atributos do documento de entrada ("books.xml) no resultado: for $x in doc("books.xml")/bookstore/book/title order by $x return $x A expressão XQuery acima inclue tanto o elemento título e quanto o atributo lang no resultado: <title lang="en">Everyday Italian</title> <title lang="en">Harry Potter</title> <title lang="en">Learning XML</title> <title lang="en">XQuery Kick Start</title>
  65. 65. A expressão XQuery anterior retorna os elementos do título da mesma maneira como são descritos no documento de entrada. Agora, queremos adicionar alguns elementos HTML para o resultado. Vamos colocar o resultado em uma lista HTML - juntamente com um texto: <html> <body> <h1>Bookstore</h1> <ul> { for $x in doc("books.xml")/bookstore/book order by $x/title return <li>{data($x/title)}. Category: {data($x/@category)}</li> } </ul> </body> </html>
  66. 66. <html> <body> <h1>Bookstore</h1> <ul> <li>Everyday Italian. Category: COOKING</li> <li>Harry Potter. Category: CHILDREN</li> <li>Learning XML. Category: WEB</li> <li>XQuery Kick Start. Category: WEB</li> </ul> </body> </html>
  67. 67. ADICIONAR ATRIBUTOS AOS ELEMENTOS HTML Em seguida, nós queremos usar o atributo da categoria como um atributo de classe na lista HTML: <html> <body> <h1>Bookstore</h1> <ul> { for $x in doc("books.xml")/bookstore/book order by $x/title return <li class="{data($x/@category)}">{data($x/title)}</li> } </ul> </body> </html>
  68. 68. <html> <body> <h1>Bookstore</h1> <ul> <li class="COOKING">Everyday Italian</li> <li class="CHILDREN">Harry Potter</li> <li class="WEB">Learning XML</li> <li class="WEB">XQuery Kick Start</li> </ul> </body> </html>
  69. 69. SELECIONANDO E FILTRANDO ELEMENTOS Como vimos nos capítulos anteriores, estamos selecionando e filtrando elementos com um caminho de expressão ou com uma expressão FLWOR. Olhe para a expressão FLWOR seguinte: for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title for - liga uma variável a cada item retornado pela expressão em let where - especifica um critério Order by - especifica a ordem de classificação do resultado return - especifica o que retornar o resultado Opcionais
  70. 70. A CLÁUSULA FOR A cláusula for liga uma variável para cada item retornado pela expressão in. A cláusula de resultados em iteração. Pode haver múltiplas cláusulas for na mesma expressão FLWOR. Para loop de um número específico de vezes em uma cláusula for, você pode usar a palavra-chave to : for $x in (1 to 5) return <test>{$x}</test> Resultado: <test>1</test> <test>2</test> <test>3</test> <test>4</test> <test>5</test>
  71. 71. A palavra-chave at pode ser utilizada para a contagem da iteração: for $x at $i in doc("books.xml")/bookstore/book/title return <book>{$i}. {data($x)}</book> Resultado: <book>1. Everyday Italian</book> <book>2. Harry Potter</book> <book>3. XQuery Kick Start</book> <book>4. Learning XML</book> Também é permitida mais de uma expressão in em cada cláusula for. Use vírgula para separar cada na expressão: for $x in (10,20), $y in (100,200) return <test>x={$x} and y={$y}</test> Resultado: <test>x=10 and y=100</test> <test>x=10 and y=200</test> <test>x=20 and y=100</test> <test>x=20 and y=200</test>
  72. 72. A CLÁUSULA LET A cláusula let permite atribuições de variáveis ​​e evita repetir a mesma expressão muitas vezes. A cláusula let não resulta em iteração. let $x := (1 to 5) return <test>{$x}</test> Resultado: <test>1 2 3 4 5</test>
  73. 73. XQUERY FUNÇÕES INTERNAS O URI do namespace XQuery é: http://www.w3.org/2005/02/xpath-functions O prefixo padrão para o namespace função é fn:. Dica: As funções são muitas vezes chamada com o fn: prefixo, como fn: string (). No entanto, desde fn: é o prefixo padrão do namespace, os nomes das funções não precisam ser prefixado quando chamado.
  74. 74. EXEMPLOS DE CHAMADAS DE FUNÇÃO Uma chamada para uma função pode aparecer onde uma expressão aparece. Veja os exemplos abaixo: Exemplo 1: Em um elemento <name>{upper-case($booktitle)}</name> Exemplo 2: o predicado de um caminho de expressão doc("books.xml")/bookstore/book[substring(title,1,5)='H arry'] Exemplo 3: Em uma cláusula let let $name := (substring($booktitle,1,4))
  75. 75. FUNÇÕES XQUERY DEFINIDAS PELO USUÁRIO Se você não consegue encontrar a função XQuery que você precisa, você pode escrever a sua própria. Funções definidas pelo usuário podem ser definidas na consulta ou em uma biblioteca separada. Sintaxe declare function prefix:function_name($parameter AS datatype) AS returnDatatype { ...function code here... }
  76. 76. NOTAS SOBRE FUNÇÕES DEFINIDAS PELO USUÁRIO:  Use a palavra-chave declare function  O nome da função deve ser prefixado  O tipo de dados dos parâmetros são basicamente o mesmo que os definidos em XML Schema  O corpo da função deve estar entre chaves Exemplo de uma função definida pelo usuário declarado na consulta declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?) AS xs:decimal? { let $disc := ($p * $d) div 100 return ($p - $disc) } Abaixo está um exemplo de como chamar a função acima: <minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>
  77. 77. Aqui está um exemplo de uma questão que poderia se resolver com XQuery: "Selecione todos os registros de CD com um preço inferior a US$10 a partir da coleção de CDs armazenados no documento XML chamado cd_catalog.xml"
  78. 78. Document Type Definition - DTD Uma definição de tipo de documento (DTD) define os blocos de construção legais de um documento XML. Ele define a estrutura do documento com uma lista de elementos jurídicos e atributos. A DTD pode ser declarado embutido no documento XML, ou como uma referência externa.
  79. 79. Se o DTD é declarada dentro do arquivo XML, deve ser envolvido em uma definição DOCTYPE com a seguinte sintaxe: <!DOCTYPE root-element [element-declarations]> Exemplo de documento XML com um DTD interno: <?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> DTD Interno
  80. 80. Se o DTD é declarado em um arquivo externo, ele deve ser envolto em uma definição DOCTYPE com a seguinte sintaxe: <!DOCTYPE root-element SYSTEM "filename"> Este é o mesmo documento XML anterior, mas com um DTD externo ( Abra- o e selecione ver código): <?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> DTD Externo
  81. 81. Por Que Usar um DTD? Com um DTD, cada um de seus arquivos XML pode transportar uma descrição do seu próprio formato. Com um DTD, grupos independentes de pessoas podem concordar em usar um DTD padrão para troca de dados. O aplicativo pode usar um DTD padrão para verificar se os dados que você recebe do mundo exterior é válido. Você também pode usar um DTD para verificar seus próprios dados.
  82. 82. Criando um DTD Ao criar um DTD, você precisa definir todos os elementos e atributos que você terá nos documentos XML. Então vamos criar um DTD para o nosso documento XML. Blocos de Construção XML Do ponto de vista DTD, todos os documentos XML (e HTML) são compostos pelos seguintes blocos: • Elementos • Atributos • Entidades • PCDATA • CDATA
  83. 83. Os elementos são declarados da seguinte forma: <!ELEMENT elementName ( elementParts ) > Atributos são declarados como esta: <!ATTLIST elementName attributeName attributeType attributeDefault > Então, quando criarmos um DTD para nosso arquivo XML, teríamos algo como isto: <!ELEMENT message ( email | letter ) > <!ELEMENT letter ( letterhead, text ) > <!ELEMENT email (header, subject?, text+) > <!ATTLIST letter reply ( yes | no ) "no" > <!ATTLIST email reply ( yes | no ) "no" > <!ELEMENT header ( sender, recipient*, date?) > <!ELEMENT subject ( #PCDATA) > <!ELEMENT letterhead ( sender, recipient*, date ) > <!ELEMENT sender ( #PCDATA ) > <!ELEMENT recipient ( #PCDATA ) > <!ELEMENT date ( #PCDATA ) > <!ELEMENT text ( #PCDATA | salutation )* > <!ELEMENT salutation ( #PCDATA ) >
  84. 84. Elementos DTD Em um DTD, elementos são declarados como !ELEMENT. Declarando Elementos: <!ELEMENT element-name category> or <!ELEMENT element-name (element-content)> Elementos vazios são declarados com a categoria chave EMPTY <!ELEMENT element-name EMPTY> Exemplo: <!ELEMENT br EMPTY> XML exemplo: <br />
  85. 85. Elementos com dados de caracter apenas analisados ​​são declarados com #PCDATA entre parênteses: <!ELEMENT element-name (#PCDATA)> Exemplo: <!ELEMENT from (#PCDATA)> Elementos declarados com a palavra-chave ANY, pode conter qualquer combinação de dados analisáveis: <!ELEMENT element-name ANY> Exemplo: <!ELEMENT note ANY> Elementos com Children (sequencias) são declarados dentro de parenteses: <!ELEMENT element-name (child1,child2,...)> Exemplo: <!ELEMENT note (to,from,heading,body)> Elementos DTD
  86. 86. Elementos DTD Declarando Apenas uma ocorrência de um elemento: <!ELEMENT element-name (child-name)> Exemplo: <!ELEMENT note (message)> Declarando ocorrência mínima de um elemento <!ELEMENT element-name (child-name+)> Exemplo: <!ELEMENT note (message+)> Declarando zero ou mais ocorrências de um elemento <!ELEMENT element-name (child-name*)> Exemplo: <!ELEMENT note (message*)>
  87. 87. Elementos DTD Declarando um ou outro conteúdo Exemplo: <!ELEMENT note (to,from,header,(message|body))> Declarando conteúdo misto Exemplo: <!ELEMENT note (#PCDATA|to|from|header|message)*>
  88. 88. Atributos DTD Uma declaração de atributo tem a seguinte sintaxe: <!ATTLIST element-name attribute-name attribute-type default-value> Exemplo DTD: <!ATTLIST payment type CDATA "check"> Exemplo XML: <payment type="check" />
  89. 89. Atributos DTD Tipo Descrição CDATA O valor é de dados de carácter ( en1 | en2 | ..) O valor deve ser um de uma lista enumerada ID O valor é um ID único IDREF O valor é o ID de outro elemento IDREFS O valor é uma lista de ids de outros NMTOKEN O valor é um nome XML válido NMTOKENS O valor é uma lista de nomes XML válidos ENTITY O valor é uma entidade ENTITIES O valor é uma lista de entidades NOTATION O valor é um nome de uma notação xml: O valor é um valor predefinido xml Valor Explicação valor O valor padrão do atributo # REQUIRED O atributo é necessário # IMPLIED O atributo não é necessário # FIXED valor O valor do atributo é fixo Tipos de Atributos:Valor Padrão de Atributos:
  90. 90. Elementos vs Atributos Em XML, não há regras sobre quando usar atributos e quando usar elementos filhos. Atributos  HTML e Elementos filhos  XML Deve-se evitar o uso de atributos? Alguns dos problemas com atributos são: • Atributos não podem conter múltiplos valores (elementos filhos podem) • Atributos não são facilmente expansível (para futuras mudanças) • Atributos não podem descrever estruturas (elementos filhos podem) • Atributos são mais difíceis de manipular por código de programa • Valores de atributos não são fáceis de testar contra um DTD Exceção: Os metadados (dados sobre dados) devem ser armazenados como atributos, e que os próprios dados devem ser armazenados como elementos.
  91. 91. Entidades DTD Entidades são variáveis ​​utilizadas para definir atalhos para texto padrão ou caracteres especiais. • Referências a entidades são referências a entidades • Entidades podem ser declaradas interno ou externo  Interna: <!ENTITY entity-name "entity-value"> DTD: <!ENTITY writer "Donald Duck."> XML: <author>&writer;</author>  Externa: <!ENTITY entity-name SYSTEM "URI/URL"> DTD: <!ENTITY writer SYSTEM "www.w3schools.com/entities.dtd"> XML: <author>&writer;</author>
  92. 92. Exemplos DTD Programação TV Artigo de Jornal Catálogo de Produtos
  93. 93. WSDL WSDL (Web Services Description Language) é uma linguagem baseada em XML para descrever serviços Web e como acessá-los. O que é o WSDL?  WSDL é escrito em XML  WSDL é um documento XML  WSDL é usado para descrever serviços Web  WSDL também é usado para localizar serviços Web  WSDL é uma recomendação da W3C desde 2007 WSDL descreve web services  O documento descreve um serviço web.  Ele especifica a localização do serviço e as operações (ou métodos) que o serviço expõe.
  94. 94. Um documento WSDL é apenas um documento XML simples. Ele contém um conjunto de definições para descrever um serviço web. Um documento WSDL A estrutura do documento WSDL Elemento Descrição <types> Um recipiente para definições de tipo de dados usados pelo web service <message> Uma definição tipada dos dados a serem comunicados <portType> Um conjunto de operações suportadas por um ou mais parâmetros <binding> A especificação do formato de protocolo e de dados para um tipo de porta particular Um documento WSDL descreve um serviço web usando esses elementos principais:
  95. 95. A estrutura principal de um documento WSDL parecido com esta: <definitions> <types> data type definitions........ </types> <message> definition of the data being communicated.... </message> <portType> set of operations...... </portType> <binding> protocol and data format specification.... </binding> </definitions>
  96. 96. Um documento WSDL pode também conter outros elementos, tais como elementos de extensão, e um elemento de serviço, que torna possível agrupar as definições dos vários Web services num único documento WSDL. Portas WSDL O elemento <portType> é o mais importante elemento WSDL. Ele descreve um web service, as operações que podem ser realizadas, e as mensagens que estão envolvidas. O elemento <portType> pode ser comparado com uma biblioteca de função (ou um módulo, ou uma classe) em uma linguagem de programação tradicional. <portType> set of operations...... </portType>
  97. 97. Mensagens WSDL O elemento <mesage> define os elementos de dados de uma operação. Cada mensagem pode consistir de uma ou mais partes. As partes podem ser comparadas com os parâmetros de uma chamada de função em uma linguagem de programação tradicional. <message> definition of the data being communicated.... </message>
  98. 98. Tipos WSDL O elemento <types> define os tipos de dados que são utilizados pelo web service. WSDL usa sintaxe XML Schema para definir tipos de dados. <types> data type definitions........ </types> Vinculações WSDL O elemento <binding> define o formato dos dados e protocolo para cada tipo de porta. <binding> protocol and data format specification.... </binding>
  99. 99. Exemplo WSDL <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType> Comparado a programação tradicional, glossaryTerms é uma biblioteca de função ", getTerm" é uma função de "getTermRequest" como o parâmetro de entrada, e getTermResponse como o parâmetro de retorno.
  100. 100. WSDL - O Elemento <portType> Tipos de operação Type Definition One-way A operação pode receber uma mensagem, mas não vai retornar uma resposta Request-response A operação pode receber um pedido e retornar uma resposta Solicit-response A operação pode enviar um pedido e esperar por uma resposta Notification A operação pode enviar uma mensagem, mas não vai esperar por uma resposta
  101. 101. Operação One-Way <message name="newTermValues"> <part name="term" type="xs:string"/> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="setTerm"> <input name="newTerm" message="newTermValues"/> </operation> </portType > No exemplo acima, o "portType glossaryTerms" define uma operação unidirecional chamado "setTerm". A operação "setTerm" permite a entrada de novos termos do glossário mensagens usando uma mensagem "newTermValues" com os parâmetros de entrada “term" e "value". No entanto, nenhuma saída é definida para a operação.
  102. 102. Operação Request-Response <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType>
  103. 103. WSDL Bindings Vinculando a SOAP Um exemplo de operação de resquest-response: <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType> <binding type="glossaryTerms" name="b1"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <operation> <soap:operation soapAction="http://example.com/getTerm"/> <input><soap:body use="literal"/></input> <output><soap:body use="literal"/></output> </operation> </binding>
  104. 104. O elemento binding tem dois atributos – type e name. O atributo name (você pode usar qualquer nome que você quiser) define o nome da binding, e o atributo type pontos para a porta do binding, neste caso, a porta "glossaryTerms“. O SOAP: elemento binding tem dois atributos – style e transport. O atributo style pode ser "rpc" ou "document". Neste caso, usamos document. O atributo transport define o protocolo SOAP a ser usado. Neste caso, usar o HTTP. O elemento operation define cada operação que o portType expõe. Para cada operação uma ação SOAP correspondente tem de ser definida. Você também deve especificar como a entrada e saída são codificados. Neste caso, usamos "literal".
  105. 105. WSDL e UDDI Universal Description, Discovery and Integration (UDDI) é um serviço de diretório, onde as empresas podem se registrar e procurar serviços web. O que é UDDI? UDDI é um diretório de interfaces web service descrito pelo WSDL UDDI se comunica via SOAP UDDI é construído dentro da plataforma Microsoft. NET
  106. 106. O que é UDDI baseia? UDDI utiliza World Wide Web Consortium (W3C) e Internet Engineering Task Force (IETF) padrões de Internet, tais como XML, HTTP e protocolos DNS. UDDI usa WSDL para descrever as interfaces de serviços web. Além disso, recursos de programação de plataforma cruzada são superados adotando SOAP, conhecido como protocolo XML de especificações de mensagens encontradas no site da W3C. Benefícios UDDI Como pode ser UDDI Usado? Quem está apoiando UDDI?
  107. 107. SOAP (Simple Object Access Protocol) É um protocolo baseado em XML para permitir troca de informações de aplicativos via HTTP. SOAP fornece uma forma de comunicação entre aplicações rodando em diferentes sistemas operacionais, com diferentes tecnologias e linguagens de programação.
  108. 108. Blocos de Construção de SOAP Uma mensagem SOAP é um documento XML comum contendo os seguintes elementos:  Envelope - que identifica o XML como uma mensagem SOAP  Header - que contém informações de cabeçalho  Body - que contém informações de chamada e resposta  Fault - contendo erros e informações de status Todos os elementos acima são declarados no namespace padrão para o envelope SOAP: http://www.w3.org/2001/12/soap-envelope E o namespace padrão para codificação SOAP e tipos de dados é: http://www.w3.org/2001/12/soap-encoding
  109. 109. Regras de sintaxe  Uma mensagem SOAP DEVE ser codificado usando XML  Uma mensagem SOAP DEVE usar o namespace envelope SOAP  Uma mensagem SOAP DEVE usar o namespace codificação SOAP  Uma mensagem SOAP NÃO DEVE conter uma referência DTD  Uma mensagem SOAP NÃO DEVE conter instruções de processamento XML
  110. 110. Esqueleto mensagem SOAP <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> ... </soap:Header> <soap:Body> ... <soap:Fault> ... </soap:Fault> </soap:Body> </soap:Envelope>
  111. 111. O elemento Header <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> <m:Trans xmlns:m="http://www.w3schools.com/transaction/" soap:mustUnderstand="1">234 OU soap:actor="http://www.w3schools.com/appml/">234 OU soap:encondingstyle=“URI”>234 </m:Trans> </soap:Header> ... </soap:Envelope>
  112. 112. O elemento Body <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body> <m:GetPrice xmlns:m="http://www.w3schools.com/prices"> <m:Item>Apples</m:Item> </m:GetPrice> </soap:Body> RESPOSTA <soap:Body> <m:GetPriceResponse xmlns:m="http://www.w3schools.com/prices"> <m:Price>1.90</m:Price> </m:GetPriceResponse> </soap:Body> ...
  113. 113. O elemento Fault Usado para indicar as mensagens de erro. SubElementos Descrição <faultcode> Um código de identificação da falha <faultstring> Uma explicação legível da falha <faultactor> Informações sobre quem causou a falha <detail> Contém informações de erro da aplicação específica relacionada ao elemento Body <soap:Body> <soap:Fault> ... </soap:Fault> </soap:Body>
  114. 114. Erro Descrição VersionMismatch Encontrou um namespace inválido para o elemento envelope MustUnderstand Um elemento filho imediato do elemento header, com o atributo mustUnderstand definido para "1", não foi entendido Client A mensagem foi formada incorretamente ou continham informações incorretas Server Houve um problema com o servidor para que a mensagem não poderia proceder Códigos de falha de SOAP Os valores a seguir devem ser usados no elemento faultcode ao descrever falhas:
  115. 115. <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body> … <soap:Fault> <faultcode>soap:Client</faultcode> <faultstring> Failed to locate method (ValidateCreditCard) in class (examplesCreditCard) at /usr/local/ActivePerl-5.6/lib/ site_perl/5.6.0/SOAP/Lite.pm line 1555. </faultstring> </soap:Fault> </soap:Body> </soap:Envelope> Exemplo de Implementação
  116. 116. Comunicação HTTP SOAP O protocolo HTTP se comunica através de TCP/IP. Um cliente se conecta a um servidor HTTP usando TCP. Depois de estabelecer a conexão, o cliente pode enviar uma mensagem de solicitação HTTP para o servidor: POST /item HTTP/1.1 Host: 189.123.255.239 Content-Type: text/plain Content-Length: 200 O servidor processa o pedido e envia uma resposta HTTP pro cliente com código de status: 200 OK Content-Type: text/plain Content-Length: 200 Se o servidor não consegue processar o pedido, ele retornaria isto: 400 Bad Request Content-Length: 0
  117. 117. HTTP + XML = SOAP Uma solicitação SOAP pode ser um HTTP POST ou uma solicitação HTTP GET. A solicitação HTTP POST especifica pelo menos dois cabeçalhos HTTP: Content-Type e Content-Length. Content-Type Define o tipo MIME para a mensagem e a codificação de caracteres (opcional) usado para o corpo XML do pedido ou resposta. POST /item HTTP/1.1 Content-Type: application/soap+xml; charset=utf-8 Content-Length Especifica o número de bytes no corpo do pedido ou resposta. POST /item HTTP/1.1 Content-Type: application/soap+xml; charset=utf-8 Content-Length: 250
  118. 118. Um SOAP Request: POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: 100 <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPrice> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope>
  119. 119. Um SOAP Response: HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock"> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> </soap:Envelope>
  120. 120. Web Services Web Services pode converter seu aplicativo em um aplicativo Web, que pode publicar sua função ou mensagem para o resto do mundo. Web Services é simplesmente XML + HTTP
  121. 121. Por Web Services? Alguns anos atrás, Web services não era rápido o suficiente para ser interessante. A interoperabilidade tem mais alta prioridade Quando todas as principais plataformas podem acessar a web usando navegadores, plataformas diferentes não podem interagir. Para essas plataformas trabalharem em conjunto, foram desenvolvidas as aplicações web. Web services usam XML para codificar e decodificar os dados, e SOAP para transportá-lo (usando protocolos abertos).
  122. 122. Web Services têm dois tipos de usos Aplicação-componentes reutilizável Web services podem oferecer aplicações-componentes como: conversão de moedas, previsão do tempo, ou mesmo tradutor de linguagens como serviços. Conecção com software existente Web services podem ajudar a resolver o problema de interoperabilidade, dando a diferentes aplicações uma forma de vincular seus dados.
  123. 123. Elementos Web Services
  124. 124. EXEMPLO Qualquer aplicação pode ter um componente de Web Service. Web services podem ser criados independentemente da linguagem de programação. No exemplo a seguir, vamos utilizar o Java para criar um Web Service simples.
  125. 125.  Formado em Análise de Sistemas  Pós-Graduado em Auditoria em T.I.  Gerente de TI da CLIOC – Coleção de Leishmania do Instituto Oswaldo Cruz – Fiocruz  Certificado em Gestão de Segurança da Informação e Gerenciamento de T.I. pela Academia Latino-Americana (Microsoft TechNet / Módulo Security) Carlos Henrique M. da Silva carloshenrique.85@globo.com

×