810 likes | 884 Views
Objetivos da Inovação do Curso. Tomar contato com recentes tecnologias para Internet: XML. Estimular novas áreas de trabalhos/pesquisas. Foco: tornar os sistemas interoperáveis, ou comunicáveis. É importante fazer usos de padrões abertos. Isto é, evitar padrões e software proprietários.
E N D
Objetivos da Inovação do Curso • Tomar contato com recentes tecnologias para Internet: XML. • Estimular novas áreas de trabalhos/pesquisas. • Foco: tornar os sistemas interoperáveis, ou comunicáveis. • É importante fazer usos de padrões abertos. Isto é, evitar padrões e software proprietários. • Há muitos padrões para atender melhor cada tipo de aplicação, fragmentando o alcance de cada um deles. XML ajuda a uni-los. • Apresentação de um projeto básico: • Será definido as linhas gerais do trabalho. • Espera-se que se identifique o uso de estruturas de dados. • O incremento de funcionalidades além do básico é bastante desejável. • Inclusão de documentação e relatório do trabalho.
XML eXtensible Markup Language Um alcance maior com a independência de plataformas
Rapidamente: Como é XML? <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE greeting [ <!ELEMENT greeting (#PCDATA)> ]> <greeting>Hello, world!</greeting> <?xml version="1.0"?> <!DOCTYPE greeting SYSTEM "hello.dtd"> <greeting>Hello, world!</greeting> PCDATA: Parseable character data Well-Formed XML Documents
XML • É um formato de marcação extensível para domínios de aplicação. • Teve origem no SGML e na experiência com HTML • Parser - faz uso extenso do analisador sintático. • DTD - Data Type Definition • Schema - alternativa com definição semântica enriquecida do DTD. • Xpath - XML Path Language • XSL - Extensible Stylesheet Language • XLL - XML Linking Language (Xlink + Xpointer + Xpath) • Namespace - similar ao namespace do C++ ou package do Java.
Onde XML é usado? • Melhor perguntar onde XML não é usado. • XML se aplica quando algo faz uso de: • (representação/especificação de) dados e conteúdos. • Comunicação, e-business, e-services (XML-RPC, SOAP, ebXML) • interface gráfica (XUL - ) • multimídia (SMIL - synchronized multimedia integration language) • makefile e arquivos de configuração (ex: Apache, Java 1.4)
XML por toda parte • DocBook • MathML • CML • VoiceXML • WML
Introdução + Tutorial + Referência em XML • Sites principais • www.w3.org, • www.startkabel.nl/k/xml/ • www.xml.com (org) • www.xmlhack.com • www.javacommerce.com/tutorial/xmldev/index.html • www.xml.org • Livros: • Desvendando XML (New Riders), Steven Holzner • Java XML (O’Reilly), Benoit Marchal • www.oreilly.com (capítulos gratuitos) • http://www.extensibility.com/resources/books_wrox.asp • NÃO COMPREM O “XML BLACK BOOK”.
Tutorial na Internet • http://www.w3schools.com/ • http://www6.software.ibm.com/developerworks/education/co-xmsg/co-xmsg-1-1.html • http://www-106.ibm.com/developerworks/education/tutorial-prog/parsing.html • http://www6.software.ibm.com/developerworks/education/wsbasics/index.html • XPath • http://geneura.ugr.es/~victor/cursillos/xml/XPath/ • http://www.sun.com/xml/developers/xsl/ • Namespace • http://www.simonstl.com/articles/namespaces/index.html • http://www.jclark.com/xml/xmlns.htm • http://www.xml.com/pub/a/2000/03/08/namespaces/index.html
Programas e códigos • Software • Java J2SE (J2SDK) (http://java.sun.com/j2se/1.4/) • www.apache.org (xml) • Editores de XML: XML Spy e www.xmleverywhere.com/cooktop/ • Exercícios práticos on-line: • http://zvon.org/xxl/XMLTutorial/General/book.html • Exemplos de uso de XML na Internet • http://www.posc.org/ebiz/xmlLive.shtml • http://technet.oracle.com/sample_code/content.html • http://www.sys-con.com/xml/source/ • http://newinstance.com/writing/javaxml/examples.html
Editoras - livros gratuitos • Livros da Sun: • Java: http://java.sun.com/docs/books/ • Xml: http://java.sun.com/xml/tutorial_intro.html • http://www.mindview.net/Books/DownloadSites • http://www.mcp.com/que/results_que.cfm?parameter=XML&scope=title • http://www.mcp.com/que/display_que.cfm?itemhdr=Sample%20Chapter&itemloc=chapter&item=0789724766 • http://www.oreilly.com/catalog/learnxml/chapter/ch02.html • http://www.oreilly.com/catalog/docbook/chapter/book/docbook.html • http://www.oreilly.com/catalog/orxmlapp/chapter/index.html • http://www.oreilly.com/catalog/javaxml/chapter/ch09.html • http://www.ibiblio.org/xml/books/bible/examples/ • http://www.extensibility.com/resources/books_wrox.asp • http://xmlwriter.net/books/xml_books.shtml
Buzz words • Componentes do XML: XSL, XLL, SAX, DOM, Xlink, XPointers • CGI tradicional: HTML, DHTML, JHTML, SHTML, XHTML • Markup Languages: MathML, MusicML, GML, CML, WML, -UML- • Ferramentas XML no Apache: Cocoon, Xalan, Xerces, • BD: JDBC-ODBC, JDO, RDBMS, ODBMS • Plataforma Java: Servlet, RMI, JavaBeans, JSP, EJB, JavaIDL, • Tiny HTML - Um subconjunto do HTML apropriado para Palm Pilots. • VoxML - The Motorola ML que permite interação voz-aplicação. • TTML - The Tagged Text ML é um subconjunto HTML desenvolvido p/ Nokia. • HDML - The Handheld Devices ML é uma versão simples de HTML para dispositivos de mão, handheld. • OMF - Weather Observation Markup Format codifica observações meteorológicas.
Projeto: Biblioteca de documentos Cliente Servidor Apache Páginas HTML Navegador HTML / JavaScript html form BD/Diretorio xml, pdf, ps Servlets xml API html
Tópicos e grupos • HTML - CSS - JavaScript (grupo A) • Especificação de Use Cases da interação do usuário (grupo A) • Java JDK - Servlet (grupo B) • Apache + Coccon + Tomcat (grupo B) • Editores de DTD, Schema, XSL (grupo C) • XML - XSL - XLL (Xpath - Xlink - Xpointer) (grupo C) • XML - DTD - DocBook - FOP (grupo D) • XML - Xquery - BD (JDBC) (grupo E) • XML - SMIL (grupo F) • Relatórios
HTML • Exemplo de upload em HTML: • http://www.w3.org/2000/09/webdata/xsv • Arquitetura de Web sites (Arquitetura de design) • http://www.ccuec.unicamp.br/treinamentos/webpro/ • http://www.ambysoft.com/userInterfaceDesign.pdf • Desenhar e definir as páginas da biblioteca digital: • organizar as telas de consultas conforme a interação por: palavras-chave, título, autor, ... • Usar CSS para apresentação e Javascript para a interação. • Criar a tela de entrada de documentos: como txt, doc, ps, pdf. • Permitir a criação de cadastro, definir o layout e os links preferido e salvá-los no site. • Interagir com o responsável do DTD para definir o conteúdo das telas.
Itens/sites relevantes para www • É desejável saber o que é http (www.whatis.com) • Tutorial/Primers sobre Html / JavaScript (Ramalho) • http://www.w3.org • http://www.ncsa.uiuc.edu/General/Internet/WWW/HTMLPrimer.html • http://www.htmlgoodies.com/ • http://training.oreilly.com/ • http://www.oreilly.com/catalog/jscript2/examples/ • http://developer.netscape.com/library/documentation/htmlguid/index.htm • Web-design • http://ituser.it.bton.ac.uk/staff/idd/ • http://info.med.yale.edu/caim/manual/contents.html
Interface do nosso “Portal” • Pesquisar por data, autor, titulo, palavras-chave • Data: período (maior, menor, entre), mês, ano. • Quantos resultados. • Palavras-chave: exato, palavras similares, (and, or) • Categoria/área do assunto. • Instituição de origem. • Incluir dicas sobre campos usando ToolTips http://webdeveloper.earthweb.com/pagedev/webjs/item/0,3602,12760_26671,00.html • Acessórios relevantes não mencionados aqui.
Computador Navegador Computador Estabelecer os possíveis casos de uso Consulta por autor Lista de resultados
Java • APIs do servidor Apache (Tópico XML) • Xerces - XML parsers • Xalan - XSLT stylesheet processors • Cocoon - XML-based web publishing • FOP - XSL formatting objects • Xang - Rapid development of dynamic server pages, in JavaScript • Servlets (Tópico servidor) • Software: Tomcat do Apache (http://jakarta.apache.org/tomcat/). • http://c2.com/cgi/wiki?ServletDesign • Interagir com HTML e XSL • Artigos: • http://www.xml-data-servers.com/ • http://65.1.136.127/developerlife/saxtutorial1/default.htm • http://www-106.ibm.com/developerworks/library/data-binding4/index.html
Editores • Artigo sobre editores de XML em geral • http://www-106.ibm.com/developerworks/java/library/x-matters6.html • Um dos melhores: XML Spy (http://www.xmlspy.com/) • Gratuitos: http://www.garshol.priv.no/download/xmltools/ • Pode usar WordPad para textos. • Pode usar NotePad para XML da MS. • Software em geral: http://www.xmlsoftware.com/
DTD • Definir as regras e o vocabulário do DTD. • Investigar linguagens baseadas em XML mais apropriada para o projeto. Veja, por exemplo, DocBook (ML p/ documento técnico). • Interagir com os responsáveis do HTML e do XSLT. • Links: • http://www.oreilly.com/catalog/docbook/chapter/book/docbook.html • http://www.oasis-open.org/docbook/intro.html • http://zvon.org/xxl/DTDTutorial/General/book.html • http://www.developer.ibm.com/devcon/rsinnarticle.htm • FOP (Formatador de PDF) • http://xml.apache.org/fop/
DTD http://www.w3.org/TR/xslt http://www.cs.rutgers.edu/~shklar/classes/476/class21/slide5.html http://www.cs.rutgers.edu/~shklar/classes/476/schedule.html <!ELEMENT book (author+, title, publisher)> <!ATTLIST book year CDATA> <!ELEMENT article (author+, title, year?, (shortversion|longversion))> <!ATTLIST article type CDATA> <!ELEMENT publisher (name, address)> <!ELEMENT author (firstname?, lastname)>
XML Query • Coleções de arquivos XML podem ser acessados como Banco de Dados • Links: • http://www.rpbourret.com/xmldbms/readme.htm • http://www.cs.bell-labs.com/who/wadler/topics/xml.html • http://www.w3.org/TandS/QL/QL98/pp/xql.html • http://www.ibiblio.org/xql/ • Fazer uso inteligente da estrutura do XML. • Site principal: http://www.w3.org/XML/Query • Exemplo: http://www.w3.org/TR/xmlquery-use-cases
XSL - Extensible Stylesheet Language • Linguagem para expressar padrões similar aos estilos do Word: • É uma linguagem para transformar documentos XML. • Contém um vocabulário para especificar formatação semântica. • http://www.w3.org/TR/xsl/ • Introduction to Cocoon, XML, XSL • http://www.devshed.com/Client_Side/XML/INTCXX/ • Artigos: • http://www-106.ibm.com/developerworks/library/x-xslt5.html • http://www-106.ibm.com/developerworks/library/jguru-dom/index.html
Xpath - XML Path Language • http://www.w3.org/TR/xpath • Excelente curso prático online para experimentar: • http://www.zvon.org/xxl/XPathTutorial/General/examples.html
Selecionando elementos com XPath <xsl:template match="/"> <xsl:value-of select=“AAA” </xsl:template> Selecionando /AAA /AAA/CCC /AAA/CCC/BBB <AAA> <BBB/> <CCC/> <BBB/> <BBB/> <DDD> <BBB/> </DDD> <CCC/> </ AAA > <AAA> <BBB/> < CCC /> <BBB/> <BBB/> <DDD> <BBB/> </DDD> < CCC /> </ AAA > <AAA> <BBB/> < CCC /> <BBB/> <BBB/> <DDD> < BBB /> </DDD> < CCC /> </ AAA >
XLink • Links • http://www.ibiblio.org/xml/books/bible/updates/16.html • http://www.ibiblio.org/xml/books/bible/updates/17.html • http://www.sun.com/xml/developers/xlink/ • http://www.javacommerce.com/tutorial/xml/linking.html • http://pages.wooster.edu/ludwigj/xml/thesis.html • http://www.thefaactory.com/xlink2html/ • http://www.diffuse.org/TopicMaps/20001025/schema.html
XSL Veja http://www.finetuning.com/styletutorials.html
Regras xsl (1/3) <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Regras xsl (2/3) <xsl:template match="/"> <html> <head> <title>finetuning.com - Glossary of Terms</title> </head> <body> <center><h4>Glossary</h4></center> <table width="100%" border="1"><thead> <th>Term</th> <th>Definition</th> </thead> <tbody> <xsl:apply-templates/> </tbody> </table> </body> </html> </xsl:template>
Regras xsl (3/3) <xsl:template match="item"> <tr> <td><strong> <xsl:value-of select="title" /></strong></td> <td><xsl:value-of select="definition" /></td> </tr> </xsl:template> </xsl:stylesheet>
<libro> <titulo>Dos por tres calles</titulo> <autor>Josefa Santos</autor> <capitulo num="1"> La primera calle <parrafo> Era una sombría noche del mes de agosto... </parrafo> <parrafo destacar="si"> Ella, inocente cual <enlace href="http://www.enlace.es">mariposa</enlace> que surca el cielo en busca de libaciones... </parrafo> </capitulo> . . . . . . . . . . . . . ......... </libro> ejemplo.xml
ejemplo.xsl <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="libro"> <HTML> <HEAD> <TITLE>Ejemplos en XPath</TITLE> </HEAD> <BODY> <H1>Resultados:</H1> <PRE> <xsl:apply-templates select="/libro/capitulo/text()"/> </PRE> </BODY> </HTML> </xsl:template> </xsl:stylesheet>
Teste Execução > xsl ejemplo.xml ejemplo.xsl ejemplo.html É preciso de: - um analisador de XSLT como Xalan - um analisador de XML como Xerces Ambos estão no Cocoon (Apache)
Exemplo de arquivo XML <?xml version="1.0"?> <!-- edited with XML Spy v3.5 (http://www.xmlspy.com) by Test (Testing) --> <?xml-stylesheet type="text/xsl" href="planets.xsl"?> <PLANETS> <PLANET> <NAME>Mercury</NAME> <MASS UNITS="(Earth = 1">.0553</MASS> </PLANET> <PLANET> <NAME>Venus</NAME> <MASS UNITS="(Earth = 1">.815</MASS> </PLANET> <PLANET> <NAME>Earth</NAME> <MASS UNITS="(Earth = 1">1</MASS> </PLANET> </PLANETS>
Cont... <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <xsl:apply-templates/> </html> </xsl:template> <xsl:template match="PLANETS"> <xsl:apply-templates/> </xsl:template> <xsl:template match="PLANET"> <p> <xsl:value-of select="NAME"/> </p> </xsl:template> </xsl:stylesheet>
XML DTDs - XML Schemas • Permite escrever regras que definem uma estrutura de relacionamento. • Arquivos em XML podem ser validados segundo essas regras. • Permite construir a sua própria linguagem (vocabulário) por meio de DTD. • DTD é essencialmente uma gramática livre de contexto (BNF) para descrever uma linguagem e o vocabulário usado numa área de aplicação. • Para efetuar troca de dados entre instituições basta que codifique os dados conforme a DTD. • Ex: <Course> é constituído de <Name>, <Dept> (nessa ordem). • Ex: <html> é constituído de <head> e <body>
Atividades envolvidas • Para construir aplicações em XML é preciso fazer 4 coisas: • Selecionar ou escrever uma DTD • Gerar documentos em XML • Interpretar documentos XML, e • Exibir documentos XML.
Exemplo de DTD definindo “item” <!ELEMENT item (prodName+,USPrice, shipDate?) <!ATTLIST item partNum CDATA> <!ELEMENT prodName (#PCDATA)> <!ELEMENT USPrice (#PCDATA)> <!ELEMENT shipDate (#PCDATA)>
XML schema definindo “item” <xsd:element name="item"> <xsd:complexType> <xsd:sequence> <xsd:element name="prodName" type="xsd:string" maxOccurs="5"/> <xsd:element name="USPrice" type="xsd:decimal"/> <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="partNum" type="SKU"/> </xsd:complexType> </xsd:element> <!-- Stock Keeping Unit, a code for identifying products --> <xsd:simpleType name="SKU"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType>
XSL • É muito mais do que um estilo (CSS). • CSS provê um conjunto de estilos para o HTML. • XSL uma linguagem de transformação e de formatação. • Especifica como um documento se transforma num outro. • ordenar • filtrar/traduzir • montar/compor, inserir, apresentar
Conversão de dados da origem para o destino Sem XML Com XML
Conteúdo dissociado da apresentação PDF HTML Dados xml WML XSLT SVG html XSL wml XSL svg XSL XSL - extensible style language
SMIL - synchronized multimedia integration language • Pronunciação: “smile” • Permite integrar partes de arquivos de multimídia (Áudio/Vídeo) • Sincronizar arquivos do tipo: mp3, som, imagens, Flash, jpeg, etc. • Links: • http://www.w3.org/AudioVideo/ • http://www.cwi.nl/~media/SMIL/ • Em Português: http://www.helio.org/products/smil/tutorial_pt/
Controlando a mídia com SMIL <smil> <head> <layout> <root-layout width="300" height="200" background-color="white" /> <region id="vim_icon" left="75" top="50" width="32" height="32" /> </layout> </head> <body> <img src="vim32x32.gif" alt="The vim icon" region="vim_icon" dur="6s" begin="2s" /> </body> </smil>
Eventos em paralelo Inserir elemento de mídia numa apresentação especificando a região Evento com tempo e duração <smil> <head> <layout> <root-layout width="300" height="200" background-color="white" /> <region id="vim_icon" left="75" top="50" width="32" height="32" /> </layout> </head> <body> <img src="vim32x32.gif" alt="The vim icon" region="vim_icon" /> </body> </smil> Sincronização baseada em eventos
Linguagem SVG (W3C) • Adobe (Plug-in) – Apache - SVGView (IBM) • Linguagem para descrever gráficos em 2-D • Formas vetoriais gráficas; • Imagens; • Texto. • E operações gráficas: animações, clipping, etc. • Todas as facilidades providas no XML • Suporte do World Wide Web Consortium (W3C) • Conversões de outros formatos para SVG: • Color Graphics Metafile (CGM) • Alternativa ao GIF/JPEG para visualização em browser.
SVG: rect <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN“ "http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd"> <svg width="12cm" height="4cm"> <desc>Example rect01 - rectangle expressed in physical units</desc> <rect x="4cm" y="1cm" width="4cm" height="2cm“ style="fill:yellow; stroke:navy; stroke-width:0.1cm" /> </svg>
SVG: rect <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN“ "http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd"> <svg width="12cm" height="4cm" viewBox="0 0 1200 400"> <desc>Example rect02 - rounded rectangles expressed in user coordinates</desc> <rect x="1" y="1" width="1198" height="398“ style="fill:none; stroke:blue"/> <rect x="100" y="100" width="400" height="200" rx="50“ style="fill:green;" /> <g transform="translate(700 210) rotate(-30)"> <rect x="0" y="0" width="400" height="200" rx="50“ style="fill:none; stroke:purple; stroke-width:30" /> </g> </svg>