summaryrefslogtreecommitdiffhomepage
path: root/pt-br/xml-pt.html.markdown
blob: 6710b3873300514545effd5c8157757eb5637c90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
---
language: xml
filename: learnxml-pt.xml
contributors:
    - ["João Farias", "https://github.com/JoaoGFarias"]
translators:
    - ["Miguel Araújo", "https://github.com/miguelarauj1o"]
lang: pt-br
---

XML é uma linguagem de marcação projetada para armazenar e transportar dados.

Ao contrário de HTML, XML não especifica como exibir ou formatar os dados, apenas o transporta.

* Sintaxe XML

```xml
<!-- Comentários em XML são feitos desta forma -->

<?xml version="1.0" encoding="UTF-8"?>
<livraria>
	<livro category="COZINHA">
		<titulo lang="en">Everyday Italian</titulo>
		<autor>Giada De Laurentiis</autor>
		<year>2005</year>
		<preco>30.00</preco>
	</livro>
	<livro category="CRIANÇAS">
		<titulo lang="en">Harry Potter</titulo>
		<autor>J K. Rowling</autor>
		<year>2005</year>
		<preco>29.99</preco>
	</livro>
	<livro category="WEB">
		<titulo lang="en">Learning XML</titulo>
		<autor>Erik T. Ray</autor>
		<year>2003</year>
		<preco>39.95</preco>
	</livro>
</livraria>

<!-- Um típico arquivo XML é mostrado acima.
	Ele começa com uma declaração, informando alguns metadados (opcional).
	
	XML usa uma estrutura de árvore. Acima, o nó raiz é "Livraria", que tem
	três nós filhos, todos os 'Livros'. Esses nós tem mais nós filhos, 
	e assim por diante...
	
	Nós são criados usando tags abre/fecha, filhos são justamente os nós que 
	estão entre estes nós. -->


<!-- XML traz dois tipos de dados:
	1 - Atributos -> Isso é metadados sobre um nó.
			Normalmente, o parser XML usa esta informação para armazenar os dados
			corretamente. Caracteriza-se por aparecer em parênteses dentro da tag 
			de abertura.
	2 - Elementos -> É dados puros.
			Isso é o que o analisador irá recuperar a partir do arquivo XML. 
			Elementos aparecem entre as tags de abertura e fechamento, 
			sem parênteses. -->
			
	
<!-- Abaixo, um elemento com dois atributos -->
<arquivo type="gif" id="4293">computer.gif</arquivo>


```

* Documento bem formatado x Validação

Um documento XML é bem formatado se estiver sintaticamente correto.No entanto,
é possível injetar mais restrições no documento, utilizando definições de 
documentos, tais como DTD e XML Schema.

Um documento XML que segue uma definição de documento é chamado válido, sobre 
esse documento.

Com esta ferramenta, você pode verificar os dados XML fora da lógica da aplicação.

```xml

<!-- Abaixo, você pode ver uma versão simplificada do documento livraria,
com a adição de definição DTD.-->

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "livraria.dtd">
<livraria>
	<livro category="COOKING">
		<titulo >Everyday Italian</titulo>
		<preco>30.00</preco>
	</livro>
</livraria>

<!-- Este DTD poderia ser algo como:-->

<!DOCTYPE note
[
<!ELEMENT livraria (livro+)>
<!ELEMENT livro (titulo,preco)>
<!ATTLIST livro category CDATA "Literature">
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT preco (#PCDATA)>
]>


<!-- O DTD começa com uma declaração.
	Na sequência, o nó raiz é declarado, o que requer uma ou mais crianças nós 
	'Livro'. Cada 'Livro' deve conter exatamente um 'titulo' e um 'preco' e um 
	atributo chamado "categoria", com "Literatura", como o valor padrão.
	Os nós "título" e "preço" contêm um conjunto de dados de caráter analisados.-->

<!-- O DTD poderia ser declarado dentro do próprio arquivo XML .-->

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE note
[
<!ELEMENT livraria (livro+)>
<!ELEMENT livro (titulo,preco)>
<!ATTLIST livro category CDATA "Literature">
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT preco (#PCDATA)>
]>

<livraria>
	<livro category="COOKING">
		<titulo >Everyday Italian</titulo>
		<preco>30.00</preco>
	</livro>
</livraria>
```