Escolar Documentos
Profissional Documentos
Cultura Documentos
XML uma Recomendao W3C XML apenas descreve os dados e o que eles significam o O HTML que foi desenvolvido para mostrar os dados e a aparncia deles o XML um complemento ao HTML e no um substituto deste XML foi desenvolvido para estruturar, armazenar e enviar os dados XML is a cross-platform, software and hardware independent tool for transmitting information W3Schools Com XML os dados so mantidos separados do seu cdigo HTML Com XML a troca de dados entre sistemas incompatveis possvel As tags do XML no so pr-definidas, voc deve criar as suas prprias tags, obedecendo a um pequeno conjunto de regras de sintaxe. o
o o
Um documento XML que siga essas regras de sintaxe um documento XML Bem Formado
1 XML DTD XSL
Elementos XML
<?xml version=1.0 encoding=ISSO-8859-1?> <familiares> <filho1 atributo=1>Contedo do elemento</filho1> <filho2 atributo=332>Contedo do elemento</filho2> </familiares> o o o o O elemento raiz familiares Os elementos filho1 e filho2 so os elementos filhos de familiares familiares o elemento pai de filho1 e filho2 filho1 e filho2 so elementos irmos por possurem o mesmo pai
Atributos
o o o o o Todos os elementos XML podem conter atributos Os atributos geralmente carregam informaes que no so parte dos dados Como j foi mencionado, todos os valores dos atributos devem estar entre aspas, duplas ou simples No existem regras que digam quando usar elementos filhos ou atributos Os exemplos a seguir carregam a mesma informao: <pessoa> <sexo>feminino</sexo> <primeiro_nome>Lya</primeiro_nome> <ultimo_nome>Castro</ultimo_nome> </pessoa>
Outra maneira de resolver os conflitos utilizando namespaces Utilizamos o atributo xmlns para definir um namespace em uma tag xmlns:namespace-prefix=namespaceURI Todos os filhos do elemento no qual o namespace foi definido tero associados a eles o mesmo namespace do elemento pai Os exemplos abaixo so os mesmos anteriores s que com a utilizao dos namespaces:
<f:table xmlns:f="http://www.w3schools.com/furniture"> <f:name>Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table>
Podemos definir um namespace padro para o documento para que no seja necessrio o uso dos prefixos em todos os elementos do documento XML xmlns=namespaceURI
<table xmlns="http://www.w3schools.com/furniture"> <name>Coffee Table</name> <width>80</width> <length>120</length> </table>
Caracteres Ilegais
o Alguns caracteres so ilegais no documento XML e causaro erro se utilizados. Para evitar isso utilizamos as entidades de referncia da tabela abaixo:
< > & &em; " < > & Menor que Maior que E comercial Apstrofo Aspas
Com erro: <message>4M salary < 1000 then</message> Sem Erro: <message>4M salary < 1000 then</message> Observao: somente os caracteres < e & so ilegais no XML, os outros so legais, mas uma boa prtica tambm substitu-los
XML CDATA
o o Todo o texto em um documento XML ser analisado pelo parser Para que algum texto no seja analisado pelo parser devemos coloc-lo dentro de uma seo CDATA: <![CDATA[ ... ]]> Todo o contedo de uma seo CDATA ignorado pelo parser O XML no permite que existam sees CDATA aninhadas
<script> <![CDATA[ function matchwo(a,b) { if (a < b && a < 0) then { return 1 } else { return 0 } } ]]> </script>
Um documento XML vlido se ele, alm de ser bem formado, segue as regras de um DTD ou de um XML Schema O propsito do DTD definir os blocos vlidos de um documento XML. Ele define a estrutura do documento como uma lista de elementos e atributos vlidos. O DTD pode ser declarado dentro do documento XML ou pode ser criado num outro documento e ser referenciado no XML DTD define a construo de blocos vlidos para um documento XML, bem como a estrutura desse documento, usando uma lista de elementos vlidos FCC Permite descrever cada marca (tag) e fornecer regras para interpretar cada informao usada em um arquivo XML FCC
Declarao Interna
o
<?xml version=1.0 encoding=ISO-8859-1?> <!DOCTYPE note [ <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>Joo</to> <from>Isa</from> <heading>Lembrete</heading> <body> hoje</body> </note>
Declarao Externa
o
necessrio associar o XML ao DTD Adiciona-se a linha abaixo no documento XML <!DOCTYPE elemento-raiz SYSTEM nome-do-arquivo> Cria-se um documento com as informaes do DTD
<?xml version=1.0 encoding=ISO-8859-1?> <!DOCTYPE note SYSTEM note.dtd> <note> <to>Joo</to> <from>Isa</from> <heading>Lembrete</heading> <body> hoje</body> </note>
Arquivo XML
Arquivo note.dtd
Blocos de Construo
Elementos Um documento DTD pode conter: Atributos Entidades PCDATA CDATA
Elementos vazios
<!ELEMENT nome-do-elemento EMPTY> Exemplo DTD: <!ELEMENT br EMPTY> Exemplo XML: <br />
Os filhos devem aparecer no documento XML na ordem exata na qual foram declarados no DTD
<!ELEMENT nome-do-elemento (filho1)> <!ELEMENT nome-do-elemento (filho1,filho2,...)> Exemplo DTD: <!ELEMENT note (to,from,heading,body)>
Exemplo DTD: <!ELEMENT note (#PCDATA|to|from|header|message)*> O exemplo indica que o elemento note pode conter zero ou mais ocorrncias de PCDATA, to, from, header ou message
DTD: <!ELEMENT quadrado EMPTY> <!ATTLIST quadrado largura CDATA "0"> XML vlido: <quadrado largura="100" />
DTD: <!ATTLIST person number CDATA #REQUIRED> XML vlido: <person number="5677" /> XML invlido: <person />
DTD: <!ATTLIST telefone fax CDATA #IMPLIED> XML vlido: <telefone fax="555-667788" /> Esse tambm vlido: <telefone/>
DTD: <!ATTLIST sender company CDATA #FIXED "Microsoft"> XML vlido: <sender company="Microsoft" /> XML invlido: <sender company="Apple" />
DTD: <!ATTLIST pagamento tipo (check|cash) "cash"> Exemplo de XML: <payment type="check" /> ou <payment type="cash" />
3. Entidades
As entidades so variveis usadas como atalhos para algum texto padro ou caracteres especiais A declarao das entidades pode ser interna ou externa: <!ENTITY nome-da-entidade "valor-da-entidade"> <!ENTITY nome-da-entidade SYSTEM "URI/URL"> Exemplo de declarao DTD interna: <!ENTITY escritor "Joo Castro."> <!ENTITY copyright "Copyright Resumos&Apostilas."> Exemplo XML <autor>&escritor;©right;</autor> Exemplo de declarao DTD externa: <!ENTITY escritor SYSTEM "http://resumosapostilas.blogspot.com/entidades.dtd"> <!ENTITY copyright SYSTEM" http://resumosapostilas.blogspot.com/entidades.dtd "> Exemplo XML <autor>&escritor;©right;</autor>
uma recomendao W3C XSLT transforma um documento XML em outro documento que pode ser XML, XHTML, HTML ou qualquer linguagem reconhecida por um browser
Um arquivo XSL uma folha de estilos para o XML. Os arquivos XSL so na verdade arquivos XML que utilizam o namespace especfico do XSL, com o prefixo "xsl O elemento raiz do XSLT pode ser o <xsl:stylesheet> ou, opcionalmente, o <xsl:transform>
<?xml version=1.0 encoding=ISSO-8858-1?> <xsl:stylesheet version=1.0 xmlns:xsl=http://www.w3c.org/1999/XSL/Transform> ... </xsl:stylesheet> Ou <?xml version=1.0 encoding=ISSO-8858-1?> <xsl: transform version=1.0 xmlns:xsl=http://www.w3c.org/1999/XSL/Transform> ... </xsl:transform> Exemplos de arquivos XSL necessrio incluir uma referncia ao arquivo XSL no seu documento XML <?xml-stylesheet type="text/xsl" href="arquivo.xsl"?>
Vamos utilizar o XML simplificado abaixo e o XSL logo a seguir <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="combustvel.xsl"?> <combustvel> <abastecimento id="1"> <dia>22</dia> <ms>05</ms> <ano>2007</ano> <km_total>103045 km</km_total> <km_rodados>452,5 km</km_rodados> <gas>31,132 litros</gas> <preo_litro>R$2,68</preo_litro> <valor>R$83,43</valor> </abastecimento> ... </combustvel>
<?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="/"> <html> <body> <h1>Abastecimentos</h1> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Dia</th> <th align="left">Ms</th> <th align="left">Ano</th> <th aling="left">KM Total</th> <th align="left">Km Rodados</th> <th align="left">Gasolina</th> <th align="left">Preo/litro</th> <th align="left">Valor</th> </tr> <xsl:for-each select="combustvel/abastecimento"> <tr> <td><xsl:value-of select="dia"/></td> <td><xsl:value-of select="ms"/></td> <td><xsl:value-of select="ano"/></td> <td><xsl:value-of select="km_total"/></td> <td><xsl:value-of select="km_rodados"/></td> <td><xsl:value-of select="gas"/></td> <td><xsl:value-of select="preo_litro"/></td> <td><xsl:value-of select="valor"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> XML DTD XSL 10
Para testar grave o primeiro arquivo como combustvel.xml e o segundo como combustvel.xsl e abra o XML no browser:
Abastecimentos
Dia Ms Ano 22 05 29 05 KM Total Km Rodados Gasolina Preo/litro Valor R$83,43 R$81,72 2007 103045 km 452,5 km 2007 103480 km 434,8 km 31,132 litros R$2,68 30,38 litros R$2,69
Observao! o A FCC gosta de tentar confundir os candidatos com o formato do arquivo XSL o XSL = extensible stylesheet language o XLS = arquivo do Excel um elemento que define um molde, ou padro em conjunto com o atributo match o O valor do atributo match uma expresso XPath vlida o Uma expresso XPath funciona como navegar em um filesystem, no qual uma barra / seleciona os subdiretrios No exemplo,<xsl:template match=/> associa o molde ao elemento raiz do documento XML O contedo dentro da tag <xsl:template> cdigo em XHTML que define como ser exibido o contedo do arquivo XML no browser utilizado para extrair o valor de um n especfico dentro do arquivo XML O valor do atributo select deve ser uma expresso XPath vlida No nosso exemplo o elemento <xsl:value-of select="dia"/> extrai o valor do n dia Utilizado para criar loops Permite extrair todos os elementos quando utilizado em conjunto com o xsl:value-of O valor do atributo select deve ser uma expresso XPath vlida o No nosso exemplo definimos que deve ser extrado o valor de cada um dos filhos do elemento abastecimento O bloco de repetio no nosso exemplo : <xsl:for-each select="combustvel/abastecimento"> <tr> <td><xsl:value-of select="dia"/></td> <td><xsl:value-of select="ms"/></td> <td><xsl:value-of select="ano"/></td> <td><xsl:value-of select="km_total"/></td> <td><xsl:value-of select="km_rodados"/></td> <td><xsl:value-of select="gas"/></td> <td><xsl:value-of select="preo_litro"/></td> <td><xsl:value-of select="valor"/></td> </tr> </xsl:for-each> XML DTD XSL
11
= != < >
O elemento <xsl:for-each> pode ser utilizado para filtrar o resultado com o uso dos operadores lgicos: Igual Para extrair s os abastecimentos feitos no dia 22 No igual <xsl:for-each select=combustvel/abastecimento[dia=22]> Menor que Para extrair abastecimentos com valores maiores que R$100 Maior que <xsl:for-each select=combustvel/abastecimento[valor>100]>
Bibliografia
W3Schools http://www.w3schools.com/ W3C http://www.w3c.org Mini Curso Virtual Link XML By Example XSLT, ORilley