aboutsummaryrefslogtreecommitdiff
path: root/pt_BR.ISO8859-1/books/fdp-primer/sgml-primer/chapter.xml
blob: fe4d59da50809d9b7905e9e09dfd4bcabadc1a6f (plain) (blame)
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.

     Redistribution and use in source (SGML DocBook) and 'compiled' forms
     (SGML, HTML, PDF, PostScript, RTF and so forth) with or without
     modification, are permitted provided that the following conditions
     are met:

      1.  Redistributions of source code (SGML DocBook) must retain the above
	 copyright notice, this list of conditions and the following
	 disclaimer as the first lines of this file unmodified.

      2.  Redistributions in compiled form (transformed to other DTDs,
	 converted to PDF, PostScript, RTF and other formats) must reproduce
	 the above copyright notice, this list of conditions and the
	 following disclaimer in the documentation and/or other materials
	 provided with the distribution.

     THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
     IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     DISCLAIMED.  IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
     INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
     ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
     POSSIBILITY OF SUCH DAMAGE.

     The FreeBSD Documentation Project
     The FreeBSD Brazilian Portuguese Documentation Project

     $FreeBSD$

     Original revision: r38826

-->

<chapter id="sgml-primer">
  <title>SGML Primer</title>

  <para>A maioria dos documentos do FDP  escrita utilizando 
    SGML.  Este captulo ir explicar exatamente o que 
    isso significa, como ler e compreender os fontes dos documentos 
    e os truques de SGML que voc ir se defrontar na 
    documentao.</para>

  <para>Partes desta seo foram inspiradas no documento 
    <ulink url="http://www.galassi.org/mark/mydocs/docbook-intro/docbook-intro.html">
    Comeando a utilizar o DocBook</ulink> de autoria do 
    Mark Galassi.</para>

  <sect1 id="sgml-primer-overview">
    <title>Viso Geral</title>

    <para>Antigamente, era simples de se lidar com um texto
      eletrnico.  Naquela poca, voc tinha que 
      saber em qual conjunto de caracteres o seu documento havia sido 
      escrito (ASCII, EBCDIC ou um dos inmeros outros), e mais 
      nada.  O texto era texto, e o que voc via era 
      realmente o que voc tinha.  Nenhuma frescura, nenhuma 
      formatao, nenhuma inteligncia.</para>

    <para>Inevitavelmente, isto no era o suficiente.  
      Uma vez que voc tem o texto em uma mquina num 
      formato utilizvel, voc espera que o equipamento 
      seja capaz de us-lo e manipul-lo de forma 
      inteligente.  Voc pode desejar indicar que uma 
      determinada frase deve ser enfatizada, ou adicionada a um 
      glossrio, ou ser interligada a outra parte do 
      documento.  Voc pode querer que os nomes dos arquivos 
      sejam exibidos com uma fonte de estilo <quote>typewriter</quote>
      quando forem exibidos na tela, mas como <quote>itlico
      </quote> quando impresso, ou qualquer outra opo 
      dentre a infinidade de opes disponveis para
      apresentao.</para>

    <para>Esperava-se que a inteligncia artificial (AI) 
      torna-se isso fcil.  O seu computador leria o 
      documento e identificaria automaticamente as frases chave, 
      nomes de arquivos, os campos que o leitor teria que preencher, 
      e muito mais.  Infelizmente, a vida real no evoluiu 
      como esperado, e os nossos computadores necessitam de algum 
      auxlio antes que eles possam processar significativamente 
      nosso texto.</para>

    <para>Mais precisamente, eles precisam de ajuda para identificar
      o que  o que.  Vejamos o texto abaixo:</para>

      <blockquote>
	<para>Para remover o <filename>/tmp/foo</filename> utilize 
	  &man.rm.1;.</para>

	<screen>&prompt.user; <userinput>rm /tmp/foo</userinput></screen>
      </blockquote>

      <para>Nele podemos facilmente visualizar quais partes 
	so nomes de arquivos, quais so comandos que 
	devem ser digitados, quais partes so 
	referncias s pginas de manual, etc.  
	Mas o computador processando o documento no pode.  
	Para isto ns precisamos utilizar uma 
	marcao (<literal>markup</literal>).</para>

    <para>A <quote>marcao</quote>  comumente 
      utilizada para descrever a <quote>adio de 
      valor</quote> ou o <quote>aumento de custo</quote>.  O termo 
      (term) faz exame de ambos os meios quando aplicados ao texto.  
      A marcao  um texto adicional includo 
      no documento, e de alguma forma destacado do seu contedo,
      de modo que os programas que forem process-lo possam ler 
      as marcaes e utiliz-las ao tomar 
      decises sobre o documento.  Os editores podem ocultar 
      a marcao do usurio, de forma que o 
      usurio no se distraia com ele.</para>

    <para>As informaes extras armazenadas na 
      marcao <emphasis>adicionam valor</emphasis> ao 
      documento.  Tipicamente a adio da 
      marcao ao documento precisa ser realizada por 
      uma pessoa &mdash; apesar de tudo, se os computadores pudessem
      reconhecer suficientemente bem o texto para adicionar as
      marcaes, ento no haveria 
      necessidade de adicion-las em primeiro lugar.  Isto 
      <emphasis>aumenta o custo</emphasis> (isto , o 
      esforo requerido) para criar o documento.</para>

    <para>O exemplo acima foi na verdade escrito neste documento
      como se segue:</para>

    <programlisting><![CDATA[
<para>Para remover <filename>/tmp/foo</filename> utilize &man.rm.1;.</para>

<screen>&prompt.user; <userinput>rm /tmp/foo</userinput></screen>]]></programlisting>

    <para>Como voc pode ver, a marcao 
      est claramente separada do contedo.</para>

    <para>Obviamente, se voc estiver iniciando no uso de 
      marcaes, voc precisa definir o que a 
      sua marcao significa, e como ela ser 
      interpretada.  Voc vai precisar de uma linguagem de
      marcao a qual voc possa seguir quando 
      estiver marcando os seus documentos.</para>

    <para>Naturalmente, uma linguagem de marcao pode 
      no ser o bastante.  Os requisitos de uma linguagem de 
      marcao destinada formatao de 
      documentos tcnicos so diferentes dos requisitos
      de uma linguagem de marcao destinada a 
      formatao de receitas culinrias.  Esta, 
      por sua vez, seria muito diferente de uma linguagem de 
      marcao usada para formatar poemas.  O que 
      voc realmente precisa  de uma linguagem 
      primria, a qual voc possa utilizar para 
      escrever estas e outras linguagens de marcao.
      Uma <emphasis>meta linguagem de 
      marcao</emphasis>.</para>

    <para> exatamente isso que a <foreignphrase>Standard 
      Generalized Markup Language</foreignphrase> (SGML) .  
      Muitas linguagens de marcao foram escritas em 
      SGML, incluindo as duas mais utilizadas pelo FDP, o HTML e o 
      DocBook.</para>

    <para>Cada definio de linguagem  mais 
      corretamente chamada de Definio de Tipo de 
      Documento (DTD).  O DTD especifica o nome dos elementos que 
      podem ser utilizados, em qual ordem eles aparecem (e se alguma 
      marcao pode ser utilizada dentro de outra
      marcao) e as informaes 
      relacionadas.  Um DTD  algumas vezes referenciado como 
      uma <emphasis>aplicao</emphasis> do SGML.</para>

    <para id="sgml-primer-validating">Um DTD  uma 
      especificao <emphasis>completa</emphasis> de 
      todos os elementos que podem ser utilizados, da ordem em que 
      podem aparecer, quais elementos so obrigatrios,
      quais so opcionais, e assim por diante.  Isto torna 
      possvel escrever um interpretador (parser) SGML, que 
      leia ambos os DTD e um documento que reividique se adequar ao 
      DTD.  O interpretador pode ento confirmar se todos os 
      elementos obrigatrios do DTD esto (ou 
      no) presentes no documento na ordem correta, e se 
      existem erros na marcao.  Isto  
      normalmente referenciado como <quote>validao 
      do documento</quote>.</para>

    <note>
      <para>Este processamento simplesmente confirma se a escolha 
	dos elementos, a sua ordenao, etc, 
	esto de acordo com o especificado no DTD.  Ele <emphasis>
	no</emphasis> verifica se voc utilizou a 
	marcao <emphasis>adequada</emphasis> para o
	contedo.  Se voc tentasse marcar todos os 
	nomes de arquivo em seu documento como nomes de 
	funes, o interpretador no iria 
	apontar isto como um erro (assumindo, naturalmente, que a sua
	DTD define elementos para nomes de arquivos e para 
	funes, e que eles podem ser utilizados nos 
	mesmos lugares).</para>
    </note>

    <para> provvel que a maioria das suas 
      contribuies ao projeto de 
      documentao iro se constituir de 
      contedos marcados tanto em HTML quanto em DocBook,  
      em vez de alteraes nos DTDs.
      Por esta razo este livro no ir abordar 
      a criao de um DTD.</para>
  </sect1>

  <sect1 id="sgml-primer-elements">
    <title>Elementos, tags, e atributos</title>

    <para>Todos os DTDs escritos em SGML compartilham certas
      caractersticas.  Isto  uma dura surpresa, 
      como a filosofia por de trs do SGML nos  
      mostrar ser completamente inevitvel.  Uma das 
      manifestaes mais bvias desta filosofia 
      est no <emphasis>contedo</emphasis> e nos 
      <emphasis>elementos</emphasis>.</para>

    <para>A sua documentao (independente se  
      uma nica pgina web ou um livro longo)  
      composta de contedo.  Este contedo  
      ento dividido (e de novo subdividido) em elementos.  O 
      propsito da adio de 
      marcaes  atribuir nome e identidade 
      para os limites destes elementos de forma a possibilitar o 
      processamento adicional.</para>

    <para>Por exemplo, considere um livro tpico.  No 
      nvel mais alto, o livro por si s  um 
      elemento.  Este elemento <quote>livro</quote> (book) obviamente
      contm captulos, os quais tambm podem
      ser considerados elementos em sua prpria forma.  Cada 
      captulo ir conter mais elementos, tais como 
      pargrafos, citaes, notas de 
      rodap, etc.  Cada pargrafo pode conter 
      elementos adicionais, identificando o contedo que era 
      de discurso direto, ou o nome de um personagem da 
      histria.</para>

    <para>Voc pode preferir pensar nisto como uma
      <quote>quebra</quote> do contedo.  No nvel 
      mais alto voc tem um pedao, o Livro.  Olhando 
      um pouco mais abaixo, voc tem mais pedaos, os 
      captulos individuais.  Estes esto divididos 
      em pedaos ainda menores, os pargrafos, notas 
      de rodap, nomes de personagens, etc.</para>

    <para>Observe que voc pode fazer esta 
      diferenciao entre os diferentes elementos do 
      contedo sem recorrer a nenhum termo SGML.  Na 
      realidade  surpreendentemente fcil de usar.
      Voc pode fazer isso utilizando uma caneta de 
      marcao e uma cpia impressa do livro, 
      utilizando diferentes cores para indicar os diferentes 
      pedaos do contedo.</para>

    <para>Naturalmente, ns no possumos uma caneta 
      eletrnica de marcao, assim ns 
      necessitamos de alguma outra maneira de indicar a que elemento 
      cada pea de contedo pertence.  Nas linguagens 
      escritas em SGML (HTML, DocBook, etc) isto  feito
      atravs do uso de <emphasis>tags</emphasis>.</para>

    <para>Uma tag  utilizada para identificar onde um elemento
      particular comea e onde ele termina.  <emphasis>A tag 
      no  uma parte prpria do elemento
      </emphasis>.  Porque cada DTD foi normalmente escrito para 
      marcar um tipo especfico de informao, 
      cada um deles reconhecer diferentes elementos, e
      ter nomes diferentes para cada tag.</para>

    <para>Para um elemento chamado <replaceable>element-name
      </replaceable> a tag de incio normalmente ir 
      se parecer com 
      <sgmltag><replaceable>element-name</replaceable></sgmltag>.  E 
      a tag correspondente de fechamento para este elemento seria 
      <sgmltag>/<replaceable>element-name</replaceable></sgmltag>.
      </para>

    <example>
      <title>Utilizando um elemento (tags de inicio e fim)</title>

      <para>O HTML possui um elemento para indicar que o 
	contedo envolvido por este elemento  um 
	pargrafo, chamado <sgmltag>p</sgmltag>.  Este 
	elemento possui ambas as tags de incio e de fim.
	</para>

      <programlisting><![CDATA[<p>Este  um pargrafo.  Ele inicia com a tag de inicio do 
  elemento 'p', e ir terminar com a tag de fim para o 
  elemento 'p'.</p>

<p>Este  um outro pargrafo.  Mas este  muito menor.</p>]]></programlisting>	  
    </example>

    <para>Nem todos os elementos requerem uma tag de 
      finalizao.  Alguns elementos no 
      possuem contedo.  Por exemplo, em HTML voc pode 
      indicar que deseja que uma linha horizontal aparea no
      documento.  Obviamente, esta linha no possui 
      contedo, assim apenas a tag de inicio  
      requerida para este elemento.</para>

    <example>
      <title>Utilizando um elemento (Apenas tag de incio)
	</title>

      <para>O HTML possui um elemento para indicar uma linha 
	horizontal, chamado <sgmltag>hr</sgmltag>.  Este elemento 
	no contm nenhum contedo, assim ele 
	possui apenas uma tag de inicio.</para>

      <programlisting><![CDATA[<p>Este  um pargrafo.</p>

<hr>

<p>Este  outro pargrafo.  Uma linha horizontal o separa do 
  pargrafo anterior.</p>]]></programlisting>
    </example>

    <para>Se isto no  bvio agora, os 
      elementos podem conter outros elementos.  No exemplo anterior 
      do livro, o elemento livro continha todos os elementos 
      captulos, os quais por sua vez continham todos os 
      elementos pargrafos, etc.</para>

    <example>
      <title>Elementos contendo elementos; <sgmltag>em</sgmltag>
	</title>

      <programlisting><![CDATA[<p>Este  um <em>pargrafo</em> simples no qual 
  algumas das <em>palavras</em> foram <em>enfatizadas</em>.</p>]]></programlisting>
    </example>

    <para>O DTD ir especificar as regras detalhando quais 
      elementos podem conter outros elementos, e o que exatamente 
      eles podem conter.</para>

    <important>
      <para>As pessoas sempre confundem os termos tags e elementos, 
	e utilizam os termos como se eles fossem 
	intercambiveis.  Eles no so.</para>

      <para>Um elemento  uma parte conceitual do seu 
	documento.  Um elemento possui um inicio e fim determinados.  
	As tags marcam onde os elementos comeam e terminam.
      </para>

      <para>Quando este documento (ou qualquer pessoa que 
	conhea SGML) se refere a <quote>tag 
	<sgmltag>p</sgmltag></quote> estamos nos referindo 
	literalmente ao texto de trs caracteres
	<literal>&lt;</literal>, <literal>p</literal> e
	<literal>&gt;</literal>.  Mas a frase <quote>o elemento
	<sgmltag>p</sgmltag></quote> se refere ao elemento inteiro.
	</para>

      <para>Esta distino 
	<emphasis></emphasis> muito sutil.  Mas mantenha ela 
	em mente</para>
    </important>

    <para>Os elementos podem ter atributos.  Um atributo possui um
      nome e um valor, e  utilizado para adicionar 
      informaes extras ao elemento.  Esta pode ser 
      a informao a qual indica como o contedo
      deve ser renderizado, ou pode ser algo que identifique a 
      ocorrncia nica do elemento, ou pode ser qualquer
      outra coisa.</para>

    <para>O atributo de um elemento  sempre escrito
      <emphasis>dentro</emphasis> da tag de incio para 
      aquele elemento, e assume a forma
      <literal><replaceable>nome-do-atributo</replaceable>="<replaceable>valor-do-atributo</replaceable>"</literal>.</para>

    <para>Nas verses suficientemente recentes do HTML, o 
      elemento <sgmltag>p</sgmltag> possui um atributo chamado 
      <sgmltag>align</sgmltag>, o qual sugere o alinhamento 
      (Justificao) de um pargrafo para o programa 
      que estiver exibindo o HTML.</para>

    <para>O atributo <literal>align</literal> pode assumir um de
      quatro valores possveis, <literal>left</literal> 
      (esquerda), <literal>center</literal> (centralizado), 
      <literal>right</literal> (direita) e <literal>justify</literal>
      (justificado).  Se o atributo no for especificado 
      ser assumido o valor padro
      <literal>left</literal>.</para>

    <example>
      <title>Utilizando um elemento com um atributo</title>

      <programlisting><![CDATA[<p align="left">A incluso de um atributo de alinhamento neste 
  pargrafo foi suprfluo, uma vez que o alinhamento 
  padro  left (esquerda).</p>

<p align="center">Isto pode aparecer no centro.</p>]]></programlisting>
    </example>

    <para>Alguns atributos iro assumir apenas valores 
      especficos, como o <literal>left</literal> ou 
      <literal>justify</literal>.  Outros iro permitir que 
      voc entre com qualquer coisa que deseje.  Se voc 
      precisar incluir aspas (<literal>"</literal>) no valor de um 
      atributo, voc deve envolver o valor do atributo com 
      aspas simples (<literal>'</literal>).</para>

    <example>
      <title>Aspas simples envolta de atributos</title>

      <programlisting><![CDATA[<p align='right'>Eu estou a direita!</p>]]></programlisting>
    </example>

    <para>Algumas vezes voc no precisa utilizar aspas 
      em volta de todos os valores dos atributos.  Entretanto, a 
      regra para fazer isso  muito sutil, e  muito 
      mais simples <emphasis>sempre</emphasis> utilizar as aspas em 
      volta dos valores dos seus atributos.</para>

    <para>A informao nos atributos, elementos e tags 
      so armazenados nos catlogos SGML.  Vrias 
      ferramentas do projeto de documentao utilizam 
      estes arquivos de catalogo para validarem o seu trabalho.  As 
      ferramentas no <filename role="package">textproc/docproj</filename> 
      incluem uma variedade de arquivos de catalogo 
      SGML.  O projeto de documentao do FreeBSD 
      inclui seu prprio conjunto de arquivos de catlogos.  
      Suas ferramentas precisam reconhecer ambos os tipos de 
      arquivos de catalogo.</para>

    <sect2>
      <title>Para voc fazer&hellip;</title>

      <para>Para poder praticar com os exemplos deste documento 
	voc precisar instalar alguns aplicativos no 
	seu sistema, alm de assegurar que as variveis
	de ambiente estejam corretamente configuradas.</para>

      <procedure>
	<step>
	  <para>Faa o download e instale o 
	    <filename role="package">textproc/docproj</filename>
	    a partir do sistema de ports do FreeBSD.  Ele  um
	    <emphasis>meta-port</emphasis> o qual deve efetuar o
	    download e a instalao de todos os 
	    aplicativos e arquivos de suporte que so 
	    utilizados pelo projeto de documentao.
	    </para>
	</step>
	
	<step>
	  <para>Adicione linhas ao seu arquivo de 
	    inicializao do shell para configurar a 
	    varivel de ambiente 
	    <envar>SGML_CATALOG_FILES</envar>. (Se voc 
	    no estiver trabalhando com a verso no 
	    idioma ingls da documentao,
	    voc pode precisar substituir o caminho com o 
	    diretrio correto para o seu idioma.)</para>
	
	  <example id="sgml-primer-envars">
	    <title><filename>.profile</filename>, para os 
	      usurios dos shells &man.sh.1; e &man.bash.1;
	      </title>
	
	    <programlisting>SGML_ROOT=/usr/local/share/xml	    
SGML_CATALOG_FILES=${SGML_ROOT}/jade/catalog
SGML_CATALOG_FILES=${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/doc/share/xml/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/doc/en_US.ISO8859-1/share/xml/catalog:$SGML_CATALOG_FILES
export SGML_CATALOG_FILES</programlisting>
	  </example>

	  <example>
	    <title><filename>.cshrc</filename>, para os 
	      usurios dos shell &man.csh.1; e &man.tcsh.1;
	      </title>
	
	    <programlisting>setenv SGML_ROOT /usr/local/share/xml
setenv SGML_CATALOG_FILES ${SGML_ROOT}/jade/catalog
setenv SGML_CATALOG_FILES ${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES=${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES=${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES /usr/doc/share/xml/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES /usr/doc/en_US.ISO8859-1/share/xml/catalog:$SGML_CATALOG_FILES</programlisting>
	  </example>

	  <para>Para carregar estas variveis, execute um 
	    logout do sistema, logando novamente em seguida, ou 
	    execute os comandos acima na sua linha de comando para 
	    configurar os valores das variveis.</para>
	</step>
      </procedure>

      <procedure>
	<step>
	  <para>Crie o arquivo <filename>example.xml</filename>, e 
	    entre com o seguinte texto:</para>

	  <programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
  <head>	     
    <title>Um exemplo de arquivo HTML</title>
  </head>

  <body>	    
    <p>Este  um pargrafo contendo algum texto.</p>

    <p>Este pargrafo contm mais algum texto.</p>

    <p align="right">Este pargrafo pode estar alinhado a direita.</p>
  </body>	    
</html>]]></programlisting>
	</step>

	<step>
	  <para>Tente validar este arquivo utilizando um interpretador
	    SGML.</para>

	  <para>Um dos componentes do 
	    <filename role="package">textproc/docproj</filename> 
	     o <command>onsgmls</command>, um <link
	    linkend="sgml-primer-validating">interpretador de 
	    validao</link>.  Normalmente, o 
	    <command>onsgmls</command> l um documento marcado 
	    de acordo com um DTD SGML e retorna uma cpia do 
	    conjunto de informaes sobre a estrutura 
	    dos elementos (ESIS, mas isso no  
	    importante agora).</para>
	
	  <para>Entretanto, quando o <command>onsgmls</command> 
	     executado com o parmetro 
	    <option>-s</option>, ele ir suprimir o output
	    normal, e imprimir apenas as mensagens de erro.  Isto o
	    torna um meio til de verificar se o seu documento
	     vlido ou no.</para>
	
	  <para>Utilize o <command>onsgmls</command> para verificar 
	    se o seu documento  vlido:</para>

          <screen>&prompt.user; <userinput>onsgmls -s example.xml</userinput></screen>

	  <para>Como voc ir ver, o 
	    <command>onsgmls</command> ir executar sem 
	    retornar nenhuma mensagem.  Isto significa que o seu
	    documento foi validado com sucesso.</para>
	</step>

	<step>
	  <para>Veja o que acontece quando um elemento 
	    obrigatrio  omitido.  Tente remover as 
	    tags <sgmltag>title</sgmltag> e <sgmltag>/title</sgmltag>
	    , e execute novamente a validao.</para>

          <screen>&prompt.user; <userinput>onsgmls -s example.xml</userinput>
onsgmls:example.xml:5:4:E: character data is not allowed here
onsgmls:example.xml:6:8:E: end tag for "HEAD" which is not finished</screen>

	  <para>As mensagens de erro emitidas pelo 
	    <command>onsgmls</command> so organizadas em 
	    grupos separados por dois pontos, ou colunas.</para>
	
	  <informaltable frame="none" pgwide="1">
	    <tgroup cols="2">
	      <thead>
		<row>
		  <entry>Coluna</entry>
		  <entry>Propsito</entry>
		</row>
	      </thead>
	
	      <tbody>
		<row>
		  <entry>1</entry>
		  <entry>O nome do programa que est gerando 
		    o erro.  Ela ser sempre 
		    <literal>onsgmls</literal>.</entry>
		</row>

		<row>
		  <entry>2</entry>
		  <entry>O nome do arquivo que contm o erro.
		    </entry>
		</row>

		<row>
		  <entry>3</entry>
		  <entry>Nmero da linha na qual o erro 
		    aparece.</entry>
		</row>

		<row>
		  <entry>4</entry>
		  <entry>Nmero da coluna na qual o erro 
		    aparece.</entry>
		</row>

		<row>
		  <entry>5</entry>
		  <entry>Um cdigo de uma letra indicando a 
		    natureza da mensagem.  <literal>I</literal> indica
		    uma mensagem informativa, <literal>W</literal> 
		     para um aviso, e <literal>E</literal> 
		     para um erro <footnote>
		      <para>Ele no est sempre na 
			quinta coluna.  O
			<command>onsgmls -sv</command> exibe
			<literal>onsgmls:I: "OpenSP" version "1.5.2"
			</literal> (depende da verso 
			instalada).  Como voc pode ver,
			esta  uma mensagem informativa.</para>
		    </footnote>, e <literal>X</literal>  
		    para uma referncia cruzada.  Como 
		    voc pode ver, estas mensagens so 
		    erros.</entry>
		</row>

		<row>
		  <entry>6</entry>
		  <entry>O texto da mensagem.</entry>
		</row>
	      </tbody>
	    </tgroup>
	  </informaltable>

	  <para>A simples omisso das tags 
	    <sgmltag>title</sgmltag> gerou 2 erros diferentes.</para>

	  <para>O primeiro erro indica que o contedo (neste caso,
	    caracteres, ou melhor, a tag de inicio de um elemento)
	    ocorreu onde o interpretador SGML estava esperando outra
	    coisa.  Neste caso, o interpretador estava esperando
	    encontrar uma das tags de incio para os elementos
	    que so vlidos dentro do 
	    <sgmltag>head</sgmltag> (como a <sgmltag>title</sgmltag>
	    ).</para>

	  <para>O segundo erro  porque o elemento 
	    <sgmltag>head</sgmltag> <emphasis>deve</emphasis> conter 
	    o elemento <sgmltag>title</sgmltag>.  Por causa disso o 
	    <command>onsgmls</command> considera que o elemento 
	    no foi corretamente finalizado.  Entretanto, a 
	    tag de finalizao indica que o elemento 
	    foi fechado antes que estivesse terminado.</para>
	</step>

	<step>
	  <para>Coloque de volta o elemento 
	    <sgmltag>title</sgmltag>.</para>
	</step>
      </procedure>
    </sect2>
  </sect1>

  <sect1 id="sgml-primer-doctype-declaration">
    <title>A declarao DOCTYPE</title>

    <para>O inicio de cada documento que voc escrever deve
    especificar o nome do DTD o qual se aplica ao seu documento.  Isto
    deve ser feito para que os interpretadores SGML possam determinar
    o DTD e assegurar que o documento esta em conformidade com o
    mesmo.</para>

    <para>Esta informao  geralmente 
      expressada em uma linha, na declarao 
      DOCTYPE.</para>

    <para>Uma declarao tpica para um 
      documento escrito para conformar-se com a verso 4.0 
      do DTD HTML se parece com esta:</para>

    <programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">]]></programlisting>

    <para>Esta linha contm diferentes componentes.</para>

    <variablelist>
      <varlistentry>
	<term><literal>&lt;!</literal></term>
	
	<listitem>
	  <para> o <emphasis>indicador</emphasis> que indica 
	    que se trata de uma declarao SGML.  Esta 
	    linha est declarando o tipo do documento.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><literal>DOCTYPE</literal></term>
	
	<listitem>
	  <para>Mostra que esta  uma declarao
	    SGML para o tipo de documento.</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><literal>html</literal></term>
	
	<listitem>
	  <para>O nome do primeiro 
	    <link linkend="sgml-primer-elements">elemento</link> o 
	    qual ir aparecer no documento</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><literal>PUBLIC "-//W3C//DTD HTML 4.0//EN"</literal>
	  </term>

	<listitem>
	  <para>Lista o Identificador Pblico Formal (FPI)
	    <indexterm> <primary>Identificar Pblico 
	    Formal</primary> </indexterm> para o DTD ao qual este 
	    documento conforma-se.  O seu interpretador SGML 
	    ir utiliza-lo para encontrar o DTD correto quando
	    estiver processando o documento.</para>

	  <para>O <literal>PUBLIC</literal> no faz parte do 
	    FPI, ele indica para o processador SGML como localizar 
	    o DTD referenciado na FPI.  Outras formas de informar ao
	    interpretador SGML como localizar o DTD sero 
	    abordadas <link
	    linkend="sgml-primer-fpi-alternatives">mais tarde</link>
	    .</para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><literal>&gt;</literal></term>
	
	<listitem>
	  <para>Retorno ao documento.</para>
	</listitem>
      </varlistentry>
    </variablelist>

    <sect2>
      <title>Identificadores pblicos formais (FPIs)
	<indexterm significance="preferred"><primary>Identificadores 
	Pblicos Formais</primary></indexterm>
</title>

      <note>
	<para>Voc no precisa conhec-los, mas 
	  eles so um background til, e podem 
	  ajud-lo a depurar problemas quando o seu
	  processador SGML no puder localizar o DTD que 
	  voc esta utilizando.</para>
      </note>

      <para>Os FPIs devem seguir uma sintaxe especfica.  
	Esta sintaxe  a seguinte:</para>

      <programlisting>"<replaceable>Proprietrio</replaceable>//<replaceable>Palavra-Chave</replaceable> <replaceable>Descrio</replaceable>//<replaceable>Idioma</replaceable>"</programlisting>

      <variablelist>
	<varlistentry>
	  <term><replaceable>Proprietrio</replaceable></term>
	
	  <listitem>
	    <para>Isto indica o proprietrio da FPI.</para>

	    <para>Se este conjunto de caracteres comear 
	      com <quote>ISO</quote> significar que o FPI 
	       de propriedade do ISO.  Por exemplo, a FPI 
	      <literal>"ISO 8879:1986//ENTITIES Greek Symbols//EN"
	      </literal> lista o <literal>ISO 8879:1986</literal> 
	      como sendo o proprietrio do conjunto de 
	      entidades dos smbolos Gregos.  O ISO 8879:1986 
	       o numero da ISO para o padro SGML.
	      </para>

	    <para>De outra forma, este conjunto de caracteres 
	      ir se parecer com <literal>-//<replaceable>
	      Proprietrio</replaceable></literal> ou
	      <literal>+//<replaceable>Proprietrio
	      </replaceable></literal> (Observe que a nica 
	      diferena  a introduo do 
	      <literal>+</literal> ou do <literal>-</literal>).</para>

	    <para>Se o conjunto de caracteres comear com
	      <literal>-</literal> significa que o 
	      proprietrio da informao 
	      no  registrado, se comear com 
	      um <literal>+</literal> significa que ele  
	      registrado.</para>

	    <para>O ISO 9070:1991 define como os nomes registrados 
	      so gerados; ele pode ser derivado do numero de 
	      uma publicao ISO, de um cdigo 
	      ISBN, ou um cdigo de organizao
	      atribudo de acordo com o ISO 6523.  Alm disso,
	      uma autoridade de registro pode ser criada a fim de 
	      atribuir nomes registrados.  O conselho ISO delegou 
	      isto ao <literal>American National Standards 
	      Institute</literal> (ANSI).</para>

	    <para>Como o Projeto FreeBSD no foi registrado o 
	      conjunto de caracteres de proprietrio  
	      <literal>-//FreeBSD</literal>.  E como voc pode 
	      ver, o W3C tambm no  um 
	      proprietrio registrado.</para>
	  </listitem>
	</varlistentry>
	
	<varlistentry>
	  <term><replaceable>Palavra-Chave</replaceable></term>
	
	  <listitem>
	    <para>Existem diversas palavras-chave as quais indicam o
	      tipo de informao no arquivo.  Algumas 
	      das palavras chaves mais comuns so
	      <literal>DTD</literal>, <literal>ELEMENT</literal>,
	      <literal>ENTITIES</literal>, e <literal>TEXT</literal>.
	      A palavra chave <literal>DTD</literal>  
	      utilizada apenas para os arquivos DTD, a 
	      <literal>ELEMENT</literal>  normalmente 
	      utilizada para fragmentos DTD os quais contenham 
	      apenas entidades e declaraes de 
	      elementos.  A palavra <literal>TEXT</literal>  
	      utilizada para o contedo SGML (texto e tags).
	      </para>
	  </listitem>
	</varlistentry>
	
	<varlistentry>
	  <term><replaceable>Descrico</replaceable></term>
	
	  <listitem>
	    <para>Qualquer descrio que voc 
	      deseje fornecer para o contedo deste arquivo.  
	      O que pode incluir um nmero de verso ou 
	      qualquer texto curto o qual seja significativo para 
	      voc e nico para o sistema SGML.</para>
	  </listitem>
	</varlistentry>
	
	<varlistentry>
	  <term><replaceable>Idioma</replaceable></term>
	
	  <listitem>
	    <para>Este  um cdigo ISO de duas letras o 
	      qual identifica o idioma nativo do arquivo.  O 
	      cdigo <literal>EN</literal>  utilizado
	      para o idioma ingls.</para>
	  </listitem>
	</varlistentry>
      </variablelist>

      <sect3>
	<title>Arquivos de <filename>catlogo</filename>
	  </title>
	
	<para>Se voc utilizar a sintaxe acima e processar este
	  documento utilizando um processador SGML, o processador 
	  ir precisar de uma forma de associar a FPI ao nome 
	  do arquivo no seu computador o qual contm o DTD.
	  </para>
	
	<para>Para isto devemos utilizar um arquivo de
	  catlogo.  Um arquivo de catlogo (tipicamente
	  chamado de <filename>catalog</filename>) contm 
	  linhas as quais mapeiam FPIs para nomes de arquivos.  Por 
	  exemplo, se o arquivo de catlogo contiver a linha:
	  </para>
	
	<programlisting>PUBLIC "-//W3C//DTD HTML 4.0//EN" "4.0/strict.dtd"</programlisting>

	<para>O processador SGML saberia que deveria procurar pelo 
	  DTD <filename>strict.dtd</filename> no subdiretrio 
	  <filename>4.0</filename> de qualquer diretrio que 
	  possusse um arquivo <filename>catalog</filename> contendo 
	  esta linha.</para>

	<para>Veja o contedo do 
	  <filename>/usr/local/share/xml/html/catalog</filename>. 
	  Este  o arquivo de catlogo para o DTD HTML 
	  o qual ser instalado como parte do port
	  <filename role="package">textproc/docproj</filename>.</para>
      </sect3>

      <sect3>
	<title><envar>SGML_CATALOG_FILES</envar></title>

	<para>A fim de encontrar um arquivo de
	  <filename>catlogo</filename>, o seu processador SGML
	  precisar saber onde procurar.  Muitos deles possuem
	  recursos de parmetros de linha de comando para 
	  especificar o caminho para um ou mais catlogos.
	  </para>
	
	<para>Adicionalmente, voc pode definir a 
	  varivel de ambiente 
	  <envar>SGML_CATALOG_FILES</envar> para apontar para os
	  arquivos.  Esta varivel deve consistir de uma 
	  lista, separada por dois pontos (":"), de arquivos de 
	  catlogo (incluindo seus caminhos completos).</para>
	
	<para>Tipicamente, voc precisar incluir os 
	  seguintes arquivos:</para>

	<itemizedlist>
	  <listitem>
	    <para><filename>/usr/local/share/xml/docbook/4.1/catalog</filename></para>
	  </listitem>

	  <listitem>
	    <para><filename>/usr/local/share/xml/html/catalog</filename></para>
	  </listitem>

	  <listitem>
	    <para><filename>/usr/local/share/xml/iso8879/catalog</filename></para>
	  </listitem>

	  <listitem>
	    <para><filename>/usr/local/share/xml/jade/catalog</filename></para>
	  </listitem>
	</itemizedlist>

	<para>Voc <link linkend="sgml-primer-envars">j
	  deve ter feito isto</link>.</para>
      </sect3>
    </sect2>

    <sect2 id="sgml-primer-fpi-alternatives">
      <title>Alternativas aos FPIs</title>

      <para>Ao invs de utilizar um FPI para indicar o DTD ao 
	qual o documento conforma-se (e consequentemente, quais 
	arquivos no sistema contm o DTD), voc pode 
	especificar explicitamente o nome do arquivo.  </para>

      <para>A sintaxe para isto  ligeiramente diferente:
	</para>

      <programlisting><![CDATA[<!DOCTYPE html SYSTEM "/path/to/file.dtd">]]></programlisting>

      <para>A palavra chave <literal>SYSTEM</literal> indica que o
	processador SGML deve encontrar o DTD em um local 
	especfico do sistema.  Isto tipicamente (mas 
	no sempre) significa que o DTD ser fornecido 
	como um nome de arquivo.</para>

      <para>O uso de FPIs  preferido por razes de 
	portabilidade.  Voc pode no desejar ter que 
	enviar uma cpia do DTD junto com seu documento, e 
	se voc utilizasse um identificador
	<literal>SYSTEM</literal> todos necessitariam manter os seus
	DTDs no mesmo lugar que voc.</para>
    </sect2>
  </sect1>

  <sect1 id="sgml-primer-sgml-escape">
    <title>Voltando para o SGML</title>

    <para>Como mencionado anteriormente, o SGML  utilizado 
      somente quando escrevemos um DTD.  Isto no 
      estritamente verdade.  Existem certas sintaxes SGML as quais
      voc poder desejar utilizar com os seus 
      documentos.  Por exemplo,  voc pode incluir 
      comentrios no seu documento, e eles sero 
      ignorados pelo interpretador.  Os comentrios so
      adicionados utilizando sintaxe SGML.  Outros usos para a sintaxe
      SGML no seu documento sero mostrados mais tarde.</para>

    <para>Obviamente, voc precisa indicar de alguma forma ao
      processador SGML que o contedo seguinte no se 
      trata de elementos do documento, mas sim de SGML sobre o qual 
      o interpretador deve atuar.</para>

    <para>Estas sesses so marcadas no seu documento 
      com <literal>&lt;! ...  &gt;</literal>.  Tudo entre estes
      delimitadores  sintaxe SGML tal como voc pode 
      encontrar dentro de um DTD.</para>

    <para>Como voc pode perceber, a 
      <link linkend="sgml-primer-doctype-declaration">
      declarao DOCTYPE </link>  um exemplo 
      de sintaxe SGML a qual voc precisa incluir no seu 
      documento.</para>
  </sect1>

  <sect1 id="sgml-primer-comments">
    <title>Comentrios</title>

    <para>Comentrios so uma construo 
      SGML, e so normalmente vlidos apenas dentro de 
      um DTD.  Entretanto, como mostrou a
      <xref linkend="sgml-primer-sgml-escape"/>,  possvel 
      utilizar sintaxe SGML com os seus documentos.</para>

    <para>O delimitador para um comentrio SGML  o 
      conjunto de caracteres <quote><literal>--</literal></quote>.  
      A primeira ocorrncia deste conjunto de caracteres abre 
      um comentrio e a segunda fecha.</para>

    <example>
      <title>Comentrio SGML genrico</title>

      <programlisting>&lt;!-- Teste de comentrio --></programlisting>

      <programlisting>
&lt;!&hyphen;- Este  o interior do comentrio -&hyphen;&gt;

&lt;!&hyphen;- Este  outro comentrio    -&hyphen;&gt;

&lt;!&hyphen;- Esta  uma forma 
     de fazer comentrios de vrias linhas -&hyphen;&gt;

&lt;!&hyphen;- Esta  outra forma  -&hyphen;
  &hyphen;- de fazer comentrios de vrias linhas -&hyphen;&gt;</programlisting>
    </example>

    <para>Se voc j utilizou HTML antes, voc pode ter 
      sido exposto a regras diferentes para comentrios.  Em 
      particular, voc pode pensar que o conjunto de caracteres
      <literal>&lt;!--</literal> abre um comentrio e que ele 
      apenas  fechado por um <literal>--&gt;</literal>.</para>

    <para>Este <emphasis>no</emphasis>  o caso.  
      Muitos dos navegadores web possuem interpretadores HTML 
      quebrados, e iro aceitar isso como vlido.  
      Entretanto, os interpretadores SGML utilizados pelo projeto 
      de documentao so muito mais 
      rgidos, e iro rejeitar os documentos que 
      contiverem este erro.</para>

    <example>
      <title>Comentrios SGML errados</title>

      <programlisting>
&lt;!&hyphen;- Este  o comentrio -&hyphen;

     Isto est fora do comentrio!

  &hyphen;- de volta para dentro do comentrio -&hyphen;&gt;</programlisting>

      <para>O interpretador SGML ir tratar isto como ele 
	 realmente;</para>

      <programlisting>&lt;!Isto est fora do comentrio&gt;</programlisting>

      <para>Isto no  um SGML vlido, e pode 
	dar mensagens de erro confusas.</para>

      <programlisting>&lt;!&hyphen;&hyphen;&hyphen;&hyphen;&hyphen; Isto  uma idia muito ruim &hyphen;&hyphen;&hyphen;&hyphen;&hyphen;&gt;</programlisting>

      <para>E como o exemplo sugere, <emphasis>no escreva
	</emphasis> comentrios como esse.</para>

      <programlisting>&lt;!&hyphen;-===================================================-&hyphen;&gt;</programlisting>

      <para>Esta  uma abordagem (ligeiramente) melhor, mas 
	ele ainda  potencialmente confuso para as pessoas 
	novas no uso do SGML.</para>

    </example>

    <sect2>
      <title>Para voc fazer&hellip;</title>

      <procedure>
	<step>
	  <para>Adicione alguns comentrios ao arquivo
	  <filename>example.xml</filename> e verifique se ele 
	  continua vlido usando o <command>onsgmls</command>.
	  </para>
	</step>

	<step>
	  <para>Adicione alguns comentrios invlidos ao
	    <filename>example.xml</filename> e veja as mensagens de 
	    erro que o <command>onsgmls</command> emite quando 
	    encontra um comentrio invlido.</para>
	</step>
      </procedure>
    </sect2>
  </sect1>

  <sect1 id="sgml-primer-entities">
    <title>Entidades</title>

    <para>Entidades so um mecanismo para atribuir nomes para
      pedaos de contedo.  Quando o interpretador 
      SGML processar o seu documento, qualquer entidade que ele 
      encontrar ser substituda pelo contedo da 
      entidade.</para>

    <para>Esta  uma boa forma de ter pedaos de 
      contedo reutilizveis e facilmente 
      alterveis em seus documentos SGML.  Esta  
      tambm a nica forma de incluir um arquivo 
      marcado dentro de outro utilizando SGML.</para>

    <para>Existem dois tipos de entidades que podem ser utilizadas 
      em duas situaes diferentes; 
      <emphasis>Entidades gerais</emphasis> e
      <emphasis>Entidades de parmetros</emphasis>.</para>

    <sect2 id="sgml-primer-general-entities">
      <title>Entidades gerais</title>

      <para>Voc no pode utilizar uma entidade geral 
	em um contexto SGML (embora voc as defina em um).  
	Elas podem ser utilizadas apenas no seu documento.  Compare 
	isto com as <link linkend="sgml-primer-parameter-entities">
	entidades de parmetros</link>.</para>

      <para>Cada entidade geral possui um nome.  Quando voc 
	quer referenciar uma entidade geral (e consequentemente 
	incluir o texto que ela representa no seu documento), 
	voc escreve 
	<literal>&amp;<replaceable>nome-da-entidade</replaceable>;</literal>.
	Por exemplo, suponha que voc possui uma 
	entidade chamada <literal>current.version</literal>, a qual 
	expande para a verso atual do seu produto.  
	Voc pode escrever:</para>

      <programlisting><![CDATA[<para>A verso atual do nosso produto  &amp;current.version;.</para>]]></programlisting>

      <para>Quando o nmero de verso mudar, 
	voc pode simplesmente alterar a definio
	do valor da entidade geral e reprocessar o seu documento.
	</para>

      <para>Voc tambm pode utilizar entidades gerais 
	para incorporar caracteres que voc no poderia 
	incorporar de outra forma em um documento SGML.  Por exemplo,
	os caracteres <literal>&lt;</literal> e 
	<literal>&amp;</literal> no podem aparecer normalmente
	em um documento SGML.  Quando o interpretador SGML v 
	o smbolo <literal>&lt;</literal> ele assume que 
	aquilo  uma tag (uma tag de abertura ou de fechamento)
	que est a ponto de aparecer, e quando ele v o 
	smbolo <literal>&amp;</literal> ele assume que o 
	prximo texto ser o nome de uma entidade.
	</para>

      <para>Felizmente, voc pode utilizar as duas entidades 
      	gerais <literal>&amp;lt;</literal> e 
	<literal>&amp;amp;</literal> sempre que voc precisar 
	inclu-los.</para>

      <para>Uma entidade geral s pode ser definida dentro de 
	um contexto SGML.  Tipicamente, isto  feito 
	imediatamente depois da declarao DOCTYPE.
	</para>

      <example>
	<title>Definindo uma entidade geral</title>

	<programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY current.version    "3.0-RELEASE">
<!ENTITY last.version       "2.2.7-RELEASE">
]>]]></programlisting>
	
	<para>Observe como a declarao DOCTYPE foi 
	  estendida adicionando-se um colchete no final da primeira 
	  linha.  As duas entidades esto definidas nas 
	  prximas duas linhas, antes que o colchete seja 
	  fechado, e ento a declarao DOTYPE 
	   fechada.</para>
	
	<para>O colchete  necessrio para indicar 
	  que ns estamos extendendo o DTD indicado pela 
	  declarao DOCTYPE.</para>
      </example>
    </sect2>

    <sect2 id="sgml-primer-parameter-entities">
      <title>Entidades de parmetro</title>

      <para>Assim como as 
	<link linkend="sgml-primer-general-entities">entidades gerais</link>
	, as entidades de parmetro so utilizadas para
	atribuir um nome a pedaos reutilizveis de
	texto.  Entretanto, enquanto as entidades gerais s 
	podem ser utilizadas com o seu documento, as entidades de 
	parmetro podem ser utilizadas apenas dentro de um 
	<link linkend="sgml-primer-sgml-escape">contexto SGML</link>.
	</para>

      <para>As entidades de parmetro so definidas de uma 
	forma similar as entidades gerais.  Entretanto, ao 
	invs de utilizar
	<literal>&amp;<replaceable>nome-da-entidade</replaceable>;</literal>
	como referncia, utiliza
	<literal>%<replaceable>nome-da-entidade</replaceable>;</literal>
	  <footnote><para>Entidades de 
	  <emphasis>P</emphasis>armetro utilizam o smbolo de 
	  <emphasis>P</emphasis>orcentagem.</para> </footnote>.  
	A definio tambm inclui o 
	<literal>%</literal> entre a palavra chave 
	<literal>ENTITY</literal> e o nome da entidade.</para>
	
      <example>
	<title>Definindo entidades de parmetros</title>
	
	<programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY % param.some "some">
<!ENTITY % param.text "text">
<!ENTITY % param.new  "%param.some more %param.text">
]>]]></programlisting>
      </example>
	
      <para>Isto pode no parecer particularmente 
	til.  Mas ele ser.</para>

    </sect2>

    <sect2>
      <title>Para voc fazer&hellip;</title>

      <procedure>
	<step>
	  <para>Adicione uma entidade geral ao 
	    <filename>example.xml</filename>.</para>

	  <programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
<!ENTITY version "1.1">
]>	  

<html>
  <head>	     
    <title>Um exemplo de arquivo HTML</title>
  </head>

  <body>	    
    <p>Este  um pargrafo contendo algum texto.</p>

    <p>Este pargrafo contm mais algum texto.</p>

    <p align="right">Este pargrafo pode estar alinhado a direita.</p>

    <p>A verso atual deste documento : &amp;version;</p>	  
  </body>	    
</html>]]></programlisting>	  
	</step>

	<step>
	  <para>Valide o documento utilizando o <command>onsgmls
	    </command></para>
	</step>

	<step>
	  <para>Carregue o arquivo <filename>example.xml</filename>
	    no seu navegador web (Voc pode precisar 
	    copi-lo para <filename>example.html</filename> 
	    antes que o seu navegador possa reconhec-lo como 
	    um documento HTML).</para>
	
	  <para>A menos que o seu navegador seja muito 
	    avanado, voc no ir ver a 
	    entidade referenciada por <literal>&amp;version;</literal>
	    substituda pelo nmero de verso.  
	    A maioria dos navegadores web possuem interpretadores 
	    muito simplistas os quais no manuseiam 
	    corretamente SGML <footnote><para>Isto  uma 
	    vergonha.  Imagine todos os problemas e <literal>hacks
	    </literal> (tais como os Server Side Includes) que 
	    poderiam ser evitados se eles o fizessem.</para>
	    </footnote>.</para>
	</step>

	<step>
	  <para>A soluo  
	    <emphasis>normalizar</emphasis>  seu documento utilizando
	    um normalizador SGML.  Um normalizador l um SGML 
	    vlido e retorna um SGML igualmente vlido
	    o qual foi transformado de alguma forma.  Uma das formas 
	    em que o normalizador transforma o SGML 
	    expandindo todas as entidades referenciadas no documento,
	    substituindo as entidades pelo texto que elas
	    representam.</para>
	
	  <para>Voc pode utilizar o <command>osgmlnorm
	    </command> para fazer isto:</para>

          <screen>&prompt.user; <userinput>osgmlnorm example.xml &gt; example.html</userinput></screen>

	  <para>Voc deve encontrar uma cpia 
	    normalizada (isto , entidades referenciadas 
	    expandidas) do seu documento no arquivo 
	    <filename>example.html</filename>, pronta para ser
	    carregada no seu navegador web.</para>
	</step>

	<step>
	  <para>Se voc examinar o retorno do 
	    <command>osgmlnorm</command> voc ira ver que ele 
	    no inclui a declarao DOCTYPE no 
	    inicio.  Para inclu-la voc precisa 
	    utilizar a opo <option>-d</option>:</para>
	
          <screen>&prompt.user; <userinput>osgmlnorm -d example.xml &gt; example.html</userinput></screen>
	</step>
      </procedure>
    </sect2>
  </sect1>

  <sect1 id="sgml-primer-include">
    <title>Utilizando entidades para incluir arquivos</title>

    <para>As entidades (ambas <link
	linkend="sgml-primer-general-entities">gerais</link> e de <link
	linkend="sgml-primer-parameter-entities">parmetros</link>)
	so particularmente teis quando utilizadas 
	para incluir um arquivo dentro de outro.</para>

    <sect2 id="sgml-primer-include-using-gen-entities">
      <title>Utilizando entidades gerais para incluir arquivos</title>

      <para>Suponha que voc possui algum contedo para um 
	livro SGML organizado em arquivos, um arquivo por captulo, 
	chamados <filename>chapter1.xml</filename>,
	<filename>chapter2.xml</filename>, e assim por diante, com 
	um arquivo <filename>book.xml</filename> que ir 
	conter estes captulos.</para>
	
      <para>A fim de utilizar o contedo destes arquivos como 
	os valores para as suas entidades, voc as declara com 
	a palavra chave <literal>SYSTEM</literal>.  Isto direciona o
	interpretador SGML para utilizar o contedo dos 
	arquivos nomeados como o valor da entidade.</para>

      <example>
	<title>Utilizando entidades gerais para incluir
	  arquivos</title>
	
	<programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY chapter.1 SYSTEM "chapter1.xml">
<!ENTITY chapter.2 SYSTEM "chapter2.xml">
<!ENTITY chapter.3 SYSTEM "chapter3.xml">
]>

<html>

  &chapter.1;
  &chapter.2;
  &chapter.3;
</html>]]></programlisting>
      </example>

      <warning>
	<para>Quando utilizar uma entidade geral para incluir outros
	  arquivos em um documento, os arquivos que estiverem sendo
	  inclusos (<filename>chapter1.xml</filename>,
	  <filename>chapter2.xml</filename>, etc) 
	  <emphasis>no devem</emphasis> iniciar com uma 
	  declarao DOCTYPE.  Isto  um erro 
	  de sintaxe.</para>
      </warning>
    </sect2>

    <sect2>
      <title>Utilizando entidades de parmetro para incluir 
	arquivos</title>

      <para>Recorde-se que uma entidade de parmetro s pode 
	ser utilizada dentro de um contexto SGML.  Por que 
	ento voc desejaria incluir um arquivo dentro 
	de um contexto do SGML?</para>

      <para>Voc pode utilizar isto para assegurar-se de que 
	voc pode reutilizar as suas entidades gerais.</para>

      <para>Suponha que voc possui muitos captulos em seu 
	documento, e voc reutiliza estes captulos em dois 
	livros diferentes, cada livro organizando os captulos de 
	uma forma diferente.</para>

      <para>Voc pode listar as entidades no topo de cada 
	livro, mas isto rapidamente torna-se incomodo de gerenciar.
	</para>

      <para>Em vez de disso, coloque as definies das 
	suas entidades gerais em um arquivo, e utilize uma entidade 
	de parmetro para incluir este arquivo dentro do seu 
	documento.</para>

      <example>
	<title>Utilizando entidades de parmetro para incluir
	  arquivos.</title>

	<para>Primeiro, coloque as suas definies de 
	  entidades em um arquivo separado, chamado 
	  <filename>chapters.ent</filename>.  Este arquivo 
	  contm o seguinte:</para>
	
	<programlisting><![CDATA[<!ENTITY chapter.1 SYSTEM "chapter1.xml">
<!ENTITY chapter.2 SYSTEM "chapter2.xml">
<!ENTITY chapter.3 SYSTEM "chapter3.xml">]]></programlisting>

	<para>Agora crie uma entidade de parmetro para referenciar 
	  o contedo do arquivo.  E ento utilize a 
	  entidade de parmetro para carregar o arquivo no seu 
	  documento, o que tornar todas as entidades gerais 
	  disponveis para uso.  Feito isso, utilize as 
	  entidades gerais como antes;</para>
	
	<programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY % chapters SYSTEM "chapters.ent">
%chapters;
]>

<html>
  &amp;chapter.1;
  &amp;chapter.2;
  &amp;chapter.3;
</html>]]></programlisting>
      </example>
    </sect2>

    <sect2>
      <title>Para voc fazer&hellip;</title>

      <sect3>
	<title>Utilizando entidades gerais para incluir arquivos
	  </title>

	<procedure>
	  <step>
	    <para>Crie trs arquivos, 
	      <filename>para1.xml</filename>,
	      <filename>para2.xml</filename>, e
	      <filename>para3.xml</filename>.</para>

	    <para>Coloque um contedo similar ao seguinte em 
	      cada arquivo:</para>

	    <programlisting><![CDATA[<p>Este  o primeiro pargrafo.</p>]]></programlisting>
	  </step>

	  <step>
	    <para>Edite o arquivo <filename>example.xml</filename>
	      para que ele se parea com este:</para>

	    <programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY version "1.1">
<!ENTITY para1 SYSTEM "para1.xml">
<!ENTITY para2 SYSTEM "para2.xml">
<!ENTITY para3 SYSTEM "para3.xml">
]>

<html>
  <head>
    <title>Um exemplo de arquivo HTML</title>
  </head>

  <body>
    <p>A verso atual deste documento : &amp;version;</p>

    &amp;para1;
    &amp;para2;
    &amp;para3;
  </body>
</html>]]></programlisting>
	  </step>

	  <step>
	    <para>Produza o arquivo 
	      <filename>example.html</filename> atravs da
	      normalizao do arquivo 
	      <filename>example.xml</filename>.</para>

            <screen>&prompt.user; <userinput>osgmlnorm -d example.xml &gt; example.html</userinput></screen>
	  </step>

	  <step>
	    <para>Carregue o arquivo 
	      <filename>example.html</filename> no seu navegador web,
	      e confirme que os arquivos 
	      <filename>para<replaceable>n</replaceable>.xml</filename>
	      foram includos no <filename>example.html</filename>.
	      </para>
	  </step>
	</procedure>
      </sect3>

      <sect3>
	<title>Utilizando uma entidade de parmetro para incluir
	  arquivos.</title>

	<note>
	  <para>Voc deve ter executado os passos anteriores 
	    primeiro.</para>
	</note>
	
	<procedure>
	  <step>
	    <para>Edite o arquivo 
	      <filename>example.xml</filename> para que ele se
	      parea com este:</para>
	
	    <programlisting><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY % entities SYSTEM "entities.xml"> %entities;
]>

<html>
  <head>
    <title>Um exemplo de arquivo HTML</title>
  </head>

  <body>
    <p>A verso atual deste documento : &amp;version;</p>

    &amp;para1;
    &amp;para2;
    &amp;para3;
  </body>
</html>]]></programlisting>
	  </step>

	  <step>
	    <para>Crie um novo arquivo chamado 
	      <filename>entities.xml</filename>, com este 
	      contedo:</para>

	    <programlisting><![CDATA[<!ENTITY version "1.1">
<!ENTITY para1 SYSTEM "para1.xml">
<!ENTITY para2 SYSTEM "para2.xml">
<!ENTITY para3 SYSTEM "para3.xml">]]></programlisting>
	  </step>

	  <step>
	    <para>Produza o arquivo <filename>example.html</filename>
	      atravs da normalizao do arquivo
	      <filename>example.xml</filename>.</para>

            <screen>&prompt.user; <userinput>osgmlnorm -d example.xml &gt; example.html</userinput></screen>
	  </step>

	  <step>
	    <para>Carregue o arquivo 
	      <filename>example.html</filename> no seu navegador web
	      e confirme que os arquivos
	      <filename>para<replaceable>n</replaceable>.xml</filename>
	      foram includos no arquivo 
	      <filename>example.html</filename>.</para>
	  </step>
	</procedure>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="sgml-primer-marked-sections">
    <title>Sesses marcadas</title>

    <para>O SGML fornece um mecanismo para indicar que uma parte
      particular do documento deve ser processada de uma forma 
      especial.  Estas partes so denominadas 
      <quote>sesses marcadas</quote>.</para>

    <example>
      <title>Estrutura de uma sesso marcada</title>

      <programlisting>&lt;![ <replaceable>Palavra-chave</replaceable> [
  Contedo da sesso marcada
]]&gt;</programlisting>
    </example>

    <para>Como voc esperaria, sendo uma 
      construo SGML, uma sesso
      marcada inicia com um <literal>&lt;!</literal>.</para>

    <para>O primeiro colchete comea a limitar a sesso
      marcada.</para>

    <para>A <replaceable>Palavra-chave</replaceable> descreve como 
      esta sesso marcada deve ser processada pelo 
      interpretador.</para>

    <para>O segundo colchete indica que o contedo da 
      sesso marcada inicia aqui.</para>

    <para>A sesso marcada  finalizada pelo fechamento
      dos dois colchetes e ento retornando ao contexto do 
      documento a partir do contexto SGML com o 
      <literal>&gt;</literal>.</para>

    <sect2>
      <title>Palavras-Chave de sesses marcadas</title>

      <sect3>
	<title><literal>CDATA</literal>, 
	  <literal>RCDATA</literal></title>
	
	<para>Estas palavras chave denotam o <emphasis>modelo do 
	  contedo</emphasis> das sesses marcadas, e 
	  permitem que voc o altere a partir do padro.
	  </para>
	
	<para>Quando um interpretador SGML esta processando um
	  documento ele tenta seguir o que chamamos de <quote>modelo 
	  de contedo</quote></para>
	
	<para>Resumidamente, o modelo de contedo descreve 
	  que tipo de contedo o interpretador esta esperando 
	  encontrar, e o que far com ele quando o encontrar.
	  </para>
	
	<para>Os dois modelos de contedo que voc 
	  provavelmente ir achar mais teis 
	  so o <literal>CDATA</literal> e o
	  <literal>RCDATA</literal>.</para>
	
	<para>O <literal>CDATA</literal>  para 
	  <quote>Dados de Caracter</quote>.  Se o interpretador 
	  est neste modelo de contedo ento ele
	  est esperando encontrar caracteres, e apenas 
	  caracteres.  Neste modelo os smbolos 
	  <literal>&lt;</literal> e o <literal>&amp;</literal>
	  perdem o seu status especial, e sero tratados como 
	  caracteres ordinrios.</para>
	
	<para>O <literal>RCDATA</literal>  para 
	  <quote>Referncias de entidade e dados de caracter
	  </quote>.  Se o interpretador est neste
	  modelo de contedo ele est esperando 
	  encontrar caracteres <emphasis>e</emphasis> entidades.  
	  O smbolo <literal>&lt;</literal> perde
	  o seu status especial, mas o <literal>&amp;</literal> 
	  continuar sendo tratado como o inicio de uma 
	  entidade geral.</para>

	<para>Isto  particularmente til se voc
	  est incluindo algum texto literal o qual 
	  contm muitos caracteres <literal>&lt;</literal> e 
	  <literal>&amp;</literal>.  Ao invs de atravessar o 
	  texto todo tendo que verificar se todos os  
	  <literal>&lt;</literal> esto convertidos para um
	  <literal>&amp;lt;</literal> e todos os
	  <literal>&amp;</literal> esto convertidos para um
	  <literal>&amp;amp;</literal> pode ser mais simples marcar 
	  a sesso como contendo apenas 
	  <literal>CDATA</literal>.  Quando o interpretador SGML 
	  encontr-los ele ir ignorar os smbolos 
	  <literal>&lt;</literal> e <literal>&amp;</literal> 
	  embutidos no contedo.</para>
	
	<note>
	  <para>Quando voc utiliza <literal>CDATA</literal> ou
	    <literal>RCDATA</literal> nos exemplos de texto marcado em
	    SGML, tenha em mente que o contedo do
	    <literal>CDATA</literal> no  validado.  
	    Voc tem que verificar o SGML incluso no texto 
	    utilizando algum outro meio.  Voc pode, por 
	    exemplo, escrever o exemplo em outro documento, 
	    validar o cdigo de exemplo, e ento 
	    col-lo para o seu contedo
	    <literal>CDATA</literal>.</para>
	</note>

	<!-- O assentamento de CDATA dentro do exemplo seguinte  repugnante -->
	
	<example>
	  <title>Utilizando uma sesso marcada como 
	    CDATA</title>
	
	  <programlisting>&lt;para&gt;Aqui est um exemplo de como voc incluiria algum texto que contenha muitos 
  smbolos &lt;literal&gt;&lt;&lt;/literal&gt; e &lt;literal&gt;&gt;&lt;/literal&gt;.
  O texto de exemplo  um fragmento de HTML.  
  O texto circunvizinho (&lt;para&gt; e &lt;programlisting&gt;)  do
  DocBook.&lt;/para&gt;
	  
&lt;programlisting&gt;
  &lt;![CDATA[&gt;![RCDATA[
    &lt;p&gt;Esta  uma amostra que apresenta alguns elementos de HTML.
       Uma vez que os smbolos de &lt; e &gt; so utilizados muitas vezes, 
       mais fcil dizer que o exemplo todo  uma sesso marcada do
       tipo CDATA, do que utilizar nomes de entidades para representar
       estes smbolos ao longo de todo o texto.&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;Este  um item de lista&lt;/li&gt;
      &lt;li&gt;Este  um segundo item de lista&lt;/li&gt;
      &lt;li&gt;Este  um terceiro item de lista&lt;/li&gt;
    &lt;/ul&gt;

    &lt;p&gt;Este  o final do exemplo.&lt;/p&gt;]]&gt;
  ]]&gt;
&lt;/programlisting&gt;</programlisting>

	  <para>Se voc examinar o fonte deste documento 
	    voc ir ver que esta tcnica foi 
	    utilizada por toda parte.</para>
	</example>
      </sect3>

      <sect3>
	<title><literal>INCLUDE</literal> and
	  <literal>IGNORE</literal></title>
	
	<para>Se a palavra chave for <literal>INCLUDE</literal> 
	  ento o contedo da sesso marcada 
	  ser processado.  Se a palavra chave for 
	  <literal>IGNORE</literal> ento a sesso 
	  marcada ser ignorada e no ser 
	  processada.  Ela no ir aparecer no
	  output.</para>
	
	<example>
	  <title>Utilizando <literal>INCLUDE</literal> e
	    <literal>IGNORE</literal> nas sesses marcadas</title>

	  <programlisting>&lt;![ INCLUDE [
  Este texto ser processado e includo.
]]&gt;

&lt;![ IGNORE [
  Este texto no ser processado nem includo.
]]&gt;</programlisting>
	</example>
	
	<para>Por si s, isto no  muito 
	  til.  Se voc desejar remover o texto do seu 
	  documento voc pode cort-lo fora, ou 
	  coment-lo.</para>
	
	<para>Torna-se mais til quando voc utilizar 
	  <link linkend="sgml-primer-parameter-entities">entidades de
	  parmetro</link> para control-lo.  Lembre-se que 
	  entidades de parmetro s podem ser utilizadas em um 
	  contexto SGML, e que a palavra chave de uma sesso 
	  marcada <emphasis></emphasis> um contexto 
	  SGML.</para>

	<para>Por exemplo, suponha que voc produza uma 
	  cpia impressa e uma verso eletrnica 
	  de alguma documentao.  Voc pode
	  desejar incluir na verso eletrnica algum 
	  contedo extra, o qual no deve aparecer na 
	  verso impressa.</para>
	
	<para>Crie uma entidade de parmetro, e configure seu valor
	  para <literal>INCLUDE</literal>.  Escreva seu documento,
	  usando uma sesso marcada para delimitar o
	  contedo 
	  que deve aparecer apenas na verso eletrnica.
	  Nesta sesso marcada utilize a entidade de parmetro
	  no lugar da palavra chave.</para>
	
	<para>Quando voc desejar produzir uma cpia 
	  impressa do documento, altere o valor da entidade de 
	  parmetro para <literal>IGNORE</literal> e reprocesse o 
	  documento.</para>
	
	<example>
	  <title>Utilizando uma entidade de parmetro para 
	    controlar uma sesso marcada</title>
	
	  <programlisting>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
&lt;!ENTITY % electronic.copy "INCLUDE">	     
]]&gt;

...

&lt;![ %electronic.copy [
  Este contedo deve aparecer apenas na verso eletrnica do
  documento.
]]&gt;</programlisting>

	  <para>Quando for produzir uma verso impressa do 
	    documento, altere a definio da entidade 
	    para;</para>
	
	  <programlisting>&lt;!ENTITY % electronic.copy "IGNORE"></programlisting>

	  <para>Ao reprocessar o documento, a sesso marcada 
	    que utilizar a entidade <literal>%electronic.copy
	    </literal> como a sua palavra chave ser 
	    ignorada.</para>
	</example>
      </sect3>
    </sect2>

    <sect2>
      <title>Para voc fazer&hellip;</title>

      <procedure>
	<step>
	  <para>Crie um novo arquivo chamado 
	    <filename>section.xml</filename>, o qual deve conter o 
	    seguinte contedo:</para>

	  <programlisting>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
&lt;!ENTITY % text.output "INCLUDE">
]&gt;

&lt;html>
  &lt;head>
    &lt;title>Um exemplo utilizando uma sesso marcada.&lt;/title>
  &lt;/head>

  &lt;body>	    
    &lt;p>Este pargrafo &lt;![CDATA[contm muitos caracteres &lt;
      (&lt; &lt; &lt; &lt; &lt;) de forma que  mais simples utilizar
      uma sesso marcada do tipo CDATA.]]&gt;&lt;/p>

    &lt;![ IGNORE [
    &lt;p>Este pargrafo definitivamente no ser includo
      no output.&lt;/p>
    ]]&gt;

    &lt;![ <![CDATA[%text.output]]> [
    &lt;p>Este pargrafo pode ou no aparecer no output.&lt;/p>

    &lt;p>A sua ocorrncia  controlada pela entidade de parmetro <![CDATA[%text.output]]>
      .&lt;/p>	    
    ]]&gt;
  &lt;/body>
&lt;/html></programlisting>	    
	</step>

	<step>
	  <para>Normalize este arquivo utilizando o 
	    <command>osgmlnorm</command> e examine o resultado.  
	    Observe quais pargrafos apareceram, quais desapareceram 
	      e o que aconteceu com o contedo da 
	      sesso marcada como CDATA.</para>
	</step>

	<step>
	  <para>Altere a definio da entidade 
	    <literal>text.output</literal> de <literal>INCLUDE
	    </literal> para <literal>IGNORE</literal>.  Re-normalize 
	    o arquivo, e observe o resultado para ver o que foi 
	    alterado.</para>
	</step>
      </procedure>
    </sect2>
  </sect1>

  <sect1 id="sgml-primer-conclusion">
    <title>Concluso</title>

    <para>Esta  a concluso da introduo
      ao SGML.  Devido a restries de espao e 
      complexidade, diversos assuntos no foram abordados em 
      profundidade (ou sequer foram abordados).  Entretanto, as 
      sesses prvias cobriram o suficiente do SGML 
      para que voc possa seguir a organizao 
      da documentao do FDP.</para>
  </sect1>
</chapter>