Criando documentos XML
|
|
- Laís de Carvalho Laranjeira
- 7 Há anos
- Visualizações:
Transcrição
1 CEFETES Unidade da Serra Coordenadoria de Informática Prof. Mateus Barcellos Costa Notas de Aula XML Última Atualização: Criando documentos XML Introdução <?xml version='1.0' encoding='utf-8'?> A definição acima denomina-se declaração do documento e deve ser o primeiro elemento de um documento XML. No exemplo, a declaração está dizendo que: documento é compatível com a versão 1.0 de XML O documento utiliza o padrão de codificação de caracteres utf de 8 bits. Este padrão não codifica acentos e c cidilha. Se quisermos usar um padrão de codificação que aceite acento podemos usar o padrão ISO Comentário em XML são elementos que devem ser ignorados pelo parser a ser utilizado. O texto que segue é um comentário. <!--COMENTÁRIOS --> Depois da declaração, um documento XML define exatamente 1 elemento denominado elemento raiz (root element). Qualquer outro elemento dentro do documento deverá estar contido dentro do elemento raiz. A definição do elemento raiz e de qualquer outro elemento será feita definindo-se uma tag. Por exemplo, o elemento slideshow que a seguir será o nosso elemento raiz. <slideshow> </slideshow> Todo elemento deve ser terminado por sua tag de fim. Note que XML é sensível ao caso. Assim a tag final deve ser exatamente como a inicial. Introduzindo Atributos a um Elemento A apresentação de slides possui uma série de itens de dados. Como nenhum destes itens requer estrutura, é natural definí-los como atributos do elemento slideshow. Para definir estes atributos podemos fazer como segue: <slideshow title="apresentação de Slides" date="data da publicação" author=" Nome do autor" >
2 </slideshow> Quando criamos uma tag ou um atributo podemos usar os caracteres menos (-) underline ( _ ), dois pontos (:) ou ponto (.), além de números e letras Valores para os atributos são sempre colocados entre aspas. Conjuntos de atributos nunca são separados por vírgula ",". Adicionando Elementos aninhados XML permite dados hierarquicamente estruturados. Isso significa que um elemento pode conter outros elementos. No exemplo abaixo adicionamos um elemento slide que contem um outro elemento denominado title. No elemento slide foi também definido o atributo type. O significado deste atributo é ressaltar o tipo de audiência do slide. <slideshow title="exemplo Apresentação de Slides" date="data da publicação" author=" Nome do autor" > <slide type="all"> <title>acordem para as grandes Novidades!</title> </slide> </slideshow> A diferença entre coisas que serão elementos (ex. title) e coisas que serão atributos (ex. type) é um importante aspecto deste ponto. Não existe uma regra exata para isso. Portando deve-se aplicar certas heurísticas. Destacamos aqui duas: A primeira heurística aqui é a questão da visibilidade. O título será uma coisa vista pela audiência. então ele será um elemento. O tipo, por outro lado, é algo que nunca estará presente. Logo, ele é um atributo. Outra forma de se pensar a respeito de atributos e elementos filhos de um elemento pai é imaginar que o elemento pai é um recipiente. O tipo do recipiente é um atributo do recipiente como, por exemplo, garrafa, caixa ou lata. Logo ele será o atributo do elemento pai. Já o título descreveria o conteúdo do recipiente, por exemplo, leite, cerveja ou chocolate. Logo ele não é um atributo do recipiente sendo representado neste caso como um elemento. Conforme citamos, não existe uma regra exata para esta escolha. Adicionando texto HTML XML permite definir qualquer tipo de TAG. Logo, faz sentido definirmos um conjunto de Tags semelhantes às tags HTML. O Padrão XHTML faz exatamente isto.
3 <slide type="all"> <title>visão Geral</title> <item>por que <em>novidades</em> são boas</item> </item> <item>quem <em>compra</em> Novidades</item> </slide> A definição acima especifica um slide usando a tag html <em></em> que enfatiza o texto entre elas (colocando em itálico). Adicionando Elementos Vazios Documentos XML devem ser obrigatoriamente bem-formados (well formed). Isso significa que: Toda tag deve possuir uma tag de fim ou ser uma tag vazia. Um elemento vazio é pode ser definido com o nome da tag terminando com a /. Por exemplo <item/> define um elemento item vazio. Um documento XML bem formado também precisa respeitar os aninhamentos. Por exemplo, <b><i> texto</i></b> é bem formada, ao passo que <b><i>texto</b></i> não é. Finalizando, o documento completo em XML para a apresentação de Slides pode ser visto abaixo <?xml version='1.0' encoding='utf-8'?> <slideshow title="exemplo de Apresentacao de Slides" date="data da publicacao" author=" Nome do autor" > <! Titulo do SLIDE --> <slide type="all"> <title>acordem para as Novidades!</title> </slide> <! Visao geral--> <slide type="all"> <title>visao Geral</title> <item>por que <em>novidades</em> sao boas</item> <item/> <item>quem <em>compra</em> Novidades</item> </slide> </slideshow>
4 Visão geral dos padrões e APIS para processamento de Documentos XML. Uma API (Interface de programa de aplicação Application Program Interface), fornece uma série de elementos de programação que permitem realizar uma atividade específica como, por exemplo processar arquivos XML, comunicar-se usando sockets ou acessar um banco de dados. As APIs para processamento de XML obedecem a certos padrões definidos, principalmente pela W3C World Wide Web Consortium. As APIs para acesso a documento podem ser: Em modo serial (SAX) Em modo aleatório (DOM) Antes de estudarmos estas APIS vamos ver brevemente alguns dos principais padrões de XML e tentar digerir esta verdadeira sopa de letras. Padrões básicos SAX Simple API for XML Este padrão materializa o protocolo de acesso serial a documento XML. SAX é a maneira mais rápida de se ler e escrever documento XML. SAX pode ser visto como um protocolo orientado a eventos. Isso porque, usando SAX, o manipulador de arquivos se associa a um parser SAX, que responde a ocorrência de eventos (tags, erros, etc) na leitura do documento ativando os métodos apropriados. DOM Document Object Model O Modelo de objetos para documentos (DOM) é um protocolo que converte documento XML em objetos de um programa. Após isto, os objetos podem ser manipulados como qualquer outro objeto do programa. O mecanismos do DOM é chamado de protocolo de acesso aleatório porque qualquer parte do documento pode ser visitada em qualquer tempo. Esta visita implica que com o DOM é possível modificar, remover ou adicionar dados ao documento. DTD Document Type Definiton DTD é uma parte da especificação de XML, sendo entretanto opcional. Um DTD especifica o conjunto de tags que podem ocorrer em um documento e os arranjos válidos destas tags. Um DTD portanto pode ser usado para verificar se um documento XML não está sendo escrito incorretamente. Pode também ser usado para verificar se a estrutura de um documento XML que está sendo lida é válida ou não. Um DTD pode ser explicitado no início do documento XML como parte do prólogo do documento ou ser uma entidade separada. Namespaces Namespaces permitem a construção de documentos XML utilizando um ou mais conjuntos de tags de forma modular. A principal função de um namespace é qualifica os nomes de forma a eliminar possíveis ambigüidades.
5 XSL - Extensible StyleSheet Language O Padrão XML especifica como identificar dados e não com apresentá-los. HTMl por outro lado permite definir como os dados são apresentados mas não o que são estes dados. XSL por sua vez possui as duas partes: XSTL - Padrão de transformação XSL-FO A parte que define objetos de formatação (flow objects). XSL FO permite definir múltiplas área em uma pagina e ligar umas com as outras. Quando a seqüência de texto é direcionada a uma coleção destas áreas, ela preenche a primeira área e depois automaticamente flui para a segunda área quando a primeira for totalmente preenchida. XSLT Padrão de transformação XSLT é basicamente um mecanismo de permite transformar documento XML em um formato de apresentação como, por exemplo, HTML, PDF ou OS. XPATH é mecanismo de endereçamento que pode ser usado para construir as instruções de transformação Fazendo um dump do documento através de um Parser SAX. Um parser SAX é geralmente utilizado para obter os dados de um documento XML para realizar algum tipo de processamento com os mesmo. Aqui utilizaremos o parser didaticamente, para ler o documento XML e apresentar os dados que estão dentro do mesmo. O parser será definido na aplicação denominada Echo.java O esqueleto da classe e as importações necessárias são mostradas a seguir: import java.io.*; import org.xml.sax.*; import org.xml.sax.helpers.defaulthandler; import javax.xml.parsers.saxparserfactory; import javax.xml.parsers.parserconfigurationexception; import javax.xml.parsers.saxparser; public class Echo extends DefaultHandler { static private Writer out; public Echo() { public static void main(string argv[]){ if (argv.length!= 1) { System.err.println("Usage: cmd filename"); System.exit(1); try { // Set up output stream out = new OutputStreamWriter(System.out, "UTF8"); catch (Throwable t) { t.printstacktrace();
6 System.exit(0); Analisando a classe echo vemos: O método main foi especificado para ler o argumento de entrada (nome do arquivo a ser processado) Foi configurado o outputstream (out) onde será escrita a saída. Para utilizarmos o parser, a principal interface usada é a ContentHandler. Esta interface define uma série de operações usadas em resposta aos diversos eventos que ocorrem no parsing. A forma mais fácil de implementarmos uma interface ContentHandler é estendermos a classe DefaultHandler. Vejam no código acima que a classe Echo estende (herda) a classe DefaultHandler. A seguir adicionamos o código necessário para realizar o parser: public static void main(string argv[]){ if (argv.length!= 1) { System.err.println("Usage: cmd filename"); System.exit(1); // Use uma instancia de Echo como o SAX EventHandler DefaultHandler handler = new Echo(); // Usa o parser SAX default (sem validação) SAXParserFactory factory = SAXParserFactory.newInstance(); try { // Configura a saída out = new OutputStreamWriter(System.out, "UTF8"); // Processa a entrada SAXParser saxparser = factory.newsaxparser(); saxparser.parse( new File(argv[0]), handler ); catch (Throwable t) { t.printstacktrace(); System.exit(0); O código que segue implementa alguns métodos auxiliares para a apresentação do documento. São eles, o método emit que apresenta uma string s na saída out e o método nl que imprime uma mudança de linha em out. private void emit(string s)
7 throws SAXException { try { out.write(s); out.flush(); catch (IOException e) { throw new SAXException("I/O error", e); private void nl() throws SAXException { String lineend = System.getProperty("line.separator"); try { out.write(lineend); catch (IOException e) { throw new SAXException("I/O error", e); A seguir temos as implementações dos métodos startdocument, enddocument, starelement e endelement definidos na interface DefaultHandler. public void startdocument() throws SAXException { // emit("<?xml version='1.0' encoding='utf-8'?>"); nl(); public void enddocument() throws SAXException { try { nl(); out.flush(); catch (IOException e) { throw new SAXException("I/O error", e); public void startelement(string namespaceuri, String sname, // simple name (localname) String qname, // qualified name Attributes attrs) throws SAXException { String ename = sname; // element name if ("".equals(ename)) ename = qname; // namespaceaware = false emit("<"+ename); if (attrs!= null) { for (int i = 0; i < attrs.getlength(); i++) { String aname = attrs.getlocalname(i); // Attr name if ("".equals(aname)) aname = attrs.getqname(i); emit(" "); emit(aname+"=\""+attrs.getvalue(i)+"\"");
8 emit(">"); public void endelement(string namespaceuri, String sname, // simple name String qname // qualified name ) throws SAXException { emit("</"+sname+">"); public void characters(char buf[], int offset, int len) throws SAXException { String s = new String(buf, offset, len); emit(s); Substituindo e Inserindo Texto em documentos XML Tratando caracteres especiais Entidades Uma entidade em XML é uma estrutura ou texto que possui um nome. Referenciando-se uma entidade pelo seu nome causa a inserção da entidade no documento no local onde a referência foi feita. Para se criar um referência a uma entidade, o nome da entidade e colocado entre os caracteres & (ampersand e comercial) e ; (semicolon ponto e vírgula), como: &nomedaentidade; Entidades predefinidas: Uma referencia a uma entidade como, por exemplo, & Esta entidade se refere a um texto que irá substituir a referência no documento, como uma macro em C. Existem as seguintes entidades predefinidas para caracteres especiais: Caractere Referência & & < < > > " " ' ' Caracteres podem ser referenciados com nomes de entidades se necessário. Nestes casos o caractere ser representados pelo # seguido pelo unicode que o representa. Por exemplo, A representa a letra A. Usando referências a entidades.
9 Suponha que você deseja inserir o texto Tamanho do Mercado < Previsto O problema surge por que quando o parser ver o caractere < ele pensará que está sendo iniciada uma nova tag. E procurará pelo nome da tag. Para contornar este problema substituímos o < pela referência < Tratando Texto com sintaxe parecida com XML Quando partes do texto incluem muitos caracteres especiais à sintaxe XML, pode se tornar inconveniente ficar inserindo muitas referências a entidades. Para estas situações pode-se usar uma seção CDATA Em uma seção CDATA espaços em branco são considerados e nenhum caractere é interpretado como caractere especial de XML. Um seção CDATA inicia com <![CDATA[ e termina com ]]> Exemplo: <slide type="tech"> <title>how it Works</title> <item>first we fozzle the frobmorten</item> <item>then we framboze the staten</item> <item>finally, we frenzle the fuznaten</item> <item><![cdata[diagram: ]]></item> </slide> frobmorten < fuznaten <3> ^ <1> <1> = fozzle V <2> = framboze Staten+ <3> = frenzle <2> No exemplo acima, o diagrama é tratado inteiramente como se fosse uma cadeia de caracteres. Definindo Data Types Conforme vimos até agora, o parser só verifica o fato do documento XML ser bemformado. Entretanto, podemos inserir regras que de verificação sintática para os documentos por meio de DTDs: Data Type Definition. DTD permitem verificar se um documento bem formado é Válido. O Documento abaixo é um DTD., que permite definir uma gramática para um documento XML. <!-- XML declaration --> <?xml version='1.0' encoding='utf-8'?> <!-- DTD for a simple "slide show". --> <!ELEMENT slideshow (slide+)>
10 <!ELEMENT slide (title, item*)> <!ELEMENT title (#PCDATA)> <!ELEMENT item (#PCDATA item)* > O item slide+ indica os conteúdos válidos para o elemento slideshow. Neste caso um ou mais elementos do tipo slide. Os qualificadores podem ser +,? ou * Qualificador Nome? * + Interrogação - Question Mark Asterisco - Asterisk Mais - Plus Sign Significado Opcional (zero ou um) Zero ou mais Um ou mais Pode também haver aninhamento de parênteses nos itens. Por exemplo ((title, image)+) Nas declarações acima definimos o tipo do elemento slide e os tipos que constituem este elemento: title e item A declaração de title indica que seu conteúdo é formado puramente por conjuntos de caracteres processáveis (Parsed Character Data - PCDATA). O caractere # indica que o que segue é uma palavra reservada e não um elemento. Na declaração item a " " indica a condição OU, indicando que um PCDATA ou um item podem ocorrer. Limitação Seria interessante se pudéssemos especificar se um item contem por exemplo um PCDATA ou um PCDATA seguido de um item. Sintaticamente esta expressão ficaria assim: <!ELEMENT item (#PCDATA (#PCDATA, item+)) > Infelizmente esta especificação incorre em um erro pois, assim que o parser encontrar um #PCDATA ele vai tentar encontrar um item. Isso ocorre porque ele não consegue saber se o PCDATA que encontrou é da expressão #PCDATA ou de (#PCDATA,item+) Definições duplas também não funcionam: <!ELEMENT item (#PCDATA) > <!ELEMENT item (#PCDATA, item+) > Neste caso o Parser gera um warning e a ultima declaração é ignorada.
11 Também não existe forma de especificar posteriormente o tipo de conteúdo esperado quando PCDATA é usado. Não é possível especificar se o dado é uma seqüência de dígitos ou um formato de data, por exemplo. Em DTDs não existe também nenhum sentido de hierarquia. Por exemplo, a definição do elemento title para o slide aplica-se totalmente ao título de um item. Digamos que se queira usar a mesma definição diferenciando apenas uma característica de um ou outro. Por exemplo, o tamanho do texto quando o documento for apresentado. Isto não é possível, a não ser que se defina dois elementos distintos (slide-title e item-title). A falta de hierarquia força a introdução de "hierarquia hifenizada" (hyphenization hierarchy). Estas limitações são as motivações fundamentais para o desenvolvimento de padrões de especificação de esquemas (XML Schema). ANY e EMPTY A utilização de ANY em um elemento indica que este elemento pode conter qualquer outro elemento definido ou PCDATA. A especificação EMPTY indica que um elemento não contem nenhum elemento. Referenciando o DTD Quando o DTD é descrito em um arquivo separado do documento XML associado este precisa ser referenciado. Para referenciar o DTD deve ser adicionada uma linha no documento XML como a especificada abaixo: <!DOCTYPE slideshow SYSTEM "slideshow.dtd"> <slideshow.. A tag DOCTYPE indica que o documento é um slideshow. Ou seja o documento consiste de um slideshow e de todos os elemento de dentro dele. A tag DOCTYPE tem que ocorrer depois da declaração XML e antes do elemento raiz. Um DTD pode ser colocado internamente em um documento XML. Da seguinte forma: <!DOCTYPE slideshow SYSTEM "slideshow1.dtd" [...local subset definitions here... ]> Exercícios: 1. Cite duas semelhanças e duas diferenças entre XML e HTML. 2. Cite 3 cenários práticos onde XML pode ser aplicada. 3. Quais são as regras que um documento XML bem-formado deve seguir? 4. Analise o documento abaixo e responda às questões 4.1 a 4.5.
12 <artigo data= 01/02/2006 data= 01/02/2006 > <autor nome= João sobrenome= Silva /> <autor nome= José sobrenome= Silva /> <titulo>introdução a XML</titulo> <resumo>este artigo trata dos conceitos de XML. O que descrevemos aqui é tão verdade quanto 5<4</resumo> </artigo> 4.1. O documento acima é um documento bem formado? Se não, por quê? 4.2. Como seria possível usar o símbolo < no texto 5<4 para que não houvesse erros na hora do parsing? Escreva pelo menos duas maneiras diferentes Quem é o primeiro autor deste artigo? Nomes Elementos e Atributos em XML são referenciados por seus nomes. Para garantir que estes nomes seja interpretados de forma não ambígua, tanto elementos e atributos utilizam URIs (Uniform Resource Identifiers). URIs são utilizadas para garantir que conflitos de nomes não irão ocorrer em documentos XML contendo elementos e atributos vindos de diferentes fontes e com diferentes escopos. Uma URI pode ser tanto um URN (Uniform Resource Name) ou um URL (Uniforme Resource Locator). Um URN é um identificador independente de localização, como, por exemplo um UUID (Universally Unique Identifier). Um UUID é um número de 16 bytes com um formato canônico. O númereo 550e8400-e29b-41d4-a está no formato de um UUID. Já uma URL embute aspectos da localização no identificador. Em ambos os casos, quando uma URI é utilizada para tratar ambigüidades de nomes em XML, esta é tratada como um identificador de um conjunto abstrato de nomes chamados de Namespace. Não é necessário que uma referência a um namespace vá produzir alguma coisa diferente no documento XML. Preferencialmente, URIs serão simplesmente identificadores opacos. Namespaces são críticos para a produção de documentos XML que serão trocados entre múltiplas organizações, para identificar o contexto no qual elementos e atributos tem significado. Namespaces também podem ser usados para tratar ambigüidades de documentos internos de uma organização. Elementos e atributos XML possuem dois componentes: um nome local e o namespace URI. Um nome local deve obedecer a regra de produção de NCName (Ver em Um NCName inicia com caracteres alfabéticos ou anderscore seguido de 0 ou mais caracteres alfanuméricos, pontos, hífens ou underscores.
13 Seja o elemento < pessoas /> este elemento é identificado pelo seu nome local (pessoa) e não está relacionado com nenhum namespace. pessoas é um nome sobrecarregado que pode aceitar múltiplas interpretações, tanto por parte de seres humanos, quanto por aplicações de software. Dessa forma, é conveniente a utilização de namespaces. A forma seguinte introduz o namespace: < pessoas xmlns = uuid: 550e8400-e29b-41d4-a /> A declaração xmlns= uri-reference associa a referência URI ao namespace default do elemento. Dessa forma, o namespace definido aplica-se a todos os elementos filhos deste elemento. No documento abaixo, o namespace do elemento Pessoa é também uuid: 550e8400- e29b-41d4-a < pessoas xmlns = uuid: 550e8400-e29b-41d4-a <pessoa /> /pessoas> Elementos filhos podem ter seus próprios namespaces. < pessoas xmlns = uuid: 550e8400-e29b-41d4-a <pessoa xmlns = /> /pessoas> Se pessoa tiver elementos filho, o ns deles será e não o de pessoas. Para remover pessoa de qualquer ns definido em seus pais: < pessoas xmlns = uuid: 550e8400-e29b-41d4-a <pessoa xmlns = /> /pessoas> Para facilitar a edição de documentos, pode-se usar apelidos para namespaces. Uma declaração de um namesapce segue a seguinte forma: xmlns:myns = uri-reference O prefixo local,myns segue a regra de formação de NCNames e será o apelido local para o ns. Posteriormente este apelido pode ser usado para a construção de nomes de elementos e atributos. A combinação de apelidos com nomes locais deve aderir a regra de produção de nomes Qualificados (QName) (veja em /). Exemplo: < pessoas xmlns=
14 xmlns: meuns= > <meuns:pessoa /> </pessoas> Se o nome de um elemento é constituído apenas do nome local sem prefixo, o seu ns será o ns default.. Se um nome de um atributo é constituído apenas de seu nome local este atributo não está associado a nenhum ns, independente do ns default de seu elemento. Declarações de ns podem ser aplicadas na definição de nomes do elemento onde foi declarada, de seus atributos e seus filhos e atributos de seus filhos. Exemplo: A declaração < pessoas xmlns= xmlns: meuns= > <meuns:pessoa /> </pessoas> é equivalente a: < pessoas xmlns= <pessoa xmlns= /> </pessoas> e a: < x: pessoas xmlns: x= xmlns: meuns= > <meuns:pessoa /> </pessoas> No caso de haver declarações de ns diferentes com o mesmo prefixo, fica valendo a declaração mais interna (em termos de escopo). No exemplo: < x:a xmlns:x= > <x:b xmlns:x= > <x:c /> </x:b> <x:d /> </x:a> o ns de a e d é e o de b e c é Cada atributo de um elemento deve estar associado a um único par (ns, nomelocal). Assim, a declaração abaixo é correta: <a xmlns = xmlns:y= b: Olá y:b= Adeus /> O atributo b sem estar asociado a um ns é diferente de y:b, associado ao ns Já a declaração abaixo está incorreta: <a xmlns:x = xmlns:y=
15 x:b: Olá y:b= Adeus /> Exercícios Faça uma DTD que valide os documentos abaixo (uma única DTD deve ser usada para validar ambos os documentos). Adicione aos documentos XML a declaração da DTD (DOCTYPE): Documento 1: <publicacoes> <artigo> <autor>jose</autor> <autor estudante="true">joao</autor> <autor>maria</autor> <titulo>uma avaliação de desempenho em ambientes paralelos</titulo> <local-publicacao> <cidade>manaus</cidade> <congresso>sbbd</congresso> </local-publicacao> <ano>2003</ano> </artigo> <artigo> <autor estudante="true">carlos</autor> <autor>joao</autor> <autor>márcia</autor> <titulo>xml aplicado</titulo> <local-publicacao> <cidade>gramado</cidade> <congresso>sbbd</congresso> </local-publicacao> <ano>2002</ano> <obs>artigo muito bom sobre <assunto>xml</assunto></obs> </artigo> </publicacoes> Documento 2: <artigo> <autor>jose</autor> <autor estudante="true">jorge</autor> <autor>maria</autor> <titulo>xml e suas aplicações</titulo> <local-publicacao> <cidade>dallas</cidade> <periodico>tods</periodico> </local-publicacao> <ano>2003</ano> <obs>artigo muito bom sobre <assunto>xml</assunto></obs> </artigo> 3 Escreva uma DTD que siga os seguintes critérios: possui um elemento livro que pode conter título e vários autores título e autor são strings o elemento livro possui os seguintes atributos: i. gênero, cujo valor pode ser: romance, policial ou suspense ii. língua, cujo valor pode ser: inglês ou português, e o valor default é português iii. código, que é único no documento XML como um todo
16 4 Escreva um documento XML válido de acordo com a DTD declarada no exercício 3. 5 Qual a diferença entre os valores possíveis de um atributo declarado como CDATA e outro declarado como NMTOKEN? 6 Explique os conceitos de documento válido e documento bem-formado. Um conceito pode ser considerado pré-requisito para o outro? Se sim, qual é pré-requisito de qual? Escrevendo uma aplicação distribuída usando Sockets e XML O Código abaixo implementa um cliente para um socket. package client; import java.io.*; import java.net.*; import system.interface1; public class KnockKnockClient { public static void main(string[] args) throws IOException { Socket kksocket = null; PrintWriter out = null; BufferedReader in = null; +porta) porta é conexao try { /** A declaraçao * kksocket = new Socket(Interface1.HOST, 4444); * ria um novo objeto Socket com o nome de kksocket. * Um socket estará associado a um ponto final TCP (Host * Neste caso o HOST está configurado como localhost e a * a de número 4444, onde o servidor estár esperando por uma kksocket = new Socket(Interface1.HOST, 4444); /** * A Declaraçao * out = new PrintWriter(kkSocket.getOutputStream(), true); * obtem o stream de saída do socket e o associa ao objeto * PrintWriter out. Entao, para escrever no kksocket usaremos o objeto out. out = new PrintWriter(kkSocket.getOutputStream(), true); /** * A Declaraçao * in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream())); * obtem o stream de entrada do socket e o associa ao objeto BufferReader in. * Entao para lermos dados do kksocket usamos o objeto in.
17 in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream())); /** * Se o host nao for encontrado gera a exceçao abaixo catch (UnknownHostException e) { System.err.println("Don't know about host:" + Interface1.HOST + "."); System.exit(1); /** * Se o servidor nao estiver escutando a porta procurada ocorre a exceçao abaixo catch (IOException e) { System.err.println("Couldn't get I/O for the connection to:" + Interface1.HOST + "."); System.exit(1); /** * A declaraçao * BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); * Cria um objeto BufferReader para permitir a leitura do teclado BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String fromserver; String fromuser; /** * Enquanto a leitura do Socket retornar uma string nao nula continua no * while abaixo while ((fromserver = in.readline())!= null) { System.out.println("Server: " + fromserver); /* Se o servidor retornar a string Bye. o cliente termina if (fromserver.equals("bye.")) break; /* le a pergunta do usuário fromuser = stdin.readline(); if (fromuser!= null) { /* envia a pergunta do usuário para o servidor através do kksocket System.out.println("Client: " + fromuser); out.println(fromuser); out.close(); in.close(); stdin.close(); kksocket.close();
18 O Código do servidor é dado a seguir por duas classe uma classe que implementa um protocolo de conversação e a classe que implementa o socket Server package server; public class KnockKnockProtocol { private static final int WAITING = 0; private static final int SENTKNOCKKNOCK = 1; private static final int SENTCLUE = 2; private static final int ANOTHER = 3; private static final int NUMJOKES = 5; private int state = WAITING; private int currentjoke = 0; private String[] clues = { "Turnip", "Little Old Lady", "Atch", "Who", "Who" ; private String[] answers = { "Turnip the heat, it's cold in here!", "I didn't know you could yodel!", "Bless you!", "Is there an owl in here?", "Is there an echo in here?" ; public String processinput(string theinput) { String theoutput = null; if (state == WAITING) { theoutput = "Knock! Knock!"; state = SENTKNOCKKNOCK; else if (state == SENTKNOCKKNOCK) { if (theinput.equalsignorecase("who's there?")) { theoutput = clues[currentjoke]; state = SENTCLUE; else { theoutput = "You're supposed to say \"Who's there?\"! " + "Try again. Knock! Knock!"; else if (state == SENTCLUE) { if (theinput.equalsignorecase(clues[currentjoke] + " who?")) { theoutput = answers[currentjoke] + " Want another? (y/n)"; state = ANOTHER; else { theoutput = "You're supposed to say \"" + clues[currentjoke] + " who?\"" + "! Try again. Knock! Knock!"; state = SENTKNOCKKNOCK; else if (state == ANOTHER) { if (theinput.equalsignorecase("y")) { theoutput = "Knock! Knock!"; if (currentjoke == (NUMJOKES - 1)) currentjoke = 0; else currentjoke++;
19 state = SENTKNOCKKNOCK; else { theoutput = "Bye."; state = WAITING; return theoutput; package server; import java.net.*; import java.io.*; public class KnockKnockServer { public static void main(string[] args) throws IOException { ServerSocket serversocket = null; try { /** * A declaraçao * serversocket = new ServerSocket(4444); * tenta criar um objeto ServerSocket associado a porta 4444 * Se esta porta estiver em uso ocorre a exceçao IOException serversocket = new ServerSocket(4444); catch (IOException e) { System.err.println("Could not listen on port: 4444."); System.exit(1); Socket clientsocket = null; try { /** * A declaracao * clientsocket = serversocket.accept(); * é bloqueante e fica esperando até um cliente faça uma conexao. clientsocket = serversocket.accept(); catch (IOException e) { System.err.println("Accept failed."); System.exit(1); /** * Apos um cliente estabelecer uma conexao valida * o servidor cria um objeto out e um in para escrever e ler no * socket associado ao cliente conectado PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader( new InputStreamReader( clientsocket.getinputstream())); String inputline, outputline; /** o servidor cria também uma instancia do protocolo de conversaçao
20 * KnockKnockProtocol. Este é um protocolo ilustrativo de perguntas * e respostas. KnockKnockProtocol kkp = new KnockKnockProtocol(); outputline = kkp.processinput(null); out.println(outputline); while ((inputline = in.readline())!= null) { outputline = kkp.processinput(inputline); out.println(outputline); if (outputline.equals("bye.")) break; out.close(); in.close(); clientsocket.close(); serversocket.close(); Implementação de um sistema para envio e recebimento de Pedidos Neste sistema, o cliente irá enviar um pedido através da emissão de um documento pedido.xml para o servidor. O servidor recebe o pedido, processa e armazena o pedido em um HashSet. O código do cliente é o seguinte: package edi.client; import java.io.*; import java.net.*; import system.interface1; public class Emissor { public Emissor() { public static void main(string[] args) throws IOException { Socket kksocket = null; PrintWriter out = null; BufferedReader in = null; try { /** A declaraçao * kksocket = new Socket(Interface1.HOST, 4444); * ria um novo objeto Socket com o nome de kksocket. * Um socket estará associado a um ponto final TCP (Host +porta) * Neste caso o HOST está configurado como localhost e a porta é * a de número 4444, onde o servidor estár esperando por uma conexao kksocket = new Socket(Interface1.HOST, 4444);
21 /** * A Declaraçao * out = new PrintWriter(kkSocket.getOutputStream(), true); * obtem o stream de saída do socket e o associa ao objeto * PrintWriter out. Entao, para escrever no kksocket usaremos o objeto out. out = new PrintWriter(kkSocket.getOutputStream(), true); /** * A Declaraçao * in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream())); * obtem o stream de entrada do socket e o associa ao objeto BufferReader in. * Entao para lermos dados do kksocket usamos o objeto in. in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream())); /** * Se o host nao for encontrado gera a exceçao abaixo catch (UnknownHostException e) { System.err.println("Nao encontrei o host:" + Interface1.HOST + "."); System.exit(1); /** * Se o servidor nao estiver escutando a porta procurada ocorre a exceçao abaixo catch (IOException e) { System.err.println("Nao obtive uma conexao com o servidor no host:" + Interface1.HOST + "."); System.exit(1); /** * A declaraçao * BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); * Cria um objeto BufferReader para permitir a leitura do teclado BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String fromserver; String fromuser; String linha; BufferedReader pedido = new BufferedReader(new FileReader("pedido.xml")); /** * Enquanto a leitura do Socket retornar uma string nao nula continua no * while abaixo System.out.println("Enviando o arquivo Pedido.xml.."); while ((linha = pedido.readline())!= null) { out.println(linha); System.out.println("Arquivo Pedido.xml enviado com sucesso..");
22 out.close(); in.close(); stdin.close(); kksocket.close(); A interface Interface1 especifica a constante HOST package system; public interface Interface1 { public static final String HOST = "LOCALHOST"; A implementação do Servidor envolve as seguintes classes: HashSet (from util) IOException (from io) Interface (from server) ColecaoDePedidos (from server) Interface() main() ColecaoDePedidos() Pedido (from server) 1 umpedido Receptador (from server) Receptador() recebepedido() * Item (from server) Processador (from server) DefaultHandler (from helpers) Attributes (from sax) Date (from util) -$out Writer (from io) SAXException (from sax) As classes Pedido e Item possuem os seguintes atributos e operações:
23 Pedido empresa : Logical View::java::lang::String data : Date cliente : Logical View::java::lang::String itens : HashSet getitens() getempresa() getdata() setcliente() setitens() setempresa() setdata() getcliente() AdicionaItem() Pedido() Item descricao : Logical View::java::lang::String marca : Logical View::java::lang::String embalagem : Logical View::java::lang::String quantidade : int getmarca() getdescricao() getquantidade() setembalagem() setmarca() setdescricao() setquantidade() getembalagem() Item() A seguir temos o código de cada classe implementada: Item package edi.server; public class Item { private String descricao; private String marca; private String embalagem; private int quantidade; public String getmarca() { return marca; public String getdescricao() { return descricao; public int getquantidade() { return quantidade; public void setembalagem(string embalagem) { this.embalagem = embalagem; public void setmarca(string marca) { this.marca = marca; public void setdescricao(string descricao) { this.descricao = descricao; public void setquantidade(int quantidade) { this.quantidade = quantidade;
24 public String getembalagem() { return embalagem; public Item() { Pedido package edi.server; import java.util.calendar; import com.sun.tools.javac.v8.util.set; import java.util.date; import java.util.hashset; public class Pedido { private String empresa; private Date data; private String cliente; private HashSet itens; public HashSet getitens() { return itens; public String getempresa() { return empresa; public Date getdata() { return data; public void setcliente(string cliente) { this.cliente = cliente; public void setitens(hashset itens) { this.itens = itens; public void setempresa(string empresa) { this.empresa = empresa; public void setdata(date data) { this.data = data; public String getcliente() { return cliente; public void AdicionaItem(Item item){ itens.add(item); public Pedido() { this.itens= new HashSet();
25 ColecaoDePedidos package edi.server; import java.util.hashset; public class ColecaoDePedidos extends HashSet{ public ColecaoDePedidos() { Receptador package edi.server; import java.net.*; import java.io.*; public class Receptador { public Receptador() { public Pedido recebepedido() throws IOException { ServerSocket serversocket = null; try { /** * A declaraçao * serversocket = new ServerSocket(4444); * tenta criar um objeto ServerSocket associado a porta 4444 * Se esta porta estiver em uso ocorre a exceçao IOException serversocket = new ServerSocket(4444); catch (IOException e) { System.err.println("Nao consigo escutar na porta: Ela deve estar ocupada"); System.exit(1); Socket clientsocket = null; try { /** * A declaracao * clientsocket = serversocket.accept(); * é bloqueante e fica esperando até um cliente faça uma conexao. clientsocket = serversocket.accept(); catch (IOException e) { System.err.println("Falha no Accept."); System.exit(1); /** * Apos um cliente estabelecer uma conexao valida * o servidor cria um objeto out e um in para escrever e ler no * socket associado ao cliente conectado PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
26 BufferedReader in = new BufferedReader( new InputStreamReader( clientsocket.getinputstream())); BufferedWriter doc= new BufferedWriter(new FileWriter("doc.xml")); String inputline, outputline; while ((inputline = in.readline())!= null) { doc.write(inputline); out.close(); in.close(); doc.close(); clientsocket.close(); serversocket.close(); Processador p= new Processador(); return p.processapedido("doc.xml"); Processador package edi.server; import java.io.*; import org.xml.sax.*; import org.xml.sax.helpers.defaulthandler; import javax.xml.parsers.saxparserfactory; import javax.xml.parsers.saxparser; import java.util.date; public class Processador extends DefaultHandler { static private Writer out; Pedido umpedido; public Processador() { umpedido = new Pedido(); public Pedido processapedido(string pedido){ DefaultHandler handler = this; SAXParserFactory factory = SAXParserFactory.newInstance(); try { out = new OutputStreamWriter(System.out, "ISO "); // Parse the input SAXParser saxparser = factory.newsaxparser(); saxparser.parse( new File(pedido), handler ); catch (Throwable t) { t.printstacktrace(); return this.umpedido;
27 private void emit(string s) throws SAXException { try { out.write(s); out.flush(); catch (IOException e) { throw new SAXException("I/O error", e); private void nl() throws SAXException { String lineend = System.getProperty("line.separator"); try { out.write(lineend); catch (IOException e) { throw new SAXException("I/O error", e); public void startdocument() throws SAXException { public void enddocument() throws SAXException { try { // nl(); out.flush(); catch (IOException e) { throw new SAXException("I/O error", e); public void startelement(string namespaceuri, String sname, // simple name (localname) String qname, // qualified name Attributes attrs) throws SAXException { Item umitem; String ename = sname; // element name if ("".equals(ename)) ename = qname; // namespaceaware = false if (ename.equals("pedido")){ this.umpedido = new Pedido(); name if (attrs!= null) { for (int i = 0; i < attrs.getlength(); i++) { String aname = attrs.getlocalname(i); // Attr if ("".equals(aname)) aname = attrs.getqname(i); if (aname.equals("empresa")) this.umpedido.setempresa(attrs.getvalue(i));
28 if (aname.equals("date")) this.umpedido.setdata(new Date(attrs.getValue(i))); if (aname.equals("cliente")) this.umpedido.setcliente(attrs.getvalue(i)); else if (ename.equals("item")){ umitem = new Item(); if (attrs!= null) { for (int i = 0; i < attrs.getlength(); i++) { String aname = attrs.getlocalname(i); // Attr name if ("".equals(aname)) aname = attrs.getqname(i); if (aname.equals("descricao")){ umitem.setdescricao(attrs.getvalue(i)); emit("descricao: " + attrs.getvalue(i)); if (aname.equals("marca")) umitem.setmarca(attrs.getvalue(i)); if (aname.equals("embalagem")) umitem.setembalagem(attrs.getvalue(i)); if (aname.equals("quantidade")) umitem.setquantidade(new Integer(attrs.getValue(i)).intValue()); umpedido.adicionaitem(umitem); public void endelement(string namespaceuri, String sname, // simple name String qname // qualified name ) throws SAXException { // emit("</"+sname+">"); // nl(); public void characters(char buf[], int offset, int len) throws SAXException { String s = new String(buf, offset, len); // emit(s);
29 Usando XSTL para apresentar os dados XSLT é uma linguagem para transformar documentos XML em outros documentos XML. XSL é abreviação de extensible Stylesheet Language (Linguagem de Folha de Estilos Extensível). O World Wide Web Consortium (W3C) começou a desenvolver o XSL porque havia uma necessidade linguagem de filha de estilos baseada em XML. XML não usa tags predefinidas (as tags podem ser ao "gosto do freguês") e os significados dessas tags são não "interpretáveis". A tag <table> pode significar uma tabela HTML ou um móvel, e o browser não sabe como mostrá-la. Deve haver algo então, que adicionado ao documento XML, descreve como o documento deve ser mostrado; e isso é o XSL! XSL consiste de 3 partes: XSLT é uma linguagem para transformar documentos XML XPath é uma linguagem para definir partes de um documento XML XSL-FO é uma linguagem para formatar documentos XML Pense em XSL como um conjunto de linguagens que podem transformar XML em XHTML, filtrar e ordenar dados XML, definir partes de um documento XML, formatar dados XML baseados nos valores dos dados, como mostrar valores negativos em vermelho, e exportar dados XML para mídias diferentes, como telas, papel ou voz. Transformações XSLT XSLT é a parte mais importante dos padrões XSL. Ele é a parte do XSL usada para transformar um documento XML em outro documento XML, ou um outro tipo de documento que é reconhecido por um browser, como HTML e XHTML. Normalmente XSLT faz isso transformando cada elemento XML em um elemento (X)HTML. XSLT também pode adicionar novos elementos no arquivo de saída, ou remover elementos. Ele pode rearranjar e ordenar elementos, testar e tomar decisões sobre quais elementos mostrar, e muito mais. Um modo comum de descrever o processo de transformação é dizer que o XSLT transforma uma árvore de origem XML em uma árvore de resultado XML. Declarando um documento XSL O elemento raiz que declara o documento a ser uma folha de estilos XSL é <xsl:stylesheet> ou <xsl:transform>. Nota: <xsl:stylesheet> e <xsl:transform> são completamente sinônimos e um ou outro pode ser usado! A maneira correta de declarar uma folha de estilos XSL de acordo com a Recomendação W3C XSLT é:
30 <xsl:stylesheet version="1.0" xmlns:xsl=" ou: <xsl:transform version="1.0" xmlns:xsl=" Exemplo: Vamos supor que queiramos apresentar o conteúdo do documento XML abaixo: <?xml version="1.0" encoding="iso "?> <catalog> <cd> <title>empire Burlesque</title> <artist>bob Dylan</artist> <country>usa</country> <company>columbia</company> <price>10.90</price> <year>1985</year> </cd>... </catalog> O documento original está em cdcatalog.xml. Para tanto vamos criar uma folha de estilo (cdcatalog.xsl) com o seguinte conteúdo: <?xml version="1.0" encoding="iso "?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">title</th> <th align="left">artist</th> </tr> <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> </table> </body> </html> </xsl:template> </xsl:stylesheet>
31 Para ligar o documento XML com a folha de estilo deve-se adicionar a seguinte linha após a declaração do arquivo XML: <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> O elemento <xsl:template> Uma folha de estilos XSL consiste de um conjunto de regras chamados moldes (templates). Cada elemento <xsl:template> contém regras para aplicar quando um nó específico é encontrado. XSL utiliza moldes para definir como um elemento deve ser aproesentado. O atributo match é usado para associar um molde com um elemento XML. O atributo match também pode ser usado para definir um molde para toda uma seção de um documento XML (por exemplo, match="/" define o documento todo).. A folha de estilos XSL a seguir contém um molde para emitir o Catálogo de CDs XML de nosso exemplo: <?xml version="1.0" encoding="iso "?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <tr> <td>.</td> <td>.</td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet> A tag <xsl:template> define o início de um molde. O atributo match="/" associa (combina) o molde com a raiz (/) do documento XML de origem. O resto do documento contém o molde propriamente dito, exceto pelas duas últimas linhas que definem o fim do molde e o fim da folha de estilos. O elemento <xsl:value-of> O elemento <xsl:value-of> extrai o valor de um nó selecionado e pode ser usado para selecionar o valor de um elemento XML e adicioná-lo no resultado da transformação:
32 <?xml version="1.0" encoding="iso "?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <tr> <td><xsl:value-of select="catalog/cd/title"/></td> <td><xsl:value-of select="catalog/cd/artist"/></td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet> O valor do atributo select requerido contém uma expressão XPath. Ela funciona como a navegação num sistema de arquivos onde uma barra à frente (/) seleciona subdiretórios. O elemento <xsl:for-each> O elemento <xsl:for-each> permite a você fazer iterações (loops) em XSLT e pode ser usado para selecionar todo elemento XML de um conjunto de nós específico: <?xml version="1.0" encoding="iso "?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>title</th> <th>artist</th> </tr> <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> </table> </body> </html> </xsl:template> </xsl:stylesheet>
33 O for-each aparece no exemplo 6 Filtrando a saída Nós podemos filtrar a saída de um arquivo XML adicionando um critério ao atributo select de um elemento <xsl:for-each>. <xsl:for-each select="catalog/cd[artist='bob Dylan']"> Operadores de filtragem válidos são: = (igual)!= (diferente) < (menor que) > (maior que) <?xml version="1.0" encoding="iso "?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/"> <html> <body> <h2>my CD Collection</h2> <table border="1"> <tr> <th>title</th> <th>artist</th> </tr> <xsl:for-each select="catalog/cd[artist='bob Dylan']"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> O filtro está no exemplo 6 O elemento <xsl:sort> O elemento <xsl:sort> é usado para ordenar o resultado. Para gerar um arquivo XML como um arquivo XHTML, e ordená-lo ao mesmo tempo, simplesmente adicione um elemento sort dentro de um elemento for-each no seu arquivo XSL: <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> o sort aparece no exemplo 7.
34 O elemento <xsl:if> O elemento <xsl:if> contém um padrão que só será aplicado se uma condição específica for verdadeira. Para colocar um teste condicional frente ao conteúdo de um arquivo, simplesmente adicione um elemento <xsl:if> no documento XSL como abaixo: <xsl:if test="price > 10"> alguma saida... </xsl:if> O valor do atributo obrigatório test será a expressão a ser avaliada. O if aparece no exemplo 8. O elemento <xsl:choose> O elemento <xsl:choose> é usado em conjunto com <xsl:when> e <xsl:otherwise> para expressar múltiplos testes condicionais. Para inserir o teste condicional choose frente ao conteúdo de um arquivo XML, simplesmente adicione os elementos <xsl:choose>, <xsl:when> e <xsl:otherwise> no seu arquivo XSL como abaixo: <xsl:choose> <xsl:when test="price > 10">...algum código... </xsl:when> <xsl:otherwise>...algum código... </xsl:otherwise> </xsl:choose> Os arquivos xsl 9 e 10 apresentam o uso de choose.
Programação para Internet I Aulas 10 e 11
Programação para Internet I Aulas 10 e 11 Fernando F. Costa nando@fimes.edu.br XML Definição e origem extensible Markup Language (XML) é linguagem de marcação de dados que provê um formato para descrever
Leia maisMecanismos de Comunicação. Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/)
Mecanismos de Comunicação Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/) Sockets o que é? Um socket é um mecanismo de comunicação (dois sentidos) entre dois programas a funcionar
Leia maisSimbiose entre Tecnologias: XML e Java
Simbiose entre Tecnologias: XML e Java Marcio H. Zuchini USF - Itatiba mhzuchini@yahoo.com.br Oclair G. Prado Unisal - Americana oclair.prado@am.unisal.br Márcio Henrique Zuchini (Mestre em Engenharia
Leia maisSockets. Introdução. Introdução. Programando para redes em Java. mecanismo de alto nível para acessar recursos na Internet.
Sockets Programando para redes em Java Introdução n O URLs e URLConnections fornecem um mecanismo de alto nível para acessar recursos na Internet. n Em aplicações de servidor de cliente, o servidor fornece
Leia maisCamada de Transporte. Bruno Silvério Costa
Camada de Transporte Bruno Silvério Costa Serviços Oferecidos à camada superior Camadas de rede, transporte e aplicação. Primitivas do Serviço de Transporte As primitivas para um serviço de transporte
Leia maisTransformação de documentos XML
Transformação de documentos XML César Vittori cvittori@inf.ufrgs.br Outubro de 2000 Resumo XSLT: Transformações XSL. Transformação de documentos XML. XSLT Introdução XSLT: transformações XSL (inglês: XSL
Leia mais5a. Aula - XML 2013.2
5a. Aula -XML 2013.2 Introdução Criando Documentos XML Validando Documentos XML DTD ( Documents Type Definition) XML Schema ConsultandoXML com Xpath com XQuery Modularizando XML Namespaces Entities TransformandoXML
Leia maisXML. Prof. Júlio Machado
XML Prof. Júlio Machado julio.machado@pucrs.br INTRODUÇÃO O que é XML? É a sigla de Extensible Markup Language Linguagem de especificação para descrever dados Padrão aberto e largamente usado Definido
Leia maisExtensible Markup Language (XML) Júnio César de Lima Cedric Luiz de Carvalho. Instituto de Informática Universidade Federal de Goiás www.inf.ufg.
Extensible Markup Language (XML) Júnio César de Lima Cedric Luiz de Carvalho Technical Report - RT-INF_002-05 - Relatório Técnico June - 2005 - Junho The contents of this document are the sole responsibility
Leia maisXML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de
Capítulo 9: XML XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de documentos XML: XSLT Mapeamento entre documentos
Leia maisXML e XSL. Ciência da Computação DESENVOLVIMENTO DE APLICAÇÕES PARA WEB. Claudinei Dias email: prof.claudinei.dias@gmail.com
Ciência da Computação DESENVOLVIMENTO DE APLICAÇÕES PARA WEB XML e XSL Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com Fundamentos XML Extensible Markup Language Linguagem de marcação de dados
Leia maisMódulo 13. Socket. Programação Orientada a Objetos Java (Rone Ilídio)
Módulo 13 Socket Programação Orientada a Objetos Java (Rone Ilídio) O que é socket? Definição: Interface da camada de transporte que permite comunicação entre dois processos que podem estar em computadores
Leia maisextensible Markup Language (XML) XML é uma linguagem de anotação. XML utiliza tags para descrever informação.
extensible Markup Language (XML) XML é uma linguagem de anotação. XML utiliza tags para descrever informação. Em XML, os tags não são pré-definidos. Temos de definir os nossos tags. XML utiliza um Document
Leia maisXML - Extensible Markup Language
Por Sergio Crespo XML - Extensible Markup Language Extensible Markup Language (XML) é linguagem de marcação de dados (meta-markup language) que provê um formato para descrever dados estruturados. Isso
Leia maisProgramação para Internet I 4. XML. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt
Programação para Internet I 4. XML Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Standard do W3C (www.w3c.org) Formato de ficheiros de texto derivado de SGML (Standard Generalized Markup Language)
Leia maisXML XML. XML extensible Markup Language HTML. Motivação. W3C: World Wide Web Consortium XML 1.0. Mário Meireles Teixeira DEINF-UFMA
Mário Meireles Teixeira DEINF-UFMA Motivação extensible Markup Language W3C: World Wide Web Consortium http://www.w3.org 1.0 W3C Recommendation, 10/Fev/1998 (inicial) W3C Recommendation, 04/Fev/2004, 3
Leia maisCamada de Aplicação. Redes Industriais Prof. Rone Ilídio
Camada de Aplicação Redes Industriais Prof. Rone Ilídio Itens do Livro Redes de Computadores e a Internet, Kurose 5ª edição 2 Camada de Aplicação 2.1 Princípios de aplicações de rede 2.1.1 Arquiteturas
Leia maisXSL - extemsible Stylesheet Language. Prof. Antonio Almeida de Barros Jr.
XSL - extemsible Stylesheet Language Prof. Antonio Almeida de Barros Jr. Agenda Conceitos XSLT - XSL Transformations Iteração e Classificação Processamento Condicional Copiando Nodos Variáveis Estude de
Leia maisXMLs E INTEGRAÇÃO COM BANCOS DE DADOS
Faculdade de Tecnologia de Guaratinguetá. 07, novembro de 2011. XMLs E INTEGRAÇÃO COM BANCOS DE DADOS Abel Vieira, Cleber Lopes, Pedro Lemes saitovieira@gmail.com, cleber.campomori@gmail.com, pedro.lemes@gmail.com
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Leia maisXML: uma introdução prática X100. Helder da Rocha
XML: uma introdução prática X100 Helder da Rocha (helder@argonavis.com.br) Atualizado em setembro de 2001 1 Como criar um documento XML XML não tem comandos, nem operadores, nem funções, nem tipos Não
Leia maisProgramação Orientada por Objectos com Java. Ademar Aguiar. www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt. MRSC, Programação em Comunicações
Programação Orientada por Objectos com Java www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt 1 Java Networking java.net.* 141 Package java.net Java dispõe de diversas classes para manipular e processar informação
Leia maisRoteiro de Auxílio para as Atividades Práticas de Sistemas de Informação
Roteiro de Auxílio para as Atividades Práticas de Sistemas de Informação A linguagem XML no contexto do curso de Sistemas de Informação é utilizada principalmente para o armazenamento e a manipulação de
Leia maisXML XML. Motivação. Mário Meireles Teixeira DEINF-UFMA
XML Mário Meireles Teixeira DEINF-UFMA XML Motivação XML extensible Markup Language W3C: World Wide Web Consortium http://www.w3.org XML 1.0 W3C Recommendation, 10/Fev/1998 (inicial) W3C Recommendation,
Leia maishttp://rogerioaraujo.wordpress.com Série Rações Semanais Xpath e XSLT Rogério Araújo
http://rogerioaraujo.wordpress.com Série Rações Semanais Xpath e XSLT Rogério Araújo http://rogerioaraujo.wordpress.com Série Rações Semanais Xpath e XSLT Rogério Araújo Questões A persistência é o menor
Leia maisEstrutura Lógica DTD
Estrutura Lógica DTD Carina Dorneles dorneles@inf.ufrgs.br http://www.inf.ufrgs.br/ dorneles DTD Introdução DTD - Document Type Definition Conjunto de regras que definem a estrutura do documento Hierarquia
Leia maisEntrada e Saída Exercício. Linguagem Java. Adenilso da Silva Simão 01/09/05
01/09/05 Onde conseguir informações sobre os pacotes: http://java.sun.com/j2se/1.5.0/docs/api/ Tutorial http://java.sun.com/docs/books/tutorial/essential/ io/overview.html (II) Tanto a entrada quanto a
Leia maisFolhas de estilo. Jomi Fred Hübner jomi@inf.furb.br. (XSL e XPath) FURB / DSC
Folhas de estilo (XSL e XPath) Jomi Fred Hübner jomi@inf.furb.br FURB / DSC Fevereiro, 2004 XML Stylesheet Language (XSL) XSL é uma linguagem para descrever folhas de estilo para documentos XML. Transformer
Leia maisAnálise de Programação
Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou
Leia maisLógica de Programação e Algoritmos com exemplos na linguagem JAVA
Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Cap. 5 Programação Estruturada: Funções Conteúdo: 5.1 Programação estruturada ou modular... 66 5.2 Funções... 67 5.3 Passagem de parâmetros...
Leia maisRedes de Computadores II. Programação com Sockets em Python
v.2016 Redes de Computadores II Programação com Sockets em Python Prof. Ricardo Couto A. da Rocha rcarocha@ufg.br UFG Regional de Catalão Camada de Transporte Arquitetura TCP/IP APLICAÇÃO TRANSPORTE REDE
Leia maisUniversidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java
Guia da Sintaxe do Java TIPOS PRIMITIVOS DE DADOS DO JAVA São os tipos nativos de dados do Java, que podem ser usados na declaração de atributos, variáveis, parâmetros. Tipo primitivo Tamanho Valor padrão
Leia maisDocumentos XML 1/20. Exemplo de documento XML:
1/20 Documentos XML XML é a abreviatura de extensible Markup Language. É uma linguagem de marcas ou anotações como HTML. Mas a linguagem XML foi concebida para descrever informação enquanto que a linguagem
Leia maisUser Datagram Protocol
User Datagram Protocol UDP: Protocolo utiliza para distinguir para qual usuário ou aplicativo deve ser encaminhado um datagrama destinado a uma máquina que esteja executando mais de um processo. Problemas:
Leia maisProf. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1
INE5603 Introdução à POO Prof. A. G. Silva 13 de novembro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de 2017 1 / 1 Introdução à manipulação de arquivos Prof. A. G. Silva INE5603
Leia maisSimulado de Linguagem de Programação Java
Simulado de Linguagem de Programação Java 1. Descreva o processo de criação de programas em Java, desde a criação do código-fonte até a obtenção do resultado esperado, por meio de sua execução. Cite as
Leia maisNamespaces. Resumo Descrição de um padrão para construir documentos que incluem componentes de domínios diferentes, definidos em diferentes DTDs.
Namespaces Resumo Descrição de um padrão para construir documentos que incluem componentes de domínios diferentes, definidos em diferentes DTDs. Namespace É possível que um único documento XML contenha
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisSockets: Sumário. Resumo das Propriedades de UDP e de TCP
Sockets: Sumário Sockets TCP Modêlo. API de Java. API da biblioteca C. Avaliação Crítica de Sockets. 1 Resumo das Propriedades de UDP e de TCP Propriedade UDP TCP Abstracção Mens. Stream Baseado em Conexão
Leia maisTECNOLOGIA WEB INTRODUÇÃO CONSTRUÇÃO DE PÁGINAS ESTÁTICAS HTML / XHTML
INTRODUÇÃO CONSTRUÇÃO DE PÁGINAS ESTÁTICAS HTML / XHTML 1 INTRODUÇÃO TECNOLOGIA WEB Começaremos desvendando o poder do desenvolvimento de aplicações baseadas na Web com a XHTML (Extensible HyperText Markup
Leia maisREST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.
REST Representational State Transfer É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. Não é um padrão. Exemplo ASP.NET Web API namespace WebAPIApp.Models
Leia mais5 Tecnologias estudadas
5 Tecnologias estudadas Esse capítulo descreve as principais linguagens existentes para o desenvolvimento de ontologias para uso na Web. Essas linguagens são vistas como a infra-estrutura básica para o
Leia maisFEUP Faculdade de Engenharia da Universidade do Porto XSL. Porto, Maio de 2002. Gabriel David gtd@fe.up.pt. FEUP, Maio 2002 XML/XSL
1 FEUP Faculdade de Engenharia da Universidade do Porto XSL Porto, Maio de 2002 Gabriel David gtd@fe.up.pt Estilo vs Conteúdo 2 Reutilização de fragmentos de dados: o mesmo conteúdo pode ter um aspecto
Leia maisDados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.
2. Classes e Objetos Uma classe é um modelo que define os atributos e métodos comuns a um conjunto de objetos de forma encapsulada. Atributos são informações ou dados que descrevem, categorizam ou quantificam
Leia maisXML Schema. Vanessa Braganholo. Curso baseado em mini-cursos apresentados no SBBD. Autores: Carlos Heuser, Carina Dorneles e Vanessa Braganholo
XML Schema Vanessa Braganholo Curso baseado em mini-cursos apresentados no SBBD. Autores: Carlos Heuser, Carina Dorneles e Vanessa Braganholo XML Schema Utilizado para descrever a estrutura de um documento
Leia maisCETEC Centro Paula Souza
Atualização da Competição Maratona de Programação 2018 2º Semestre Finalidade Este documento tem por finalidade informar aos professores responsáveis pelos times das unidades participantes da Maratona
Leia maisSistemas de Informação: XML- Java
XL 1 : XL- Java Todos os exemplos bem como o conteúdo teórico tem por base o livro: Steven Holzner, SAS Teach Yourself XL, SAS Publishing, 2004 XL Java e XL 2 Documentos XL podem ser abordados de dois
Leia maisProf. Esp. Andrew Rodrigues 1
Prof. Esp. Andrew Rodrigues www.andrewrodrigues.com.br www.andrewrodrigues.com.br 1 PHP em Ação PHP é uma linguagem de programação que pode fazer todo o tipo de coisas: avaliar dados de formulários enviados
Leia maisArray em Java. Figura 1 - Exemplo de um array de inteiros
Array em Java 1. Objetivos Nesta lição, abordaremos Array em Java. Primeiro, definiremos o que é array e, então, discutiremos como declará-los e usá-los. Ao final desta lição, o estudante será capaz de:
Leia maisFundamentos da programação Parte - 1
Fundamentos da programação Parte - 1 1. Objetivos Nesta lição discutiremos as partes básicas de um programa em Java. Começaremos explicando as partes do programa Hello.java mostrado na última lição. Discutiremos
Leia maisNotas sobre XSLT. O modo correcto para declarar um documento xsl é:
Notas sobre XSLT XSLT é a abreviatura de extensible Stylesheet Language Tansformations. É uma linguagem para transformação de documentos xml. Permite transformar um documento xml noutro documento xml,
Leia maisDOM (Document Object Model)
DOM (Document Object Model) Modelo de dados para XML estrutura hierárquica (árvore) métodos de acesso (API DOM) principais classes de objetos document, node, nodelist e element execução de consultas e
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Pacotes e Encapsulamento Msc. Paulo de Tarso F. Júnior 1 Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes e interfaces
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia mais[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.
Cap. IV - Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and
Leia maisRedes de Computadores
Redes de Computadores Capítulo 2.7 e 2.8 - Camada de Aplicação Programação de sockets Prof. Jó Ueyama Março/2014 SSC0540-2014 1 Sockets TCP - Cliente Processo servidor já deve estar em execução. l Servidor
Leia maisOrientação a Objetos e Java
Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características
Leia maisExercícios de Revisão Java Básico
Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1
Leia maisIntrodução a classes e objetos. Prof. Marcelo Roberto Zorzan
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Aula de Hoje Abstração de Dados Classes e Objetos Definição de Métodos Métodos com parâmetro Abstração de Dados Processo mental através do qual
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisTratamento de Erros. Sérgio Luiz Ruivace Cerqueira
Tratamento de Erros Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Agenda Introdução Try, catch, finally Unchecked Exceptions Como levantar exceções Boas práticas O problema Calculadora numero1:
Leia maisLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos com exemplos na linguagem JAVA Cap. 4 Estruturas de Dados Homogêneas Vetores e Matrizes Conteúdo: 4.1 Variáveis compostas homogêneas... 55 4.2 Vetores... 56 Exercícios
Leia maisPalavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Leia maisTratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo
Tratamento de Exceções LPG II Java Tratamento de Exceções Introdução Princípios do tratamento de exceções em Java Cláusula try Cláusula catch Cláusula finally Hierarquia de exceções em Java Considerações
Leia mais<NOME>ABIAS FRANCISCO DE SOUZA</NOME> <CNPJCPF>68884087872</CNPJCPF> <NMATRICULA>101264</NMATRICULA>
1. ARQUIVO XML 1.1. O arquivo XML deverá possuir o seguinte formato: ABIAS FRANCISCO DE SOUZA 68884087872 101264
Leia maisRui Carneiro, Rui Pereira, Tiago Orfão
Geração de Gráficos SVG através de PHP Rui Carneiro, Rui Pereira, Tiago Orfão Faculdade de Engenharia da Universidade do Porto, R. Dr. Roberto Frias, 4200-465 Porto. {ei04073,ei04077,ei03102}@fe.up.pt
Leia maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisA composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)
Desenvolvimento de Sistemas Web A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Prof. Mauro Lopes 1-31 24 Objetivos Dando continuidade aos estudos sobre JSP,
Leia maisProf. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1
INE5603 Introdução à POO Prof. A. G. Silva 28 de agosto de 2017 Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de 2017 1 / 1 Comandos de decisão simples e compostas Objetivos: Utilização de controles
Leia maisNoções de XML. Henrique Silva Direção-Geral do Território FCUL, 12 e 19 de Outubro de 2017
Noções de XML Henrique Silva Direção-Geral do Território FCUL, 12 e 19 de Outubro de 2017 O que é o XML? Características XML significa Extensible Markup Language XML é uma linguagem de marcadores (tags)
Leia maisCapítulo 9 - Imagens. Imagens
Capítulo 9 - Imagens 9 Imagens EM JAVASCRIPT, É POSSÍVEL MANIPULAR COM AS IMAGENS DE UMA PÁGINA, alterando a URL que localiza o arquivo de imagem. Assim, pode-se trocar a imagem que está sendo exibida
Leia maisPrograma de Computador que funciona em Rede
Programa de Computador que funciona em Rede professor Robinson Vida Noronha 1 Paradigma Um programa rodando em rede é como uma loja. 2 Uma loja é composta por Vendedores Vendedores 3 Um loja deve servir
Leia maisMódulo III Introdução a XML
Módulo III Introdução a XML Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Modulo III XML SGML - Standard Generalized Markup Language XML - Extensible Markup
Leia maisUnidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano
Linguagem de Programação 1 Unidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano Objetivo: Desenvolver a habilidade de comentar código adequadamente INTRODUÇÃO Até o momento
Leia maisLinguagem Java - Introdução
Linguagem Java - Introdução Identificadores válidos resultado teste01 _numeroclientes $fortuna Identificadores Identificadores inválidos 101dalmatas 34 #x Palavras reservadas abstract assert*** boolean
Leia maisArquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;
1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e
Leia maisApêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:
Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.
Leia maisXML Básico. Murillo Vasconcelos Henriques B. Castro. 17 de maio de 2011
XML Básico Murillo Vasconcelos Henriques B. Castro 17 de maio de 2011 O QUE É? Sigla para extensible Markable Language É uma linguagem de marcação, assim como HTML Desenvolvida para ser auto explicativa
Leia maisFamiliarização com a ferramenta JavaCC
Ficha nº 2 Familiarização com a ferramenta JavaCC Estrutura do ficheiro JavaCC O JavaCC utiliza um ficheiro com a extensão.jj, onde são descritos, pelo utilizador, o léxico e a sintaxe da linguagem e gera
Leia maisJava Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)
Linguagem de Programação para Web Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Prof. Mauro Lopes 1-31 28 Objetivos Dando continuidade aos estudos sobre JSP, apresentaremos os
Leia maisHierarquia de classes. Veja as diversas classes do pacote
Entrada e Saída Introdução Input e Output fazem parte do pacote java.io Esse pacote tem uma quantidade grande de classes que dão suporte a operações de entrada e saída As classes básicas são InputStream
Leia maisLista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Leia maisJAVA. Professor: Bruno Toledo
JAVA Professor: Bruno Toledo Funcionamento de uma LP Em uma Linguagem de Programação (LP) como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. Código fonte em c Teste.c Gera código
Leia maisDTD. Vanessa Braganholo.
DTD Vanessa Braganholo braganholo@dcc.ufrj.br Curso baseado em mini-cursos apresentados no SBBD. Autores: Carlos Heuser, Carina Dorneles e Vanessa Braganholo Esquema XML Como em banco de dados relacionais
Leia maisTec. Prog. Internet II ADVANCEPG Prof. Andrea Garcia
Laços de Repetição for, as estruturas de controle alinhadas, o break e o continue no PHP Vamos continuar com o mesmo problema para quem não se lembra: Bart Simpson ficou novamente na detenção no final
Leia maisComo pôde verificar, a criação de um objecto do tipo File não cria o ficheiro em disco.
Folha 1-1 I/O em java (pakage java.io) A classe File A classe File (subclasse de Object) permite manipular os ficheiros e as directorias de um sistema de ficheiros. 1 - Substituindo o texto d:\\my_work\\
Leia maisNotas de Aula 09: Tratamento de exceções
Notas de Aula 09: Tratamento de exceções Objetivos da aula: Compreender o conceito de exceção Aprender a tratar exceções nos programas Entender a hierarquia das exceções Criar e lançar uma exceção proprietária
Leia maisXML: uma introdução prática <xml:introdução />
XML: uma introdução prática Helder da Rocha www.argonavis.com.br 1 Objetivos Oferecer uma visão geral da tecnologia XML Responder às questões Como implementar soluções de gestão de informações
Leia maisGestão e Tratamento da Informação
Namespaces Departamento de Engenharia Informática Instituto Superior Técnico 1 o Semestre 2007/2008 Outline 1 Porquê Usar Namespaces? 2 3 Resumo 1 Porquê Usar Namespaces? 2 3 Uma Definição Definição: Um
Leia maisInstituto Superior de Engenharia de Lisboa
Instituto Superior de Engenharia de Lisboa Introdução à Programação (PG) Docente: Pedro Viçoso Fazenda (pfazenda@cedet.isel.ipl.pt) Professor Responsável: Pedro Alexandre Pereira (palex@cc.isel.ipl.pt)
Leia maisNum sistema de objectos distribuídos, dois conceitos são fundamentais.
Folha 9-1 Java RMI - Remote Method Invocation No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus
Leia maisProcessamento de dados XML
Processamento de dados XML Vanessa Braganholo Vanessa Braganholo Introdução } Dois pontos básicos: } Como escrever um documento XML? } Como ler um documento XML? 2 Escrevendo um documento XML } Documentos
Leia mais