XML - Arquiteturas e Bibliotecas

Iniciado por Triplo X, 01 de Março , 2009, 07:08:07 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

Triplo X

Citar* Para melhor assimilar os conceitos a serem apresentados nesta aula,
é importante que você
entenda os conceitos de linguagem de marcação, como HTML (existe muito material disponível
na internet). Também é interessante que os exemplos citados sejam digitados e salvos em
arqivos com extensão XML e abertos em um vanegador web que suporte essa linguagem.



Pense a respeito:

Você já imaginou como seria difícil de trocar informações entre aplicações se não fosse adotado um padrão, como o XML? Veja que os direrentescomputadores existem com diferentes Sistemas Operacionais , diferentes Arquiteturas de Hardware e diferentes Browsers. Já imaginou como seria complexo implementar a troca de informações entre todas as máquinas nessa multiplicidade de parâmetros, sem uma forma padrão, como o uso de XML?



Estrutura de um documento usando XML

Documentos XML são representados na forma de uma estrutura de árvore.
A partir de uma estrutura raiz, existe uma divisão em níveis e subníveis com as informações

do documento, estrutura de um nível pai e abaixo os filhos.

Documentos XML usam uma descrição dos dados de forma implícita e uma sintaxe simples,

conforme o código abaixo:

<?xml version="1.0" encoding="iso-8859-1"?>
<note>
<to>Alberto</to>
<from>Maria</from>
<heading>Lembrete</heading>
<body>Não se esqueça do compromisso neste fim de semana!</body>
</note>


A primeira linha é o documento XML. Define a versão (1.0) e o tipo de codificação

usada(iso-8859-1 = Latin-1/West European character set).

A próxima linha descreve o elemento raiz do documento (identifica que esse documento é uma

notificação).
<note>

As próximas quatro linhas descrevem qutro elementos filhos do elemento pai (to, from,

heading e body).
<to>Alberto</to>
<from>Maria</from>
<heading>Lembrete</heading>
<body>Não se esqueça...</body>


E finalmente a última linha define o fim do elemento pai.
</note>

Você pode identificar a partir desse exemplo, que o documento XML contém uma notificação de Maria para Alberto.

O documento XML precisa conter um elemento Pai também chamado de elemento Raiz. Esse elemento éo "Pai" de todos os outros elementos.
Cada elemento pode ter sub-elementos.
Confira:
<root>
<child><subchild>...</subchild>
</child>
</root>


O termo pai e filhos são usados para descrever o relacionamento entre os elementos. Elementos Pai têm filhos.
Filhos no mesmo nível são chamados de irmãos.

Todos os elementos podem ter atributos e um conteúdo de texto (assim como em HTML).
Confira:
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Triplo X</author>
<year>2009</year>
<price>0.00</price>
</book>
</bookstore>


Os elementos Raiz ou elemento Pai no exemplo anterior é <bookstore>.
Todos os elementos <book> no documento estão contidos dentro de <bookstore>.
O elemento <book> tem quatro filhos: <title>, <author>, <year> e <price>.



XML - Uso prático

Marcação em XML

Para que você possa entender a marcação XML, vamos avaliar o nosso primeiro exemplo bem simples (intro.xml) logo abaixo:
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- comentário dentro do xml se faz assim
Eles também são vis´visíveis pelo navegador,
então cuidado com o que irá escrever aqui -->
<myMessage>
    <message>Bem vindo ao XML</message>
</myMessage>


Qualquer caractere pode ser usado em um documento XML, porém existem os caracteres  reservados em XML,
que são "e comercial" (&), menor que (<), maior que (>), apóstrofe('), e   aspas (").
Esses caracteres reservados não podem ser usados diretamente no texto, mas podem ser codificados usando
uma referência a entidades, que começam com um "e comercial" (&) e terminam com um "poto e vírgula" (;).

Veja a imagem a seguir:



Documento XML que faz a marcação de um livro
book.xml
<?xml version="1.0" encoding="iso-8859-1"?>

<?xml:stylesheet type="text/xsl" href="usageA.xsl"?>

<book isbn="999-99999-9-x">
   <title>Interoperabilidade de Aplicações</title>
       <author>
           <firstName>Ademir</firstName>
           <lastName>Goulart</lastName>
       </author>

       <chapters>
           <preface num="1" pages="2">Sumário</preface>
           <chapter num="1" pages="4">XML Introdução</chapter>
           <chapter num="2" pages="2">XML Elementos</chapter>
           <appendix num="1" pages="9">Entidades</appendix>
       </chapters>

       <media type="CD"/>
</book>


Arquivo de folha de estilo para XML
usageA.xsl
<?xml version="1.0" encoding="iso-8859-1"?>

<!-- Transformação das infos do book em HTML -->

<xsl:stylesheet version="1.0" xmlns:xsl="HTTP://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
      <xsl:apply-templates/>
  </html>
</xsl:template>

<xsl:template match="book">
    <head>
        <title>ISBN <xsl:value-of select="@isbn"/> - <xsl:value-of select="title"/></title>
    </head>
    <body bgcolor="lightblue">
      <h1><xsl:value-of select="title"/></h1>
     
      <h2>Autor: <xsl:value-of select="autor/lastName"/> <xsl:value-of select="autor/firstName"/></h2>
     
      <table border="1">
        <xsl:for-each select="chapter/preface">
          <xsl:sort select="@num" order="ascending"/>
          <tr>
              <td align="right">
                  Prefácio <xsl:value-of select="@num"/>
              </td>
             
              <td>
                  <xsl:value-of select="."/>
                  <xsl:value-of select="@pages"/> páginas
              </td>
          </tr>
        </xsl:for-each>
      <xsl:for-each select="chapters/chapter">
        <xsl:sort select="@num" order="ascending"/>
        <tr>
            <td align="right">
                   Capítulo <xsl:value-of select="@num"/>
            </td>
           
            <td>
                <xsl:valur-of select="."/> (
                <xsl:value-of select="@pages"/>  páginas )
            </td>
        </tr>
      </xsl:for-each>

      <xsl:for-each select="chapters/appendix">
         <xsl:sort select="@num" order="ascending"/>
           <tr>
               <td align="right">
                     Apêndice <xsl:value-of select="@num"/>
               </td>
               
               <td>
                   <xsl:value-of select="."/> (
                   <xsl:value-of select="Apages"/> páginas )
               </td>
           </tr>
      </xsl:for-each>
     </table>
  </body>
</xsl:template>
</xsl:stylesheet>


Visualização:





CitarSaiba Mais

UNICODE provê um único número para cada caractere; não interessa qual é a plataforma, não interessa qual é o software, não interessa qual é a linguagem. Acesse <http://www.unicode.org> para saber mais!


Sessão CDATA

Uma Sessão CDATA pode conter texto, caracteres reservadose caracteres espaços em branco, sendo que todas as informações que estiverem na Sessão CDATA não serão processados pelo analixador XML. Um uso comum de uma Sessão CDATA é quando necessitamos incluir no documento XML um código de criação de scripts (JavaScript ou VBScript), os quais normalmente contém os caracteres &, <, >, etc.

<?xml version="1.0" encoding="iso-8859-1"?>

<book title="C++ Como Programar" edition="3">

   <Exemplo_A>
        // C++ comment
        if (this-&gt;getX() &lt; 5 &amp;&amp; value [ 0 ] != 3 )
           cerr &lt;&lt; this-&gt;displayError();
   </Exemplo_A>
   
   <Exemplo_B>
        <![CDATA[
       
           // C++ comment
           if (this->getX() < 5 && value[ 0 ] != 3 )
             cerr << this->displayError();
        ]]>
   </Exemplo_B>
   
   C++ Como Programar
   
</book>




Espaço de nome em XML

Quando trabalhamos com diferentes documentos XML simultaneamente, pode ocorrer duplicidade no nome de elementos. para prevenir esta situação, usamos o espaço de nome, o que identifica de onde veio esse elemento.

Existem endereços chamados URI - Uniform Resource Identifier - que são colocados como prefixo de nome de um elemento. Uma prática comum é usar URLs - Universal Resource Locators - como URI, pois nunca uma URL irá se repetir, já que por definições, são identificadores únicos de endereço na internet.
Confira:

<?xml version="1.0"?>

<directory xmlns:text="http://www.goulart.pro.br/xmlns-text"

xmlns:image="http://www.goulart.pro.br/xmlns-image">

  <text:file filename="book.xml">
     <text:description>A book list</text:description>
  </text:file>

  <image:file filename="Ana_Mladinovici.jpg">
     <image:description>A image prictures</image:description>
     <image:size width="380" height="200"/>
  </image:file>

</directory>



Mas afinal de contas, para quê precisarei aprender estes conceitos?

Bom, não sei como é sua vida mas, quem desenvolveu seu browser certamente aprendeu tudo.
Quem desenvolve galerias em flash sabe do que estou falando: tem que ficar indicando o caminho das imagens no xml e as vezes no arquivo swf também.
Mas não são todas as galerias que precisam fazer isso, mas a maioria sim.

Bom, no mais é isso.
Espero que gostem do conteúdo, que a princípio não é lá grande coisa mas abre portas para o grande mundo que é a linguagem de marcação.

Até a próxima...
Não me venha dizer que é melhor que alguém que eu te espanco!
Todos não passamos de ratinhos que morrerão um dia como todos os outros...