domingo, 15 de julho de 2018

XML (Extensible Markup Language)

Neste post, vamos falar um pouco sobre XML, que é uma das bases tecnológicas das notas ficais eletrônicas. Este post é o primeiro resultado da Monografia de Matheus Silva.



1 ORIGEM DO XML

Entender a origem da linguagem XML será necessário para se compreender como esta se tornou o padrão mais utilizado na Internet para transferência de dados entre as empresas e está presente em vários tipos de sistemas que precisam trocar dados por meio virtual, chamando assim a atenção das comunidades de banco de dados para buscar soluções relacionadas ao gerenciamento dos dados XML.

Devido algumas características próprias da linguagem XML que serão abordadas, foi escolhido o modelo XML como modelo padrão para transmissão de mensagem durante a requisição dos serviços disponibilizados no sistema da NF-e. A transmissão de dados feita entre o contribuinte e o fisco é realizada através da Internet conforme indicado no Manual de Orientação do Contribuinte (2015, p.17).

O meio físico de comunicação utilizado será a Internet, com o uso do protocolo SSL versão 3.0 ou TLS 1.0, com autenticação mútua, que além de garantir um duto de comunicação seguro na Internet, permite a identificação do servidor e do cliente através de certificados digitais, eliminando a necessidade de identificação do usuário através de nome ou código de usuário e senha.  

A seguida será abordado o surgimento da linguagem XML assim como os recursos tecnológicos utilizados nesse processo de transmissão da Nota Fiscal Eletrônica e o armazenamento da mesma no SGBD relacional.

2 INTERNET E WEB

O surgimento da rede mundial de computadores, Internet, tem modificado o mercado em todas as áreas, a criação de novas tecnologias e facilidade de acesso à informação por meio desta rede, tornou o mercado um verdadeiro campo de guerra entre as empresas, e acompanhar as novidades do mercado pode ser decisivo para garantir uma posição vantajosa diante da concorrência. Administrar as informações da empresa e o relacionamento com os clientes e fornecedores dos seus produtos é algumas das atividades que tem ganhado importância com o surgimento da Internet, uma vez que essas atividades acontecem em sua maior parte pelo ambiente virtual, logo esse contexto é importante à compreensão do surgimento da tecnologia XML, Nota Fiscal Eletrônica e o conceito de banco de dados, por isso será apresentado um breve histórico da evolução da Internet e da web.

Segundo Date (2003, p.768-769), “a web é um banco de dados gigantesco (embora não criado de acordo com os princípios convencionais de um banco de dados) e a Internet é igualmente uma rede gigantesca sobre a qual esse banco de dados é distribuído”.

Através de estudos iniciados nos Estados Unidos da América sob o patrocínio da Agência de Projetos de Pesquisa Avançadas do Departamento dos EUA (DARPA), foi criado o projeto ARPANET, que teve um papel importante na criação da Internet, que se trata de um avanço do projeto acima iniciado em meados da década de  1960. Tendo como objetivo original interligar em uma rede de comunicação as bases militares e os departamentos de pesquisa do governo no período conhecido como Guerra Fria, o projeto tomou uma proporção maior que o esperado no início da década de 1970, onde foi necessário substituir seu protocolo de comutação de pacotes (NCP - Network Control Protocol) para um novo protocolo conhecido como Transmission Control Protocol/Internet Protocol (TCP/IP) dividindo o projeto em rede pública e rede para assuntos militares. Com a popularização da rede pública que utiliza o protocolo TCP/IP, a troca de informações ficou muito grande assim como a necessidade de acesso a essas informações, porém essas informações ainda não eram tão integradas, exigindo um processo demorado e que utilizasse mecanismos diferentes para acessar as informações.

Essa demora nos processos de acesso às informações, foi uma das principais causas para o surgimento da Web de acordo com Date (2003, p.769),

“A Web foi inventada por Tim Berners-Lee entre 1989-1990, como uma base para resolver toda essa complexidade.”

Utilizando-se do contexto de hipertexto para solucionar essa complexidade, resumindo todo um processo separado para chegar a uma informação desejada, por apenas um único clique de um mouse. Desta forma tem-se a facilidade de acesso a informações da web, casada com o acesso por meio da rede mais popular da atualidade, a Internet, trazendo à tona novos desafios, como por exemplo, a interação dos servidores web com os sistemas que gerenciam essas informações, os SGBD, motivando a criação de um padrão para toda essa troca de dados nas novas tecnologias.

3 LINGUAGENS DE MARCAÇÃO

A linguagem de marcação tem como objetivo principal permitir a criação de um documento de texto onde se pode incluir as instruções sobre a formatação do texto, incluindo itens como cabeçalho, parágrafos e outros conceitos, tornando-se popular após a criação da Internet. Segundo Almeida (2002, pg.6).

Dessa forma, por “linguagem de marcação”, entende-se um conjunto de convenções utilizadas para a codificação de textos. Uma linguagem de marcação deve especificar que marcas são permitidas, quais são exigidas, como se deve fazer distinção entre as marcas e o texto e qual o significado da marcação.

A Internet permitiu que as empresas possuíssem um acesso a informações mais facilitado e se tornou muito importante que essa troca de informações ocorresse sem restrições e limitações. Partindo dessa necessidade as linguagens de marcação passaram por vários aprimoramentos e se tornaram essenciais em tarefas do cotidiano de algumas empresas, por isso serão citadas algumas dessas mudanças nas linguagens de marcação que originaram a linguagem XML.

3.1 GML, SGML E XML

As linguagens de marcação inicialmente possuíam algumas limitações como, por exemplo, serem apropriadas para apenas alguns tipos de dispositivos, controlavam apenas a formatação do documento e possuíam natureza baseada em procedimentos, que motivaram pesquisadores de grandes empresas como a IBM desenvolverem a Generalized Markup Language (GML), que continha uma marcação mais descritiva do que a marcação das linguagens inicial como a linguagem Script, também utilizada pela IBM para formatar alguns de seus documentos. Não muito tempo depois a GML ganhou uma extensão conhecida como Standard GML (SGML) que permite a seus usuários definir as próprias estruturas de marcação chamadas de tags, existentes no documento. Partindo desse conhecimento Date (2003, p.772) esclarece que

“[...] a SGML não é  realmente uma linguagem de marcação em si [...]. Em vez disso, ela é uma metalinguagem” que oferece regras para que os usuários definam suas próprias linguagens de marcação.

Enquanto Almeida (2002, pg.7), define SGML da seguinte forma:

SGML é o Standard Generalized Markup Language definido pelo ISO 8879* e representa um padrão internacional para definição de estrutura e conteúdo de diferentes tipos de documentos eletrônicos. A SGML pode ser chamada de “linguagem mãe” e é usada para descrever tipos diferentes de documentos em muitas áreas da atividade humana, desde transições de antigos manuscritos irlandeses até documentação técnica para aviões de guerra; de registros de pacientes em unidades médicas até notação musical.

A SGML possuía problemas que precisavam ser revisados assim como as linguagens iniciais, e dentre eles o que mais se destacava era o fato de a linguagem ser muito grande e complexa, prejudicando assim sua aceitação na Web. Então em 1996 foi realizado um comitê de revisão da SGML, patrocinado pelo World Wide Web Consortium (W3C), fundado por Tim Berners-Lee em 1994, onde um engenheiro da Sun Microsystems chamado Jon Bosak apresentou uma versão simplificada da SGML, a linguagem XML que em fevereiro de 1998 tornou-se uma especificação formal reconhecida pelo W3 Consortium.

XML (eXtensible Markup Language) é uma metalinguagem de marcação desenvolvida pelo consórcio W3C (World Wide Web Consortium), sendo considerada um padrão para a publicação e transferência de dados de diferentes domínios de aplicação na Web. (Extensible Markup Language (XML)).

3.2 DOCUMENTOS XML

O termo documento XML é comum de se encontrar nos livros e na própria Internet, mas a expressão acima é um tanto incorreta, uma vez que os documentos não são expressos em XML, mas em alguma linguagem de marcação que foi definida usando XML, porém como o termo ficou popular decidiu-se utilizá-lo para se referenciar aos arquivos gerados nas transmissões da NF-e.

De acordo o Manual de Orientação do Contribuinte (2015, p.16) todos os documentos XML serão adotados da recomendação W3C para XML 1.0, com a codificação dos caracteres em UTF-8, assim todos os documentos XML serão iniciados com a seguinte declaração ( <?xml version="1.0" encoding="UTF-8"?> ), onde para cada arquivo XML poderá ter somente uma declaração desse tipo. E para garantir a integridade das informações apresentadas e a correta formação do documento XML, o contribuinte deverá submeter o arquivo NF-e e as demais mensagens XML para a validação pelo Schema do XML (XSD – XML Schema Definition) que é disponibilizado pela Secretaria da Fazenda, antes de seu envio.

A linguagem XML tem sido muito utilizada no mercado por apresentar diversas vantagens, como a possibilidade de se construir um padrão de transferência de dados entre duas aplicações diferentes, a independência de sistemas operacionais ou plataforma, a legibilidade fácil devido a sua formatação ser realizada em textos podendo ser interpretada por máquinas e por homens entre outras vantagens em diferentes contextos, sabendo disso Duarte (2006, p.17) lista alguns exemplos de onde se podem utilizar XML:

    • Um Documento Comum.
    • Um registro estruturado, como um registro de compromisso ou pedido de compra.
    • Qualquer Aplicação Web (Internet/intranet) que transferem dados.
    • Um objeto com dados, como o formato persistente de um objeto ou controle ActiveX.
    • Um registro de dados, como o conjunto de resultados (dataset) de uma consulta SQL. Meta-conteúdo sobre um local de Web, como Formato de Definição de Canal (CDF).
    • Apresentação gráfica, como a interface de usuário de uma aplicação. Ligações entre informações e pessoas na Web

4. TECNOLOGIAS ASSOCIADAS À LINGUAGEM XML

A manipulação dos dados XML requer uma compreensão de sua estrutura, e essa compreensão é possível devido à criação de algumas linguagens que foram propostas para definição de esquemas, entre elas podemos citar XML Schema, DTD, XDR, SOX, DSD e outras, da mesma forma a consulta aos dados de um documento XML pode ser feita através de linguagens específicas, como XPath e Xquery, por isso detalhou-se abaixo as linguagens mais utilizadas para definição de esquemas e as principais linguagens para realização de consultas em documentos XML.


4.1. DTD e XSD


Para se entender a estrutura de um documento XML, o que suas tags estão especificando e quais elementos ele contém é indicada à criação de uma definição de tipo de documento ou Document Type Definition (DTD). (MELLO, 2003, p.4) Explica DTD da seguinte forma.

DTD foi a primeira recomendação da W3C para a especificação de esquemas de documentos XML. Um DTD é uma gramática formada basicamente por cláusulas e ATTLIST (Lista de atributos). Estas cláusulas descrevem, respectivamente, um elemento e uma lista de atributos de um elemento.

Sabendo disso, considera-se válido um documento XML quando ele segue as regras especificadas em sua DTD. A definição de DTD foi implantada antes da utilização do XML, começou com a linguagem de marcação SGML, da qual XML pode ser considerada um resumo, logo se descobriu que a expressividade das DTDs era um tanto limitada, onde passou por um processo de atualização originando a linguagem formal para a definição de esquemas XML Schema Definition (XSD).

Desta vez (MELLO, 2003, p.5) Explica XSD desta forma.

XSD é uma recomendação recente da W3C e possui mais recurso para a especificação de esquemas em relação a um DTD, como o suporte a tipos de dados, a conceitos de orientação a objetos, como herança e polimorfismo, além de apresentar uma sintaxe XML. Apesar de XSD ser mais expressivo que um DTD em termos de especificação de esquemas XML, DTDs ainda são amplamente utilizados e a grande maioria das ferramentas que realizam validação de documentos XML (chamada parsers) operam sobre DTDs.

Exemplo de um documento XML seguido de sua DTD e XML Schema:

Documento XML:

<nome>Matheus</nome>

<idade>23</idade>

<data_nasc>23-05-1994</data_nasc>

DTD:

<!ELEMENT nome (#PCDATA)>

<!ELEMENT idade (#PCDATA)>

<!ELEMENT data_nasc (#PCDATA)>

XML Schema:

<xs:element name=“nome” type=“xs:string”/>

<xs:element name=“idade” type=“xs:integer”/>

<xs:element name=“data_nasc” type=“xs:date”/>

Para validação do arquivo XML gerado para transmissão da NF-e o Manual de Orientação do Contribuinte (2015, p.17) informa:

Para garantir minimamente a integridade das informações prestadas e a correta formação dos arquivos XML, o contribuinte deverá submeter o arquivo da NF-e e as demais mensagens XML para validação pelo Schema do XML (XSD – XML Schema Definition), disponibilizado pela Secretaria de Fazenda Estadual antes de seu envio.

4.2. XPATH E XQUERY

Quanto à manipulação dos dados XML foram propostas diversas linguagens, da qual abordou-se aquela que apresenta a maior possibilidade de se tornar um padrão, a XQuery que foi originada da sua antecessora XPath.

XPath, assim como abordou (MELLO, 2003, p.5),

“foi a primeira recomendação da W3C para consultar dados XML.”,

ela possui uma sintaxe semelhante à navegação em diretórios de arquivo Unix ou DOS. Ela é uma linguagem para navegação na estrutura de um documento XML e recuperação de fragmentos de documentos alcançados por uma expressão ou navegação. Apesar de atender diversas necessidades de consultas a XPath possui algumas limitações, como por exemplo, o fato de retornar apenas algumas porções de um documento XML e não ser capaz de realizar junções entre dados XML. Logo, tais deficiências foram discutidas pelo W3C que criou uma recomendação mais recente, a linguagem XQuery. Uma das principais características de evolução da XQuery em relação a XPath é a capacidade de construir novos nós na estrutura do documento XML.

Nenhum comentário:

Postar um comentário

Erro Assinador Serpro - ERR_SSL_VERSION_OR_CIPHER_MISMATCH - Windows

Se você já tentou de tudo e sempre aparece o erro de ERR_SSL_VERSION_OR_CIPHER_MISMATCH, siga os passos abaixo e resolva seu problema: Obs...