Fundamentos da Sintaxe XML
Aula 1 de 5
Estrutura de um Documento XML
XML (eXtensible Markup Language) é um formato de texto para representação de dados estruturados. Todo documento XML deve ter uma estrutura hierárquica com um único elemento raiz.
<?xml version="1.0" encoding="UTF-8"?>
<livro>
<titulo id="123">Aprendendo XML</titulo>
<autor>João Silva</autor>
<ano>2024</ano>
</livro>
Elementos e Atributos
Elementos são os blocos fundamentais do XML. Atributos fornecem metadados sobre elementos.
<!-- Elemento vazio sem atributos -->
<br></br>
<br/> <!-- forma abreviada -->
<!-- Elemento com múltiplos atributos -->
<produto codigo="P001" categoria="software" ativo="true">
<nome>Editor XML Pro</nome>
<preco moeda="BRL">299.90</preco>
</produto>
Comentários e CDATA
Comentários são ignorados pelo parser. CDATA preserva texto literal sem parsing.
<!-- Isto é um comentário -->
<descricao>
Texto normal com & < >
</descricao>
<![CDATA[
Texto literal: a < b & c > d
Pode conter qualquer caractere sem escapes
]]>
Well-Formed vs Valid
Um documento well-formed segue as regras básicas de sintaxe XML. Um documento valid obedece a uma DTD ou XSD.
<!-- well-formed: sintaxe correta -->
<nota>
<para>Maria</para>
<de>João</de>
</nota>
<!-- well-formed mas inválido se o schema exigir elemento <data> -->
<nota>
<para>Maria</para>
</nota>
Encoding e Declaration
A declaração XML deve estar na primeira linha. O encoding define a codificação do documento.
# Verificar encoding de um arquivo XML
file -i documento.xml
# Resultado: documento.xml: text/xml; charset=utf-8
# Converter encoding com iconv
iconv -f ISO-8859-1 -t UTF-8 input.xml > output.xml
Lab: Criando Documentos XML
Crie um documento XML para um catálogo de produtos.
# 1. Criar arquivo catalogo.xml
cat << 'EOF' > catalogo.xml
<?xml version="1.0" encoding="UTF-8"?>
<catalogo>
<produto id="101">
<nome>Notebook Pro</nome>
<preco moeda="BRL">4999.00</preco>
<categoria>Eletrônicos</categoria>
<estoque>15</estoque>
</produto>
<produto id="102">
<nome>Mouse Wireless</nome>
<preco moeda="BRL">129.90</preco>
<categoria>Periféricos</categoria>
<estoque>42</estoque>
</produto>
</catalogo>
EOF
# 2. Validar well-formed com xmllint
xmllint --noout catalogo.xml
# 3. Extrair valores com xmllint --xpath
xmllint --xpath "//produto[nome='Notebook Pro']/preco/text()" catalogo.xml
XML bem-formado é requisito mínimo; XML válido é requisito de qualidade.