XML: Conceitos e Aplicações Prof. Marcos Alexandruk [email protected] XML z z z z XML (Extensible Markup Language) Possibilita separar o conteúdo da apresentação dos dados. Por ser extensível, o XML possibilita a criação de elementos, ou seja, você mesmo pode criar as suas tags. Um dos usos mais difundidos do XML é o armazenamento e transação de dados entre empresas. Por que usar XML? z z z z z z z z z Padrão aberto Facilidade para converter dados Trabalha com formato texto Fácil de ler e processar Separa estrutura, conteúdo e apresentação Facilita geração dinâmica de dados Evita repetição de informação Manutenção simples Compatibilidade com mecanismos de busca Diferenças entre HTML e XML z HTML z z Formata e exibe as informações Tags pré-definidas <h1>Fulano de Tal</h1> <h2>[email protected]</h2> <p>5555-1234</p> Diferenças entre HTML e XML z XML z z Descreve e armazena as informações Você pode criar suas próprias tags <nome>Fulano de Tal</nome> <email>[email protected]</email> <fone>5555-1234</fone> O que compõe um documento XML? z Um documento XML é composto basicamente por três elementos: z z z CONTEÚDO: Informação a ser disponibilizada ESTRUTURA: Definida por um DTD (Document Type Definition) ou Schema que contém as regras de formatação APRESENTAÇÃO: A forma como os dados serão exibidos. Para isso utiliza-se CSS (Cascading Style Sheets) ou XSLT (Extensible Style Language Transformation). Como criar um documento XML? z Documentos XML podem ser criados da mesma forma que as páginas HTML: utilizando um editor de textos ou softwares especializados. <?xml version "1.0"?> <agenda> <contato> <nome>José da Silva</nome> <email>[email protected]</email> </contato> <contato> <nome>Maria dos Santos</nome> <email>[email protected]</email> </contato> </agenda> Algumas regras: z z z z z Nomes podem conter letras, números e "_" (underscore) Nomes não devem iniciar com números ou "_" (underscore) Nomes não devem conter a palavra xml ou XML Nomes não devem conter espaços O XML é case-sensitive (letras maiúsculas e letras minúsculas são tratadas de maneiras diferentes). Formatação usando CSS z cds.xml <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/css" href="cds.css"?> <loja> <cd> <titulo>Blue Sky Mining</titulo> <cantor>Midnight Oil</cantor> </cd> <cd> <titulo>Testify</titulo> <cantor>Phil Collins</cantor> </cd> </loja> Formatação usando CSS z cds.css loja {font-family: Verdana; font-size: 12px } titulo { color: red; font-weight: bold; display: block } cantor { color: green; display: block; margin-bottom: 10px } NOTA: display: block insere uma quebra de linha antes do próximo elemento. Formatação usando XSLT z XSLT (Extensible Stylesheet Language Transformation) transforma e manipula os dados de um documento XML para apresentá-los no browser. z VANTAGENS z É escrito em XML (não há necessidade de aprendizagem de uma outra linguagem). z Permite ordenar, excluir e filtrar os dados de um documento XML (o usuário pode controlar a maneira como os dados são apresentados no browser). z Capacidade de inserir textos e gráficos no documento final. Formatação usando XSLT z cds.xml <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl" href="cds.xsl"?> <loja> <cd> <titulo>Blue Sky Mining</titulo> <cantor>Midnight Oil</cantor> </cd> <cd> <titulo>Testify</titulo> <cantor>Phil Collins</cantor> </cd> </loja> Formatação usando XSLT z cds.xsl <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <head><title>Music Hall</title></head> <body> <table border="1"> <tr><th>Título</th><th>Cantor</th></tr> <xsl:for-each select="loja/cd"> <tr> <td><xsl:value-of select="titulo" /></td> <td><xsl:value-of select="cantor" /></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Formatação usando XSLT <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"> Abre o documento e faz referência ao namespace necessário para que o browser reconheça as instruções de processamento e formate o documento. O elemento xsl:stylesheet deve ser fechado no final do documento. <xsl:template match="/"> O template é usado para definir como a apresentação dos documentos deve ser feita. A propriedade match é usada para assciar o template com um determinado elemento XML. <xsl:for-each select="loja/cd"> O elemento xsl:for-each permite efetuar um loop dentro de um documento XSLT. <xsl:value-of select="titulo" /> <xsl:value-of select="cantor" /> O elemento xsl:value-of é usado para extrair o valor de um node (no DOM da W3C cada elemento na representação da árvore é chamado de node) e apresentá-lo no browser. A propriedade select permite definir o elemento XML cujo valor será lido. O elemento é acessado da mesma maneira que acessamos um arquivo, navegando por diretórios. Formatação usando XSLT Título Cantor Blue Sky Mining Midnight Oil Testify Phil Collins XML: Uso de atributos (ou propriedades) z Atributos apresentam informações adicionais sobre um elemento. Os nomes dos atributos devem estar em letras minúsculas. z cds.xml z <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl" href="cds.xsl"?> <loja> <cd cod="1001"> <titulo>Blue Sky Mining</titulo> <cantor>Midnight Oil</cantor> </cd> <cd cod="1002"> <titulo>Testify</titulo> <cantor>Phil Collins</cantor> </cd> </loja> XML: Uso de atributos (ou propriedades) z cds.xsl <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <head><title>Music Hall</title></head> <body> <table border="1"> <tr><th>Código</th><th>Título</th><th>Cantor</th></tr> <xsl:for-each select="loja/cd"> <tr> <td align="center"><xsl:value-of select="@cod" /></td> <td><xsl:value-of select="titulo" /></td> <td><xsl:value-of select="cantor" /></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> XML: Uso de atributos (ou propriedades) Código Título 1001 1002 Blue Sky Mining Testify Cantor Midnight Oil Phil Collins Data Islands z Agregam informações dentro de um documento. Utilizadas para inserir código XML em um documento HTML. z cds.xml z <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl" href="cds.xsl"?> <loja> <cd> <codigo>1001</codigo> <titulo>Blue Sky Mining</titulo> <cantor>Midnight Oil</cantor> </cd> <cd> <codigo>1002</codigo> <titulo>Blue Sky Mining</titulo> <cantor>Phil Collins</cantor> </cd> </loja> Data Islands cds.htm <html> <head> <title>Music Hall</title> </head> <style type="text/css"> body {font: 80% Verdana} th {font-size: 90%} td {font-size: 80%} </style> <body> <xml id="dados" src="cds.xml"></xml> <table datasrc="#dados" border="1"> <thead> <tr><th>Título</th><th>Cantor</th></tr> </thead> <tbody> <tr> <td><span datafld="titulo"></span></td> <td><span datafld="cantor"></span></td> </tr> </tbody> </table> </body> </html> Data Islands: propriedade datapagesize cds.htm <html> <head> <title>Music Hall</title> </head> <style type="text/css"> body {font: 80% Verdana} th {font-size: 90%} td {font-size: 80%} </style> <body> <xml id="dados" src="cds.xml"></xml> <table id="tabela" datasrc="#dados" datapagesize="2" border="1"> <thead> <tr><th>Título</th><th>Cantor</th></tr> </thead> <tbody> <tr> <td><span datafld="titulo"></span></td> <td><span datafld="cantor"></span></td> </tr> </tbody> </table> <br /> <button onclick="tabela.firstPage()">Primeira</button> <button onclick="tabela.previusPage()">Anterior</button> <button onclick="tabela.nextPage()">Próxima</button> <button onclick="tabela.lastPage()">Última</button> </body> </html>