Extensible Markup Language

Extensible Markup Language
Exemplo XML
Extensão do arquivo : .xml
Tipo MIME : aplicativo / xml, texto / xml
Número mágico : 3C 3F 78 6D 6C hex
<? Xml
Desenvolvido por: World Wide Web Consortium
Modelo: Linguagem de marcação
Prorrogado por: SGML
Expandido para: XHTML , RSS , Atom
Site : 1.0 (Quinta Edição)
1.1 (Segunda Edição)


A Extensible Markup Language (dt. Extensible Markup Language ), abreviado XML , é uma linguagem de marcação para representar dados estruturados hierarquicamente no formato de um arquivo de texto legível tanto por humanos quanto por máquina .

XML também é usado para a plataforma e implementação - troca independente de dados entre sistemas de computador , especialmente pela Internet , e foi publicado pelo World Wide Web Consortium (W3C) em 10 de fevereiro de 1998. A versão atual é a quinta edição de 26 de novembro de 2008. XML é uma metalinguagem , com base na qual as linguagens específicas do aplicativo são definidas por restrições estruturais e relacionadas ao conteúdo. Essas restrições são expressas por uma Definição de Tipo de Documento (DTD) ou por um esquema XML . Exemplos de linguagens XML são: RSS , MathML , GraphML , XHTML , XAML , Scalable Vector Graphics (SVG), GPX , mas também o próprio esquema XML.

A codificação de caracteres padrão de um documento XML é UTF-8 . Os sistemas que processam XML devem ser capazes de usar as codificações UTF-8 e UTF-16 . Documentos XML que usam UTF-8 ou UTF-16 podem ser visualizados e editados em qualquer editor de texto que suporte essas codificações.

Se o documento XML deve conter dados binários, esses dados devem ser recodificados como texto. Para este propósito, z. B. A codificação Base64 pode ser usada.

Termos técnicos

elemento

A unidade estrutural mais importante de um documento XML é o elemento . Os elementos podem conter texto, bem como outros elementos como conteúdo. Os elementos formam os nós da árvore de estrutura de um documento XML. O nome de um elemento XML pode ser selecionado livremente em documentos XML sem uma Definição de Tipo de Documento (DTD) . Em documentos XML com DTD, o nome de um elemento deve ser declarado no DTD e o elemento deve estar em uma posição permitida na árvore de estrutura de acordo com o DTD . No DTD, inter alia define o conteúdo possível de cada elemento. Elementos são os portadores de informações em um documento XML.

Dia

Tags são usadas para marcar elementos:

  • um dia de início para o início de um elemento: <Elementname>
  • uma tag final para o final de um elemento: </Elementname>
  • uma tag em branco para um elemento sem conteúdo: <Leer/>

Bem formada

Um documento XML é "bem formado" (ou inglês bem formado ) se obedecer a todas as regras do XML. A seguir estão alguns exemplos:

  • O documento possui exatamente um elemento raiz. O elemento mais externo em cada caso é referido como o elemento raiz, por ex. B. <html>em XHTML .
  • Todos os elementos com conteúdo têm uma tag de início e fim (por exemplo <eintrag>Eintrag 1</eintrag>). Elementos sem conteúdo podem ser marcados com um espaço em branco (por exemplo <eintrag />).
  • As tags de início e fim são aninhadas em pares. Isso significa que todos os elementos devem ser fechados antes que os marcadores finais do elemento pai correspondente ou os marcadores iniciais de um elemento irmão apareçam.
  • Um elemento não pode ter vários atributos com o mesmo nome.
  • Os valores dos atributos devem ser colocados entre aspas ( "..."ou '...').
  • As tags de início e fim diferenciam maiúsculas de minúsculas (por exemplo, <eintrag></Eintrag>não é válido).

Validade

Se o XML for usado para troca de dados , é vantajoso que o formato seja definido por meio de uma gramática (por exemplo, uma definição de tipo de documento ou um esquema XML ). A norma define um documento XML como válido (ou válido em inglês ) se for bem formado, contém a referência a uma gramática e obedece ao formato descrito pela gramática.

Parser

Os programas ou partes do programa que lêem, interpretam e, se necessário, verificam a validade dos dados XML, são chamados de analisadores XML . Se o analisador verificar a validade, ele é um analisador de validação .

Estrutura de um documento XML

Exemplo de um arquivo XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<verzeichnis>
     <titel>Wikipedia Städteverzeichnis</titel>
     <eintrag>
          <stichwort>Genf</stichwort>
          <eintragstext>Genf ist der Sitz von ...</eintragstext>
     </eintrag>
     <eintrag>
          <stichwort>Köln</stichwort>
          <eintragstext>Köln ist eine Stadt, die ...</eintragstext>
     </eintrag>
</verzeichnis>

Os documentos XML possuem uma estrutura física e lógica.

Estrutura física

  • A entidade Documento contém o documento principal.
  • Outras entidades possíveis são sobre
    • Referências de entidades ( &name;para o documento ou %name;para a definição do tipo de documento) cadeias de caracteres integradas, possivelmente também arquivos inteiros, bem como referências a entidades de caracteres para a integração de caracteres individuais referenciados por seu número ( ou ).&#Dezimalzahl;&#xHexadezimalzahl;
  • Uma declaração XML é usada para especificar a versão XML, codificação de caracteres e possível processabilidade sem um DTD .
  • Uma definição de tipo de documento é usada para especificar entidades e a estrutura lógica permitida. O uso de um DTD pode ser desmarcado na declaração XML .

Estrutura lógica

A estrutura lógica corresponde a uma estrutura em árvore e, portanto, é organizada hierarquicamente. Os nós da árvore são:

  • Elementos cuja identificação física se dá por meio de
    • um par adequado de dia de início e dia de término ou<Tagname></Tagname>
    • pode ocorrer em um dia vazio ,<Tagname/>
  • Atributos como propriedades adicionais dos elementos na sintaxe escrita para um dia de início ou dia vazio ,Attributname="Attributwert"
  • Instruções de processamento (inglês. Instruções de processamento )<?Zielname Daten?>
  • Comentários e<!-- Kommentar-Text -->
  • Texto que pode aparecer como dados de caracteres normais ou na forma de uma seção CDATA .<![CDATA[ beliebiger Text]]>

Um documento XML deve conter exatamente um elemento de nível superior. Outros elementos e texto podem ser aninhados abaixo deste elemento do documento.

DTD

Uma definição de tipo de documento (DTD) descreve a estrutura e a gramática dos documentos. Faz parte do sistema XML e é ativado por padrão.

Se os documentos forem criados com referência a uma definição de tipo de documento externo ou com uma definição de tipo de documento integrada, o analisador verifica o documento assim que ele é aberto (lido). Um documento baseado em uma definição de tipo de documento é sempre um documento válido. O foco está na conformidade do conteúdo do documento com as regras de definição do tipo de documento. A legibilidade técnica, incluindo a leitura de documentos inválidos, é de importância secundária. Destina-se a documentos de texto completo ( documentos narrativos ) e é o objetivo principal.

Documentos sem DTD são mais adequados para qualquer troca de dados. O analisador só verifica esses documentos de acordo com as regras de boa formação. A legibilidade técnica é a principal prioridade aqui. As informações reais são verificadas e lidas usando processos downstream.

Legibilidade de documentos XML

Praticamente todos os navegadores como Apple Safari , Google Chrome , Microsoft Internet Explorer , Mozilla Firefox e Opera podem visualizar documentos XML diretamente com a ajuda do analisador XML integrado .

Classificação de documentos XML

Os documentos XML podem ser divididos em documentos centrados no documento e nos documentos centrados nos dados com base no uso pretendido e no grau de estrutura. No entanto, a fronteira entre esses tipos de documentos é fluida. Formas mistas pode ser descrito como semi -structured.

  • centrado no documento: o documento é baseado em um documento de texto que é amplamente compreensível para o leitor humano, mesmo sem as metainformações adicionais. Os elementos XML são usados ​​principalmente para a marcação semântica de passagens no documento; o documento é apenas mal estruturado. O processamento da máquina é difícil devido à estrutura fraca.
  • centrado em dados: o documento destina-se principalmente ao processamento por máquina. Ele segue um esquema que descreve as entidades de um modelo de dados e define o relacionamento entre as entidades e os atributos das entidades. O documento é, portanto, altamente estruturado e menos adequado para uso humano direto.
  • semiestruturado: documentos semiestruturados representam um tipo de forma híbrida que é mais estruturada do que documentos centrados em documentos, mas mais fraca do que documentos centrados em dados.

É típico de documentos XML centrados em dados que os elementos tenham conteúdo de elemento ou conteúdo de texto. O chamado conteúdo misto, no qual os elementos contêm texto e elementos filho, é típico para os outros documentos XML.

Processamento de XML

Critérios de processamento

Basicamente, três aspectos são importantes ao acessar um documento XML:

  • Como o arquivo XML é acessado: sequencialmente ou aleatoriamente?
  • Como é projetado o processo de acesso aos dados XML: "Push" ou "Pull"? (Push significa que o analisador controla o fluxo do programa. Pull significa que o controle do fluxo é implementado no código que chama o analisador).
  • Como é feita a gestão da estrutura em árvore dos dados XML: hierárquica ou aninhada?

Acesso programático a documentos XML

Os documentos XML são lidos no nível mais baixo usando um componente de programa especial, um processador XML , também conhecido como analisador XML. Ele fornece uma interface de programação (API) por meio da qual o aplicativo acessa o documento XML.

Os processadores XML suportam três modelos básicos de processamento.

  • DOM : um DOM-API representa um documento XML como uma estrutura em árvore e concede acesso aleatório aos componentes individuais da estrutura em árvore. Além de ler documentos XML, o DOM também permite que a estrutura em árvore seja manipulada e a estrutura em árvore seja gravada de volta em um documento XML. Por causa disso, o DOM consome muita memória.
  • SAX : uma API SAX representa um documento XML como um fluxo de dados sequencial e chama as funções de retorno de chamada especificadas no padrão para eventos. Uma aplicação que usa SAX pode registrar suas próprias sub-rotinas como funções de callback e desta forma avaliar os dados XML.
  • API de pull : uma API de pull de XML processa dados sequencialmente e oferece processamento baseado em eventos e um iterador . É altamente eficiente em termos de memória e, se necessário, mais fácil de programar do que o SAX-API, uma vez que o controle do processo está com o programa e não com o analisador.

Modelos de processamento adicional:

  • Ligação de dados : esta opção fornece dados XML como uma estrutura de dados diretamente para acesso ao programa. Os dados XML são desempacotados diretamente em z. B. Objetos convertidos.
  • API XML sem extração : os dados são processados ​​de forma muito eficiente no nível de byte.

Muitas vezes, o código do aplicativo não acessa a API do analisador diretamente. Em vez disso, o XML é ainda mais encapsulado para que o código do aplicativo funcione com objetos / estruturas de dados nativos baseados em XML. Exemplos de tais camadas de acesso são JAXB em Java , o Data Binding Wizard em Delphi ou o XML Schema Definition Toolkit em .Net . A conversão de objetos em XML geralmente é bidirecional. Essa conversão é conhecida como serialização ou empacotamento .

Exemplos de API do analisador XML

APIs de analisador XML estão disponíveis para várias linguagens de programação, como: B. Java , C , C ++ , C # , Python , Perl e PHP . Exemplos de API do analisador:

  • XML :: Parser ( Perl ): Um analisador XML para Perl. Uma API muito simples oferece, por exemplo, B. também o módulo CPAN XML :: Simple.
  • Funções DOM (PHP5): Módulo em PHP5 para leitura de documentos XML; alternativamente simpleXML; para PHP4 existe DOM XML.
  • StAX (Java) : Uma implementação de analisador (pull) altamente eficiente em memória e ao mesmo tempo fácil de programar. Modelos de processamento de cursor e iterador são oferecidos.
  • JAXB : Data Binding para Java. Por exemplo, a classe Java correspondente pode ser gerada a partir de um esquema XML e vice-versa.
  • Apache XMLBeans Java Data Binding Framework, já pode ser usado com Java 1.4.2
  • Xerces : Um analisador XML de validação para C ++, Java e Perl para uma ampla variedade de plataformas.
  • ElementTree iterparse : uma API de analisador para Python que itera em subárvores. Ele combina a eficiência de armazenamento de um analisador pull com a simplicidade de um analisador DOM.
  • VTD-XML : Exemplo de XML-API não extraível.
  • MSXML : Microsoft XML Core Services, a biblioteca de software Microsoft XML para suporte a XML via DOM, SAX, XSLT, esquemas XML e outras tecnologias relacionadas a XML
  • Pugixml : Um analisador DOM XML para C ++ cujo desenvolvimento deu ênfase especial ao código eficiente.

Existem programas especiais, os chamados editores XML, para a criação de documentos XML . Existem também programas especiais, os chamados bancos de dados XML, para armazenar e gerenciar documentos XML .

Transformação e representação de documentos XML

Um documento XML pode ser transformado em outro documento usando linguagens de transformação adequadas, como XSLT ou DSSSL . A transformação é freqüentemente usada para transferir um documento de uma linguagem XML para outra linguagem XML, por exemplo, para transformá-lo em XHTML, a fim de exibir o documento em um navegador da web.

Linguagens de esquema

As chamadas linguagens de esquema são usadas para descrever a estrutura das linguagens XML .

Esquema XML / XSD

Esquema XML (ou XSD para definição de esquema XML) é a maneira moderna de descrever a estrutura de documentos XML. O XML Schema também oferece a possibilidade de restringir o conteúdo de elementos e atributos, por ex. B. em números, datas ou textos, por ex. B. usando expressões regulares . Um esquema é em si um documento XML que permite que relacionamentos mais complexos (também relacionados ao conteúdo) sejam descritos do que seria possível com um DTD formal.

Mais linguagens de esquema

Outras linguagens de esquema são Document Structure Description , RELAX NG e Schematron .

Família XML

A infraestrutura

Em conexão com XML, o consórcio W3 definiu muitas linguagens com base em XML, que oferecem expressões XML para funções gerais frequentemente necessárias, como a vinculação de documentos XML. Numerosas linguagens XML usam esses blocos de construção básicos.

  • Transformação de documentos XML: XSLT , STX
  • Endereçando partes de uma árvore XML: XPath
  • Vinculando recursos XML: XPointer , XLink e XInclude
  • Seleção de dados de um registro de dados XML: XQuery
  • Manipulação de dados em um registro de dados XML: XUpdate
  • Elaboração de formulários eletrônicos: XForms
  • Definição de estruturas de dados XML: XML Schema (= XSD, XML Schema Definition Language), DTD e RELAX NG
  • Assinatura e criptografia de nós XML : assinatura XML e criptografia XML
  • Declarações sobre o conteúdo formal da informação: XML Infoset
  • Representação formatada de dados XML: XSL-FO
  • Definição do método ou chamada de função por sistemas distribuídos: XML-RPC
  • Atributos padronizados: XML Base e ID (DTD)
  • Linguagem de programação declarativa baseada em XML: MXML

línguas

Hoje, muitas linguagens formais usam a sintaxe XML. XML é um instrumento essencial para a criação de uma paisagem de informação aberta ( web semântica ) que seja compreensível para humanos e máquinas - como pretendido pelo W3C .

A conhecida linguagem de documentos HTML também foi integrada neste conceito como "Extensible HyperText Markup Language" ( XHTML ) a partir da versão 4.01, de forma que agora é baseada em XML como base de definição. Uma razão comum para usar XML é a numerosa presença de analisadores e a sintaxe simples: a definição de SGML compreende 500 páginas, a de XML apenas 26.

As listas a seguir representam algumas dessas linguagens XML.

texto

  • XSL-FO (formatação de texto)
  • DocBook
  • DITA
  • XHTML (HTML compatível com XML)
  • TEI (Iniciativa de Codificação de Texto)
  • NITF (formato de texto da indústria de notícias)
  • OPML (Outline Processor Markup Language)
  • OSIS (Padrão de Informação de Escritura Aberta)

gráfico

  • SVG (gráficos vetoriais)
  • X3D (linguagem de modelagem 3D)
  • Collada (formato de troca de dados entre diferentes programas 3D)

Dados geoespaciais

multimídia

  • MEI (Iniciativa de Codificação de Música)
  • MusicXML (dados de partituras, música gravada)
  • SMIL (sincronizado com o tempo, conteúdo multimídia)
  • MPEG-7 (metadados MPEG-7)
  • Laszlo (LZX)

segurança

Engenharia

  • AutomationML , um formato para armazenar dados de planejamento do sistema
  • CAEX , um formato para armazenar informações hierárquicas de objetos
  • GSDML, um formato para descrever dispositivos de automação que podem se comunicar com Profinet
  • IODD , um formato para descrever sensores e atuadores
  • PLMXML, um formato para descrever os dados do produto como parte do software Siemens PLM
  • LandXML, um formato para armazenar objetos georreferenciados
  • RTML (Remote Telescope Markup Language), um formato para descrever solicitações de observação astronômica

Avançar

Além disso, existem linguagens XML para serviços da web (por exemplo , SOAP , WSDL e WS- * ), para a integração de código Java em documentos XML ( XSP ), para a sincronização de dados de calendário SyncML , fórmulas matemáticas ( MathML ), Representação de gráficos ( GraphML ), procedimentos no domínio da web semântica ( RDF , OWL , Topic Maps , UOML ), prestação de serviços ( SPML ), troca de mensagens ( XMPP ) ou relatórios financeiros como demonstrações financeiras anuais ( XBRL ) , em áreas da indústria automotiva ( ODX , MSRSW , modelos AUTOSAR , QDX , JADM , OTX ), teste automatizado, por ex. B. de circuitos ( ATML ) para biologia de sistemas ( SBML ) e agricultura ( AgroXML ) para publicação ( ONIX ) ou química (CIDX) e muitos mais.

Um resumo das linguagens XML para aplicativos do Office pode ser encontrado no formato de troca OpenDocument ( OASIS Open Document Format para aplicativos do Office ).

Formatos alternativos

Curiosidades

Linus Torvalds descreveu o XML como inadequado como linguagem de marcação (Comentário nº 19):

“XML é uma porcaria. Mesmo. Não há desculpas. XML é desagradável de analisar para humanos e é um desastre para analisar até mesmo para computadores. Simplesmente não há razão para essa porcaria horrível existir. "

- Linus Torvalds, 2014

literatura

  • Charles F. Goldfarb, Paul Prescod: XML Handbook . Mercado e Tecnologia, Munique [u. a.] 1999, ISBN 3-8272-9575-0 .
  • Wiebke Möhr, Ingrid Schmidt: SGML e XML: aplicativos e perspectivas . Springer-Verlag, Berlin / Heidelberg / New York [u. a.] 1999, ISBN 3-540-65543-3 .
  • Robert Eckstein: XML - curto e bom . O'Reilly Verlag, Cambridge / Cologne [u. a.] 2000, ISBN 3-89721-219-6 .
  • Henning Lobin: Modelagem de informação em XML e SGML . Springer, Berlin 2000, ISBN 3-540-65356-2 .
  • Michael Seeboerger-Weichselbaum: O seminário para iniciantes XML . 2ª edição revisada. BHV Software, Kaarst 2000, ISBN 3-8287-1018-2 .
  • Elliotte Rusty Harold: The XML Bible . 2ª edição atualizada. mitp, Bonn 2002, ISBN 3-8266-0821-6 .
  • Stefan Mintert: XML & Co. As especificações W3C para arquitetura de documentos e dados . Addison-Wesley, Munich 2002, ISBN 3-8273-1844-0 .
  • Christine Kränzler: XML / XSL -… para iniciantes profissionais. para livro e web . Markt + Technik, Munich 2002, ISBN 3-8272-6339-5 .
  • Frank Bitzer: XML na empresa. Briefing para gestão de TI . Galileo Press, Bonn 2002, ISBN 3-89842-288-7 .
  • Erik T. Ray: Introdução ao XML . O'Reilly, 2004, ISBN 3-89721-286-2 .
  • Margit Becher: XML: DTD, XML-Schema, XPath, XQuery, XSLT, XSL-FO, SAX, DOM . W3L Verlag, Witten 2009, ISBN 978-3-937137-69-8 .
  • Marco Skulschus, Marcus Wiederstein: XML: Padrões e tecnologias . Comelio Medien, Berlin 2009, ISBN 978-3-939701-21-7 .
  • Helmut Vonhoegen: Introdução ao XML. Padrões atuais: Esquema XML, XSL, XLink . 8ª edição. Rheinwerk, 2015, ISBN 978-3-8362-3798-7 .

Links da web

Commons : XML  - coleção de imagens, vídeos e arquivos de áudio
Wikilivros: Desenvolvimento de site: XML  - materiais de aprendizagem e ensino

Evidência individual

  1. Extensible Markup Language (XML) 1.0. w3.org, 10 de fevereiro de 1998, arquivado do original em 15 de junho de 2006 ; acessado em 12 de fevereiro de 2017 .
  2. Extensible Markup Language (XML) 1.0 (Quinta Edição). w3.org, 26 de novembro de 2008, acessado em 12 de fevereiro de 2017 .
  3. Personagens. Em: Extensible Markup Language (XML) 1.0 (Quinta Edição). 26 de novembro de 2008, acessado em 9 de março de 2019 .
  4. plm.automation.siemens.com
  5. Linguagem de marcação do telescópio remoto (RTML), código bib : 2006AN .... 327..751H
  6. Comentário na discussão sobre XML como linguagem de marcação (6 de março de 2014) . ( plus.google.com [acessado em 10 de abril de 2017]).