Tecnologia XML Prof. Antonio Geraldo Vidal [email protected] FEA/USP Tecnologia de Informática O que é XML XML tem como propósito fundamental a descrição de informações. Permite colocarmos em um mesmo documento dados e metadados (a descrição destes dados). Estabelece um formato textual que pode ser facilmente entendido quando lido por uma pessoa ou software. Ao contrário dos formatos tradicionais, em XML os dados são armazenados com a sua descrição. Formato Tradicional Uma maneira tradicional de se transmitir dados de um sistema para outro é por meio de arquivos texto delimitados. Cada registro ocupa uma linha e cada coluna de dados é separada das outras por um delimitador. Tanto o programa que gera, como o programa que recebe e utiliza estes dados precisam conhecer o formato exato dos registros. Formato Tradicional Coluna CPF Nome Endereço Etc. Posição 1-14 15-55 56-100 .... 950.241.318-00Antonio Geraldo Vidal 100.231.342-60José da Silva Santos 234.123.123-34Maria Aparecida dos Santos Paiva . . . . . . Neste formato, o deslocamento de uma única posição muda todo o conjunto de dados que será lido por um programa. Rua Bela Cintra Rua Tiradentes Av. Brasil, 231 . . . Formato XML <PESSOA> <CPF>950.241.318-00</CPF> <NOME>Antonio Geraldo Vidal</NOME> <ENDEREÇO>Rua Bela Cintra, 2262</ENDEREÇO> <CEP>01415-002</CEP> </PESSOA> <PESSOA> <CPF>100.231.342-60</CPF> <NOME>José da Silva Santos</NOME> <ENDEREÇO>Rua Tiradentes, 2104</ENDEREÇO> <CEP>05059-001</CEP> </PESSOA> Em XML a adição ou a remoção de elementos tem pequeno impacto sobre o programa que estiver lendo as informações contidas no documento XML. Formato XML Por ter uma estrutura simples e bem definida, XML permite que um documento seja validado antes de ser iniciado seu processamento. XML é uma maneira simples, estruturada, flexível e precisa para se descrever informações. Na prática, XML habilita a comunicação com parceiros de negócio, de um modo que não é possível com qualquer outra tecnologia. Em sistemas para transações eletrônicas, XML permite a separação dos dados dos processos que agem sobre esses dados. eXtensible Markup Language XML é uma linguagem padronizada, originalmente direcionada para o processamento de documentos. Fornece uma sintaxe que permite definir cada objeto de informação de um modo não ambíguo. Fazendo isso, pode-se capturar as informações como sendo um objeto e então processá-lo utilizando diferentes aplicativos, dependendo dos requisitos de cada contexto de negócio. XML vs. HTML A linguagem HTML pode ser considerada um tipo ou caso particular de XML. Um documento HTML é um documento XML se ele aderir a algumas regras de construção denominadas well-formedness constraints. Deveremos continuar a usar HTML para exibir informações, enquanto usamos XML para trocar e processar essas informações. XML vs. HTML Ao contrário de HTML, que tem um conjunto fixo de tags, XML fornece flexibilidade para você criar suas próprias tags. Você pode chamar as informações a serem trocadas e processadas de qualquer nome que desejar. As tags de XML normalmente representam dados reais. Aplicações em Negócios Eletrônicos O principal propósito de um site empresarial é gerar negócios. Para isso, freqüentemente constrói-se um aplicativo de comércio eletrônico que faz uma conexão com cadastros de produtos e serviços que a nossa companhia fornece. Estes cadastros normalmente tomam a forma de uma base de dados SQL. Aplicativo Padrão para Negócios Eletrônicos Informações Externas Dados externos podem ser uma rica fonte de informações para os nossos clientes ou usuários. Entretanto, as informações externas não estão em bases de dados em nosso próprio servidor. Podemos, porém, usar XML para solicitar e obter informações como objetos XML, podendo processá-los posteriormente. O trabalho é, portanto, agregar certos tipos de conteúdo de vários sites e disponibilizá-los em nossas páginas, para fornecer ao nosso visitante ou usuário toda informação que ele precisa. Aplicativo XML para Negócios Eletrônicos Sites externos tornam-se parte da camada de dados, e um aplicativo de agregação é usado para integrar estes novos dados na camada de regras de negócio. XML Exemplo Nosso site poderia enviar uma requisição de informações sobre a previsão do tempo através de um pedido eletrônico em XML, como abaixo: <weather_request days="5" temp="celsius" wind="mph"> <zipcode>80112</zipcode> </weather_request> Exemplo Em resposta, receberíamos um documento XML como a seguir: <weather_response zipcode='80012' Updated='2000-01-07 21:49:06'> <location>Aurora, CO</location> <current> <condition name='temp'>28</condition> <condition name='wind chill'>12</condition> <condition name='wind'>from the Southeast at 8 mph</condition> <condition name='dewpoint'>18</condition> <condition name='relative humidity'>66%</condition> <condition name='visibility'>25 miles</condition> <condition name='barometer'>30.02 inches</condition> <condition name='Sunrise'>7:20 am MST</condition> <condition name='Sunset'>4:50 pm MST</condition> </current> <forecast> <day date='20000108 21:49:06' High='49' Low='20' Sky='Partly Cloudy'/> <day date='20000109 21:49:06' High='46' Low='21' Sky='Partly Cloudy'/> <day date='20000110 21:49:06' High='51' Low='25' Sky='Partly Cloudy'/> <day date='2000-01-11 21:49:06' High='51' Low='19' Sky='Partly Cloudy'/> <day date='2000-01-12 21:49:06' High='53' Low='21' Sky='Partly Cloudy'/> </forecast> </weather_response> Exemplo Os documentos XML que a empresa fornecedora de previsões do tempo enviar conterão apenas os dados solicitados. Poderemos processá-los de diferentes formas, dependendo do tipo de saída desejada, em cada situação. Os dados poderão ser apresentados como desejado, pois temos acesso aos dados brutos e poderemos processá-los da maneira mais apropriada às nossas necessidades. Exemplo SOAP - Simple Object Access Protocol é um protocolo de comunicação padrão, via Internet, proposto pelo IETF - Internet Engineering Task Force (IETF), que permite invocar procedimentos em sistemas remotos (RPC) usando um conjunto padrão de tags XML. O SOAP utiliza o HTTP como seu protocolo de requisição e resposta de dados. Portanto, utilizando-o pode-se obter dados rápida e eficazmente de um provedor de conteúdo, ou de parceiros de negócio. SOAP – Simple Object Access Protocol Aplicativos XML para Negócios Eletrônicos Vários parceiros de negócio (syndication partners) fornecerão conteúdo baseado em padrões, portanto, nós poderemos agregar várias fontes de informações diferentes em uma única base de assuntos correlatos. XML/SOAP XML/SOAP Aplicativos XML para Negócios Eletrônicos Cada parceiro de negócio exige um conversor especializado que transforma sua estrutura particular de informações em uma forma que nosso “site” pode usar. Aplicativos XML para Negócios Eletrônicos Multiplique os conversores especializados pelo número de “sites” usando os conteúdos disponíveis. Os problemas com “sites” individuais serão também multiplicados. Aplicativos XML para Negócios Eletrônicos Fornecendo dados em um formato único e padronizado elimina-se a necessidade de software de conversão proprietário para cada provedor de dados. Cada provedor precisa criar um só filtro, para converter o conteúdo do formato do provedor para o formato padrão (no exemplo NITF). A partir daí, cada site pode utilizar a informação em seu formato padrão nativo ou convertê-la mais uma vez para a forma exigida para seus sistemas de informação. <?xml version="1.0"?> <nitf> <head> <title>Technology Tools and Toys</title> Exemplo </head> <body> <body.head> <headline> <hl1>Pac-Man chomps its way toward 20</hl1> <hl2>Seminal video game rose from humble beginnings</hl2> </headline> <byline> By<person>Steven Kent</person> <bytag>MSNBC CONTRIBUTOR</bytag> </byline> <dateline> <location></location> <story.date>1999-09-03</story.date> </dateline> </body.head> <body.content> <p>He may have been a fixture in bars for most of the last two decades, but Pac-Man, one of the video game industry's greatest living legends, is still a bit shy of legal age.</p> ... </body.content> <body.end></body.end> </body> </nitf> XML como Padrão para Negócios Eletrônicos XML é um padrão criado pelo W3C World Wide Web Consortium. O W3C é um consórcio das companhias dedicadas a criar e manter tecnologias essenciais para a Internet como o HTML e o XML. XML é uma sintaxe poderosa que permite às organizações criar estruturas para o intercâmbio de eficiente de informações. EDI vs. XML EDI – Eletronic Data Interchange (Troca Eletrônica de Dados): Longos prazos para desenvolvimento; Requisitos variados das companhias; Alto custo; Dificuldades para implementar uma especificação comum; Soluções proprietárias. EDI vs. XML Um grupo chamado XML/EDI está trabalhando em uma versão mais aberta das especificações de EDI. Esperam que usuários tradicionais de EDI adotem XML como sua sintaxe padrão para intercâmbio de dados. Muitos outros grupos estão trabalhando para o mesmo fim: Criar um modo universal de fazer negócios, usando XML como a sintaxe de definição de dados. ebXML Um destes esforços é a iniciativa ebXML ("eb" significa "electronic business“). As Nações Unidas/CEFACT e a OASIS Organization for the Advancement of Structured Information Standards - um grupo de indústrias XML - estão trabalhando sobre o ebXML. A meta do ebXML é usar um conjunto padrão de objetos XML para facilitar o comércio internacional. A iniciativa ebXML deve desenvolver uma infraestrutura técnica que habilitará o uso de XML de uma maneira consistente para a troca de todo tipo de dados de negócios de eletrônicos. ebXML A lista parcial de participantes deste grupo parece a lista do quem é quem no comércio eletrônico internacional: Ariba Amazon.com Bank of America Boeing CommerceNet Dunn and Bradstreet IBM Microsoft Oracle Sun E muitas outras companhias ao redor do mundo XML como Padrão para Negócios Eletrônicos Assim como o ebXML, existem muitas outras especificações e padrões sendo desenvolvidos por outros grupos neste ambiente. Estas especificações provavelmente resultarão em um conjunto de padrões chamados esquemas, que descreverão determinados documentos de negócio como faturas, ordens de compra, registros médicos e transações financeiras. Neste ambiente, os esquemas serão componentes críticos da solução de comércio eletrônico. Onde XML se encaixa nos Negócios Eletrônicos? Em todo lugar! XML é apenas um conjunto de regras - uma sintaxe - para marcar dados. É uma sintaxe simples, padronizada e compacta, porém, são exatamente estas qualidades que a valorizam. Para participar de qualquer transação de negócios, uma empresa deve comunicar-se claramente com seus parceiros de negócio. XML, portanto, fornece uma sintaxe para se comunicar de modo direto e preciso, identificando cada pedaço de informação exigida para completar uma transação. XML e Negócios Eletrônicos Outro aspecto comum entre XML e negócios eletrônicos é a confiabilidade. Se você não confiar em uma empresa ou pessoa, você não vai fazer negócios com ela, quer esteja face a face numa loja real ou na Internet numa loja virtual. XML pode fornecer um grande nível confiabilidade porque informações sobre sua transação podem ser transmitidas com segurança e verificadas. XML e Negócios Eletrônicos Assim como HTML se tornou a linguagem padrão de apresentação de informações na Web, XML será, provavelmente, a linguagem padrão para transações eletrônicas através da Web. XML propriamente não define o vocabulário das transações, este é o trabalho do esquema. XML será apenas a sintaxe usada para permutar os dados e fazer as transações se realizarem entre diferentes sistemas de diferentes organizações ao redor do planeta. O padrão XML XML é um padrão aberto. Não pertence a uma única organização Foi definida por um consórcio de organizações altamente competitivas de diversos setores. Elas perceberam o grande benefício para todos na utilização de uma sintaxe simples e padronizada para trocar informações. O padrão XML Por ser um padrão aberto, XML trabalha sob qualquer plataforma computacional com qualquer linguagem de programação. XML realmente não faz nada; ela é somente uma sintaxe que fornece um modo estruturar e representar dados e informações. O benefício chave da XML é que ela permite separar os dados dos processos que agem sobre estes dados. XML & Java Você provavelmente já ouviu muito sobre a dupla XML e Java: XML para representar dados e Java para processá-los Esta dupla faz muita sensação por serem padrões abertos, independentes de plataformas computacionais. Os desenvolvedores podem criar aplicativos multi-plataforma em Java e usar XML para trocar dados entre eles. Origem de XML Está na SGML - Standard Generalized Markup Language. SGML é um padrão, pertencente à ISO, que foi criado para permitir o compartilhamento de informações entre as companhias que poderiam possuir sistemas diferentes. A IBM, a DEC, a Receita Federal (IRS) e o Departamento de Defesa (DoD) dos EUA são (ou eram) grandes usuários da SGML. SGML e XML SGML foi a primeira tecnologia padrão que permitiu que usuários separassem dados dos processos que agiam sobre eles. Usando SGML, pode-se executar um processo, chamado análise de informações, para descobrir a estrutura e o conteúdo dos dados. Um vocabulário chamado Document Type Definition – DTD – ou definição de tipo de documento, pode ser então desenvolvido a partir daquela análise. DTD Document Type Definition Um DTD define uma classe de informações, portanto, cada DTD é específico para cada conjunto de dados. Um DTD indica o conteúdo de objetos no conjunto de informações usando uma sintaxe precisa chamada modelo de conteúdo. Uma vez que cada conjunto de informações tem requisitos e objetos diferentes, o DTD para descrever cada conjunto é diferente. SGML e XML Um documento SGML consiste em caracteres ASCII com tags (marcações) e conteúdo. Um interpretador (parser) lê o documento e determina a estrutura das informações identificando as tags e extraindo os dados nelas contidos. Uma vez que um documento SGML é escrito em formato texto ASCII simples, ele é portável e executável em qualquer plataforma que possua um interpretador. XML possui estas mesmas características. SGML porém, não pôde acompanhar o desenvolvimento da Web, pois foi projetada em 1980, uma era de computadores lentos e caros. Surgimento da XML Precisava-se, portanto, de algo: Portável, barato, rápido e fácil como HTML; Extensível como SGML; Compatível com que já era conhecido, de forma que pudéssemos usar as técnicas e ferramentas já existentes. Com esse objetivo, um grupo do W3C trabalhou entre 1996 e 1997 até apresentar a primeira definição de XML em 1998. 10 Objetivos da XML 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. XML deve ser utilizável através da Internet. XML deve suportar uma ampla variedade aplicações. XML deve ser compatível com SGML. Deve ser fácil escrever programas que processam documentos XML. O número de características opcionais em XML deve ser mantido num mínimo absoluto, idealmente zero. Documentos XML devem ser razoavelmente claros e legíveis por pessoas comuns. Um projeto de XML deve poder ser preparado depressa. Um projeto de XML deve ser formal e conciso. Documentos XML devem ser fáceis de serem criados. A concisão nas marcações ou tags de XML é de importância mínima. Essência da XML XML é uma sintaxe que permite que usuários criem linguagens de marcação. As linguagens que são usadas para criar linguagens de marcação são comumente conhecidas como meta linguagens de marcação. XML é uma recomendação técnica do W3C (http://www.w3c.org). XML é um padrão multi-plataforma, aberto, não-proprietário e gratuito. Mitos da XML Há uma série de mitos sobre XML que não são verdadeiros, entre eles: XML é uma linguagem de marcação (markup language) como HTML; XML é apenas para a Web; HTML é um subconjunto da XML; XML é a solução perfeita para transações em negócios eletrônicos. Padronizadores da XML Organismos que de certa forma regulam os padrões da XML: International Organization for Standardization (ISO) American National Standards Institute (ANSI) Organization for the Advancement of Structured Information Systems (OASIS) World Wide Web Consortium (W3C) Internet Engineering Task Force (IETF) Indústrias que definem esquemas XML Padrões Derivados da XML Namespaces: especifica como qualificadores nomes de elementos e atributos com identificadores de espaços de nomes únicos. DOM: conjunto de interfaces de programação abstratas para percorrer, manipular e criar documentos XML. XML Schema – Structures e Datatypes: linguagem para descrever elementos, atributos e notações em termos de tipos hierárquicos e tipos de dados. XML Information Set: descrição de um documento XML abstrato, sem preocupação com sintaxe. Padrões Derivados da XML XML Base (XBase): especifica como determinar a URI a utilizar. XML Inclusions (XInclude): uma alternativa a DTDs para acessar entidades externas. XML Path Language (XPath): permite selecionar um conjunto de nós em um documento XML. XML Pointer Language: usa expressões XPath como identificadores URI, para permitir a referência de elementos em documentos externos. XML Linking Language: representa ligações entre documentos XML. DOM Document Object Model Conjunto completo de padrões publicados pelo W3C que apóiam a XML. O Modelo DOM Document Object Model Expõe um documento XML como uma estrutura em árvore na memória do computador e fornece um ambiente fácil de se programar para o desenvolvedor de aplicações. Fornece um objeto acessível pode ser consultado e manipulado como qualquer outro objeto em linguagens de programação orientadas para objeto. Define um conjunto padrão de objetos e interfaces que podem ser usados para manipular a linguagem XML, fornecendo acesso a documentos, elementos e atributos. DOM Documentos XML Um documento XML é estruturado em forma de árvore. Possui sempre um elemento raiz, a partir do qual outros elementos vão se ramificar. Essa estrutura de árvore estabelece como documentos XML vão ser definidos e tratados. O tratamento envolve principalmente encontrar um determinado elemento, ou grupo de elementos a serem processados. Duas relações entre os elementos são importantes: hierarquia e seqüência. Hierarquia e Seqüência Hierarquia: Estabelece relações pai/filho e ancestral/descendente entre os elementos. Seqüência: Estabelece a seqüência em que as informações aparecem. Exemplo <?xml version=“’=1.0”?> <Instruções> <Titulo> Lavar os Cabelos </Titulo> <Seqüência> <Passo> Molhar os cabelos</Passo> <Passo> Colocar xampu</Passo> <Passo> Fazer espuma com as mãos</Passo> <Passo> Esfregar bem</Passo> <Passo> Enxaguar bem</Passo> </Seqüência> </Instruções> Documentos XML Bem Formados e Válidos Um documento XML pode estar em dois estados: Bem formado Válido Um documento bem formado adere a várias regras ou restrições de formação, detalhadas na especificação da XML. Um documento XML é válido se possuir uma declaração de tipo de documento associada (DTD ou esquema) e se o documento estiver de acordo com as regras e restrições nela expressas. Documentos XML Bem Formados 1. 2. 3. 4. 5. 6. 7. Todo elemento deve ter uma tag de início e uma de fim. Deve ter um elemento raiz único. Nomes de elemento e atributo são sensíveis a letras maiúsculas e minúsculas. Elementos devem ser corretamente intercalados; eles não podem ter sobre-elos estruturais. Certos caracteres devem ser evitados, ou representados por uma combinação de caracteres especiais. Valores de atributo devem estar sempre entre aspas. Elementos vazios têm um formato especial ao qual devem estar aderentes. Documentos XML Válidos Um documento XML é válido se ele tem uma declaração de tipo de documento associada – DTD Document Type Definition – e se o documento estiver de acordo com as regras nela expressas. A declaração de tipo de documento diz ao interpretador XML onde achar um conjunto de regras contra as quais um documento pode ser conferido e validado. De onde vem este conjunto de regras? Alguém precisa determinar a estrutura dos membros de uma classe particular de documentos e tornar esta descrição de estrutura disponível para o interpretador XML. Dados e Marcações em Documentos XML Um documento XML é formado por uma combinação de dados textuais e marcações (tags). As tags podem ser: De início e de fim Elementos vazios Referências a entidades Referências a caracteres Comentários Delimitadores de seções CDATA (valores ignorados pela XML) Declaração de tipo de documento Instruções de processamento Declarações XML Declarações textuais Exemplo <?xml version=“1.0”?> <!DOCTYPE PRECOS [ <!ELEMENT PRECOS (LIVRO+)> <!ELEMENT LIVRO (TITULO,DISTRIBUIDOR?)> <!ATTLIST TITULO VALOR CDATA #REQUIRED> <!ELEMENT TITULO (#PCDATA)> <!ELEMENT DISTRIBUIDOR (#PCDATA)> ]> <PRECOS> <LIVRO> <TITULO VALOR=“120”>Manual de Comercio Eletrônico</TITULO> <DISTRIBUIDOR>Editora Choque</DISTRIBUIDOR> </LIVRO> <LIVRO> <TITULO VALOR=“78”>Tudo sobre Negócios na Web</TITULO> <DISTRIBUIDOR>Editora Teia</DISTRIBUIDOR> </LIVRO> </PRECOS> Atributos Cada item de elemento de informação pode ter uma ou mais propriedades ou atributos. Cada atributo tem um nome único e possui possui uma propriedade consistindo de zero ou mais caracteres. Em HTML é normal o uso de atributos para qualificar elementos: par nome+valor. Em XML atributos podem ser usados para descrever ou fornecer informações sobre um elemento. <TITULO VALOR=“120”>Manual de Comércio Eletrônico</TITULO> Visualização de Documentos HTML e XML Documentos XML que não precisam ser transformados podem usar folhas de estilo em cascata – CSS – usadas em HTML. Documentos XML que precisam de algum tipo de transformação precisam usar XSL. Esta transformação cria um conteúdo HTML por meio de um processador XSL, que pode residir no navegador do cliente ou no servidor Web. XSL é uma linguagem de transformação declarativa, que busca encontrar determinadas tags para aplicar determinado tipo de estilo de formatação visual HTML sobre elas. Opções de Visualização de um Documento XML 1 Documento HTML Apresentação HTML 2 Processador CSS 3 Documento XML Folha de Estilo CSS 5 4 Processador XSL Folha de Estilo XSL Formatação de Documentos XML CSS se limita a percorrer o documento XML aplicando formatos HTML. XSL processa o documento de maneira programável, através de tags especiais que localizam determinados elementos e neles efetua as transformações definidas. Por exemplo, aplicar determinadas tags HTML sobre estes elementos. Alteração de documentos XML: Se a alteração for só nos dados, não temos que nos preocupar com tags HTML, pois são definidas no XSL. Se a alteração for só na apresentação, basta modificar o documento XSL. Ferramentas para XML Navegadores: Internet Explorer 5.0 ou posterior. Editores: programas que permitem a criação e edição de documentos XML. Parsers: programas que verificam a sintaxe XML e possibilitam o desenvolvimento de aplicações para tratar documentos XML. Processadores XSL: transformam documentos XML em documentos HTML. Banco de Dados XML: armazenam dados ou retornam resultados de consultas como documentos XML. XML Namespaces Namespaces possuem dois propósitos básicos: 1. Habilitar o compartilhamento de esquemas de estruturas e tipos de dados e 2. Qualificar exclusivamente nomes de elementos em um ambiente de múltiplos esquemas. Namespaces são projetados para resolver o problema de fontes de dados que possuem elementos com o mesmo nome mas com significados diferentes. Namespaces apontam para esquemas que contém informações sobre o documento que você está usando. Namespaces Permitem a qualificação de nomes de maneira única na Internet, evitando conflitos entre elementos que tenham o mesmo nome. Esse risco existe uma vez que XML permite a criação de tags. Diferentes pessoas em diferente lugares podem criar os mesmos nomes de tag em contextos diferentes. Namespace é uma tecnologia que permite declarar os nomes que estamos utilizando, como pertencentes à um vocabulário. Dessa forma, os nomes podem ser especificados de maneira não ambígua no documento XML. Namespaces Exemplo Documento Livro <LIVRO> <TITULO>Tudo Sobre Negócios Eletrônicos</TITULO> <PRECO moeda=“BR Reais”>73.50</PRECO> <LIVRO> Documento Autor <AUTOR> <TITULO>Professor Doutor</TITULO> <NOME>Antonio Geraldo da Rocha Vidal</NOME> </AUTOR> Namespaces Exemplo Enquanto uma pessoa pode diferenciar os dois tipos de TITULO, um programa de computador não possui contexto suficiente para distingui-los. Namespaces resolvem este problema por meio da associação de um vocabulário a uma tag. <Livros:TITULO>E-Commerce Manual</TITULO> <Autor:TITULO>Mr.</TITULO> O nome que precede a tag é um namespace, também conhecido como URI – Universal Resource Identifier. Um URI garante que haverá unicidade quando dois ou mais documentos XML forem combinados. Namespaces Exemplo <lv:LIVRO xmlns:lv=“urn:Biblioteca:InformacaoLivros” xmlns:dinheiro=“urn:Financas:Dinheiro”> <lv:TITULO>E-Commerce Manual</lv:TITULO> <dinheiro:PRECO dinheiro:moeda=“BR Real” 59.80</dinheiro:PRECO> </lv:LIVRO> A declaração do namespace vai definir uma abreviação, ou prefixo, para substituir o nome completo do namespace. Em geral se usa uma declaração explícita para referenciar um elemento que esteja declarado em um namespace diferente do atual. DTD Document Type Definition A descrição da estrutura de um documento é chamada esquema. Em XML 1.0, o único tipo de esquema permitido é o DTD – Document Type Definition. O DTD foi herdado diretamente da SGML e define as tags possíveis para uma classe de documentos. Tendo-se um DTD, um documento XML pode ser validado. Pode-se confirmar que o documento segue certa definição ou estrutura. Uma vez validado, a aplicação que irá processar esse documento não precisa se preocupar com erros de estrutura. DTD Document Type Definition Usando-se um DTD assegura-se que diferentes pessoas e programas podem tratar informações uns dos outros. DTDs são usados para definir os assim chamados vocabulários. Cada vocabulário estabelece que elementos são aplicáveis em um determinado contexto. Cada setor de atividade que está envolvido na transferência de um determinado tipo de informação ou tipo de documento, tem um grande potencial para o uso de vocabulários próprios ou DTDs. Alguns exemplos de vocabulários padronizados: XMLNews, SMIL, CDF. DTD Document Type Definition A declaração do DTD aparece no prólogo do documento XML, antes do elemento-raiz. Pode ser: DTD local (interno ao documento): descreve estruturas específicas de um dado documento. DTD externo (externo ao documento): descreve estruturas gerais de uma classe de documentos. Processadores XML dão prioridade ao DTD interno, ou seja, pode-se redefinir estruturas gerais em DTDs internos. DTD Exemplo <?xmlversion=“1.0”?standalone=‘yes’> <!DOCTYPE nota [ <!ELEMENT nota (de,para,assunto,conteudo)> <!ELEMENT de (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT assunto (#PCDATA)> <!ELEMENT conteudo (#PCDATA)> ]> <nota> <para>Turma MBA Informatica e Tecnologia Internet</para> <de>Prof. Vidal</de> <assunto>Paper para Avaliacao</assunto> <conteudo>Cada aluno devera elaborar um trabalho descrevendo um plano de negocio com a aplicacao de tecnologias Internet</conteudo> </nota> DTD Exemplo O DTD do exemplo pode ser interpretado da seguinte maneira: !DOCTYPE nota: é o elemento de nível mais alto que estabelece um nome para o tipo de documento, neste caso “nota”. !ELEMENT nota: define o elemento raiz, determinando que o elemento nota possui quatro elementos: de, para, assunto e conteudo; que devem aparecer nesta ordem. !ELEMENT para: define que o elemento para é do tipo #PCDATA. E assim por diante... #PCDATA estabelece que o conteúdo dados textuais, isto é, não pode conter elementosfilhos. Declarações DTD DTDs descrevem informações vitais sobre a estrutura de um documento. Podemos especificar os seguintes tipos de declarações num DTD: Elementos permitidos no documento, bem como os tipos de dados que podem apresentar; Atributos que podem ser associados com cada elemento; Entidades que são permitidas no documento; Notações que são permitidas para uso com entidades externas. Qualquer coisa que não for declarada no DTD não será permitida no documento XML. DTD Declaração de Elementos <!ELEMENT >: ANY: dados textuais ou elementos-filhos. #PCDATA: apenas dados textuais. <!ELEMENT AUTOMOVEL (modelo,marca,ano)> <!ELEMENT MODELO (#PCDATA)> <!ELEMENT MARCA (#PCDATA)> <!ELEMENT ANO (#PCDATA)> Número de ocorrências de elementos-filhos: +: podem aparecer um ou mais elementos-filhos; *: podem aparecer zero ou mais elementos-filhos; ?: podem aparecer zero ou um elemento-filho; |: escolha de um elemento-filho alternativo; ( | ): grupos de elementos-filhos. Elementos vazios Comentários DTD Atributos: são usados para especificar informações adicionais sobre um dado elemento: Formados por um par: NOME/VALOR; <!ATTLIST elemento atributo tipo valor_padrão> Tipo: determina os valores aceitáveis para o atributo: • CDATA: cadeia de caracteres; • Enumeração: lista de valores possíveis para escolha de apenas um; • NMTOKEN ou NMTOKENS: valores que seguem as regras de nomenclatura XML; • ID: identifica elementos no documento de maneira única; • IDREF: elemento que tem um atributo que faz referência ao ID de outro; permite conectar elementos; • ENTITY/ENTITIES: associa dados externos ao documento; • NOTATION: notação para identificar formato de dados não-XML. DTD xml:space: descreve como espaços em branco são tratados no elemento. xml:lang: indica a linguagem com a qual o conteúdo do elemento é escrito. Valores padrão (default) do atributo: #REQUIRED: atributo obrigatório; #IMPLIED: atributo opcional; #FIXED: atributo com valor fixo que não pode ser alterado. Entidades: Podem ser um arquivo, um registro num banco de dados, o resultado de um processamento ou qualquer item que contenha dados externos ao documento. DTD vs. XML Schemas Encontra-se em desenvolvimento no W3C um padrão denominado XML Schemas que deve substituir o DTD. Ou contrário do DTD, no XML Schemas a definição do documento segue as mesmas regras de XML. XML Schemas Desde que a recomendação XML 1.0 foi finalizada em fevereiro de 1998, o W3C tem trabalhado em uma especificação alternativa para substituir o DTD para descrever esquemas. O grupo de trabalho “W3C XML Schema” está focando em três áreas de melhoria: Os esquemas devem ser escritos usando a sintaxe XML, assim nos permitindo usar as mesmas ferramentas que costumamos usar para processar documentos XML. Deve ser definido um novo padrão de esquemas para suportar tipos de dados comuns, como numérico, data e moeda; como também tipos de dados definidos pelo usuário. Este novo tipo de esquema moveria a tarefa de validação dos dados do aplicativo para o interpretador XML, onde os dados são acessíveis por todos os programas que lêem documentos XML. O novo padrão de esquemas deve suportar modelos de conteúdo aberto. Esquemas <Schema name=“bookSchema_v_1.2”> <ElementType name=“book”> <element type=“id”/> <element type=“price”/> <element type=“author”/> <element type=“title”/> <element type=“grade.level”/> </ElementType> <ElementType name=“price” dt:type=“float” required=“yes”/> <ElementType name=“id” dt:type=“string” required=“yes”/> ... </Schema> XML Schemas - Datatypes O W3C está trabalhando em uma especificação chamada Datatypes para DTDs (DT4DTD), o que adicionará suporte a tipos de dados para o DTD. Esta é uma correção para a sintaxe do DTD, mas permitirá aos usuários que queiram continuar a usar o DTD ter acesso a tipos de dados mais complexos. Os interpretadores XML deverão suportar este padrão para que ele possa ser útil. Algumas Tecnologias XML CSS – Folhas de Estilo em Cascata XPath – XML Path Language Definem regras para transformação de documento, associando uma saída com uma entrada. XSLT – XSL Transformations Permite o endereçamento interdocumentos. XSL – Extensible Stylesheet Language Permite o endereçamento de subconjuntos em um único documento (intradocumento). XPointer – XML Pointer Language É uma linguagem de descrição que define as regras pelas quais um navegador exibirá um documento HTML ou XML. Define uma linguagem de programação baseada em XML para expressar regras de transformação de uma classe de documentos XML para outra. BizTalk Server – Servidor para Transformação XML. XSL Extensible Stylesheet Language XSL é um recurso de propósito geral usado para transformar e formatar documentos XML. A transformação se refere a mudar um documento XML para outro documento XML ou outro tipo de documento (p.ex. HTML). A formatação se refere à exibição visual do documento XML. A transformação é útil se a sua empresa usa um esquema para documentos XML e seus fornecedores usam esquemas diferentes. Você pode empregar XSL para traduzir um documento XML que usa um esquema em outro que usa outro esquema. XSL XSLT Trocando Informações Fornecedor www.empresa.com.br Navegador WEB Catálogo XML Catálogo XML Folha de Estilo XSL Esquema XML Banco de Dados BizTalk O que acontecerá se centenas de companhias diferentes criarem seus próprios esquemas para descrever uma fatura? Os esquemas poderiam conter os mesmos elementos, mas cada esquema poderá usar nomes diferentes para os elementos. Cada documento teria uma estrutura diferente, tornando difícil o compartilhamento de informações entre as empresas que desejam realizar negócios. Se cada parceiro de negócio usar seu próprio esquema, você precisaria escrever um programa diferente para trabalhar com cada documento XML, de cada parceiro de negócio. BizTalk A estrutura do BizTalk fornece um conjunto de regras e um conjunto de tags para criar esquemas para negócios eletrônicos business-tobusiness (B2B). BizTalk foi criado para facilitar o uso de XML construindo esquemas que parceiros de negócio podem compartilhar. Um conjunto comum de regras para criar esquemas promoverá a criação de mais esquemas. Com isso, torna-se mais fácil para os parceiros de negócio concordar com um esquema comum para usar em suas transações. BizTalk Para processar documentos BizTalk, você precisa de um servidor BizTalk (BFC). BizTalk permite que vendedores de software independentes (ISVs) e desenvolvedores criem facilmente um mapa do processo de negócio. Desta forma torna-se possível a adoção mais rápida do intercâmbio eletrônico de informações por uma larga variedade de indústrias que já estão usando XML. BizTalk Especificação de documento independente: BizTalk é um conjunto de tags XML que fornece uma definição para trocar documentos entre dois sites e invocar um processo de cada lado. BizTalk se parece com um envelope virtual para enviar documentos comerciais entre parceiros de negócio. BizTalk.org: é um Web Site que fornece informações para se aprender sobre tecnologias de comércio eletrônico em geral, com ênfase particular sobre XML e BizTalk. BizTalk Server Para processar seus documentos BizTalk, você precisará de um servidor BizTalk, que é o software que lê documentos BizTalk e então faz algo inteligente com eles. Um servidor BizTalk pode ser escrito em qualquer linguagem em qualquer plataforma computacional. Várias companhias estão trabalhando em servidores que processam documentos BizTalk e os integram com sistemas corporativos legados ou ERPs. Projeto de Fluxo de Informações Inter-organizacionais Negócios Eletrônicos via XML e BizTalk Fabricante Fornecedor XML Web Services Evolução das Aplicações Web: Acessíveis por outros computadores, não só por pessoas como os Web Sites; Transformam “páginas Web” em componentes reutilizáveis ou serviços; Podem ser fornecidos e/ou consumidos; Permitem transações seguras através de parceiros de negócio. XML Web Services Nova metodologia de integração: Utiliza interações XML entre sistemas; Baseados em padrões abertos, nativos da Internet; Trabalham sob qualquer sistema operacional, linguagem de programação ou rede de comunicação; É possível expor o sofware existente como um Web Service. Sistemas aplicativos distintos podem realmente trocar dados entre si de forma automática. XML Web Services As informações da Web tradicional só podem ser acessadas por usuários humanos; XML Web Services são uma evolução para o acesso a serviços e informações na Web, de forma automática e programada; XML Web Services trabalham como componentes de software; XML Web Services tornam possível que um sistema aplicativo “converse” com qualquer outro sistema aplicativo, sem requerer nenhuma intervenção humana. XML Web Services Padrão simples, aberto e largamente suportado pela indústria: Publicar, Localizar e Usar Serviços: UDDI Interações entre serviços: SOAP Formato universal de dados: Padrão universal de comunicação: XML Internet UDDI: Universal Description, Discovery and Integration Ferramentas Clientes Web Services Servidores Informações, Soluções e Negócios XML Web Services Endereços Interessantes Site do W3C: http://www.w3c.org/ Site sobre XML: http://www.xml.com/ Site sobre BizTalk: http://www.biztalk.org/ Site MS BizTalk: http://www.microsoft.com/biztalk/ Demo MS BizTalkServer 2000: http://www.microsoft.com/biztalk/code/demo2002/frame. html Demo IBM WebSphere: http://www3.ibm.com/software/webservers/studio/wsaddemo.html Demos Oracle (vários, inclusive Web Services): http://www.oracle.com/ip/index.html?think9i_appdev.html Site da Sun: http://www.sun.com Banco Central do Brasil – Sistema Brasileiro de Pagamentos - http://www.bancocentral.gov.br Fim Obrigado!