32
1 FEUP XML Anotação de Documentos Elementos, Atributos, Entidades, Comentários, Declarações e Instruções de Processamento

Anotação de Documentos

  • Upload
    ham

  • View
    48

  • Download
    0

Embed Size (px)

DESCRIPTION

Anotação de Documentos. Elementos, Atributos, Entidades, Comentários, Declarações e Instruções de Processamento. Organização de um documento. Documentos XML têm estrutura física e estrutura lógica estrutura física — entidades (unidades de armazenamento) - PowerPoint PPT Presentation

Citation preview

Page 1: Anotação de Documentos

1

FEUP XML

Anotação de Documentos

Elementos, Atributos, Entidades, Comentários, Declarações e Instruções de Processamento

Page 2: Anotação de Documentos

2

FEUP XML

Organização de um documento

• Documentos XML têm estrutura física e estrutura lógica– estrutura física — entidades (unidades de armazenamento)– estrutura lógica — declarações, comentários, referências, instruções

de processamento

Page 3: Anotação de Documentos

3

FEUP XML

Estrutura Lógica/Física

Document

Unit

Sub-unit

elementos entidades

Document

processador XML = parser + gestor de entidades

Page 4: Anotação de Documentos

4

FEUP XML

Elementos

• Um elemento é constituído por uma tag-inicial, um conteúdo (contendo texto e eventualmente outros elementos) e uma tag-final

indo eu indo eu a caminho de <name>Viseu</name>, encontreiindo eu indo eu a caminho de *ITAViseu*ROM, encontreiindo eu indo eu a caminho de Viseu, encontrei

• Um documento XML constitui uma hierarquia de elementos (possivelmente recursiva): pais, antepassados, filhos, ...

• Os elementos possíveis são definidos num DTDLivro

Capítulo

Secção

Livro

Capítulo

Capítulo

Secção

Secção

Secção

SecçãoCapítulo

Page 5: Anotação de Documentos

5

FEUP XML

Declarações

• Instruções para o processador de XML– Obrigatória

<?XML version="1.0" encoding="UTF-8" standalone="yes" ?>

– Opcionalmente<!DOCTYPE Book SYSTEM "http://www.fe.up.pt/jlopes/dtds/Book.dtd" !>

– Comentários (não fazem parte do documento)<!-- Início da parte XML do doc -->

UTF-8 é uma codificação do Unicode em caracteres de 8-bit : os primeiros 128 são os mesmos que ASCII, os outros são usados para codificar o resto do Unicode em sequências de 2 a 6 bytes. UTF-8 é incompatível com ISO 8859-1 (ISO Latin-1) acima do 126 decimal (fim do ASCII)

UTF-8 é uma codificação do Unicode em caracteres de 8-bit : os primeiros 128 são os mesmos que ASCII, os outros são usados para codificar o resto do Unicode em sequências de 2 a 6 bytes. UTF-8 é incompatível com ISO 8859-1 (ISO Latin-1) acima do 126 decimal (fim do ASCII)

Page 6: Anotação de Documentos

6

FEUP XML

Estrutura Física de um Documento

Entidades

Page 7: Anotação de Documentos

7

FEUP XML

Distribuição por Componentes

• Um documento XML pode ser distribuído por vários ficheiros– facilita reutilização de componentes intra e inter-documentos– permite a inclusão de dados que não são XML

• Cada unidade de informação é uma Entidade– possui um nome (identificador)

• A entidade documento (root)– não tem nome– seleccionada ou passada ao parser pelo nome do ficheiro

document entity

document entity

Page 8: Anotação de Documentos

8

FEUP XML

Entidades

• São definidas num DTD pelas tags de declaração de entidades<!ENTITY XML "eXtensible Markup Language">

• São inseridas no texto no local de referênciaO formato &XML; inclui entidades.O formato eXtensible Markup Language inclui entidades.

declaração A"A"

"A"

Page 9: Anotação de Documentos

9

FEUP XML

Entidades Internas (texto)

• Para evitar redundâncias• Declaração

<!ENTITY size 'mede 6" de comprimento'>

• UsoO objecto &size; sempre.

Page 10: Anotação de Documentos

10

FEUP XML

Entidades Externas (texto)

• Quando o texto vai ser usado em diversos documentos• Quando o texto é demasiado grande para estar dentro da declaração

<!ENTITY Chapter2 SYSTEM "/Book/Ents/Chapter2.xml">

• Para agrupar entidades internas– declarações de entidades ISO

• ISOnum (<, >, etc), ISOlat1, ISOgrk1, ISOpub (publishing), ISOtech (symbol)

• Usar primeiro catálogo local de entidades <!ENTITY Chars PUBLIC "-//Feup//Entity Chars//EN" "/ents/Chars.xml">

Page 11: Anotação de Documentos

11

FEUP XML

Entidades Binárias (externas)

• Contendo dados que não são XML– não é verificada pelo parser

<!ENTITY jlopes SYSTEM "/fotos/jlopes.tif" NDATA TIFF>

– a aplicação processa directamente ou lança outra aplicação

• UsoFoto do <pic name="jlopes"/> J.C.Lopes.

Page 12: Anotação de Documentos

12

FEUP XML

Outras Entidades

• Entidades built-in

• Entidades de carácter&#x3C; &#60; &lt;

• Entidades parâmetro– usadas na construção de DTDs

<!ENTITY % Part "emph | supersc" ><!ELEMENT para (% Part ;ript)* >

– para agrupar declarações <!ENTITY % ISOnum PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special

Graphics//EN" "/ents/isonum.ent">&ISOnum;

– isonum.ent<!ENTITY excl "!"> <!ENTITY reg "*REG*"> ...

&lt; <

&gt; >

&amp: &

&apos; '

&quot; "

declaração

referência

Page 13: Anotação de Documentos

13

FEUP XML

Estrutura Lógica de um Documento

DTD

Page 14: Anotação de Documentos

14

FEUP XML

DTD

• XML possibilita a criação de templates para anotação de documentos permitindo controlar (e validar!) a posição de elementos e seus atributos

• DTD é um conjunto (formal) de regras definindo a estrutura do documento– que elementos podem ser usados e qual a sua sequência– especificam portanto a hierarquia e granularidade do documento

• A estrutura em árvore do documento tem de estar conforme a estrutura do DTD

Livro Capítulo + Parágrafo *

Sections ?

Livro Capítulo

Capítulo

Capítulo

Parágrafo

Parágrafo

Parágrafo

Sections

Page 15: Anotação de Documentos

15

FEUP XML

Componentes de um DTD

• Um DTD é composto por várias declarações– ELEMENT (definição de marcas)– ATTLIST (definição de atributos)– ENTITY (definição de entidades)– NOTATION (definição de dados do tipo notation)

• As declarações estão agrupadas dentro da declaração DOCTYPE<!DOCTYPE MyBook [ <!-- DTD MyBook --> <! ... >]>

Page 16: Anotação de Documentos

16

FEUP XML

DTD simples

<?xml version="1.0" standalone="yes" ?><!DOCTYPE saudacao [

<!ELEMENT saudacao (#PCDATA) >]><saudacao>

Bom dia a quem chegou a horas!</saudacao>

• Nome do DTD (document type definition) tem que ser o nome do elemento raiz

• Maiúsculas e minúsculas são significativas• O tipo do elemento é PCDATA (parsable character data) o que

significa texto simples, sem outros elementos, embora substitua referências a entidades

• A alternativa são os elementos compostos

Page 17: Anotação de Documentos

17

FEUP XML

DTD composto

<escola> <turma> <aluno> <nome>Rui Silva</nome> <media>13.6</media> </aluno> <aluno> <nome>João Sousa</nome> <media>11.0</media> </aluno> </turma> <turma> <aluno> <nome>João Sousa</nome> <media>11.0</media> </aluno> <aluno><nome>Ana Costa</nome> <media>17.0</media></aluno> </turma></escola>

<?xml version=“1.0” standalone=“yes”?><!DOCTYPE escola [

<!ELEMENT escola (turma, turma)><!ELEMENT turma (aluno, aluno)><!ELEMENT aluno (nome, media)><!ELEMENT nome (#PCDATA)><!ELEMENT media (#PCDATA)>

]>

– Sequência (","): um aluno é definido como a sequência de dois elementos, os filhos nome e média

– uma turma é uma sequência de dois alunos

Page 18: Anotação de Documentos

18

FEUP XML

DTD composto (cont.)

<escola> <turma> <aluno> <nome>Rui Silva</nome> <media>13.6</media> </aluno> <aluno> <nome>João Sousa</nome> <media>11.0</media>

<frequencia>nocturno</frequencia> </aluno> </turma> <turma> <aluno> <nome>João Sousa</nome></aluno> <aluno><nome>Ana Costa</nome> <media>17.0</media></aluno> </turma></escola>

<?xml version=“1.0” standalone=“yes”?><!DOCTYPE escola [

<!ELEMENT escola (turma+)><!ELEMENT turma (aluno*)><!ELEMENT aluno (nome, media?,

frequencia?)><!ELEMENT nome (#PCDATA)><!ELEMENT media (#PCDATA)><!ELEMENT frequencia (diurno | nocturno)>

]>

– Escolha ("|")• Um de entre uma lista de valores

– Cardinalidadade• ("+") escola tem uma ou mais turmas• ("*") turma tem zero ou mais alunos• ("?") aluno tem um nome e zero ou uma

media (optativa) e frequencia

Page 19: Anotação de Documentos

19

FEUP XML

Declaração de Elementos

• Usada para definir um novo elemento e especificar o seu conteúdo<!ELEMENT element_name rule>

• As regras podem conter– sequências: A, B – escolhas: A | B– indicadores de quantidade: A? A+ A*

• Um elemento pode ter filhos, conter texto ou ser vazio<!ELEMENT book (p*, chapter+)+><!ELEMENT p ANY><!ELEMENT image EMPTY>

<book><p>Há uma imagem neste <image/> ponto do texto.</p></book>

– ANY permite a mistura de texto e elementos, o que não é aconselhável, a não ser para documentos muito pouco estruturados

– Um elemento vazio não tem conteúdo; pode substituir-se a marca de fecho por "/>" na de abertura

– Os parênteses permitem a criação de expressões complexas

Page 20: Anotação de Documentos

20

FEUP XML

Declaração de Elementos Mistos

• Texto pode ocorrer em sítios com Parsable Character Data– PCDATA tem de ser o primeiro token do grupo, o grupo deve ser uma

escolha e tem de ser opcional e repetitivo<!ELEMENT emph (#PCDATA | sub | super)*><!ELEMENT sub (#PCDATA)><!ELEMENT super (#PCDATA)>

<emph>H<sub>2</sub>O é água</emph>

– Só se consegue especificar os elementos admissíveis mas não a sua ocorrência ou ordem

– Útil ao começar a anotar um documento legado; no fim, não devem ocorrer situações de mistura

Page 21: Anotação de Documentos

21

FEUP XML

DTD externo

• Podem ser incluídos DTD externos<!DOCTYPE MyBook SYSTEM "../dtds/MyBook.dtd" [ <!-- subconjunto interno do DTD MyBook --> <! ... >]>

– Podem ser assim partilhados por vários documentos– DTD externo não inclui a declaração de DOCTYPE que fica no doc

• No DOCTYPE o atributo SYSTEM dá o URL onde se encontra o DTD• DTD externo público tem, para além do URL, um parâmetro de nome, para

facilitar a pesquisa em vários repositórios<!DOCTYPE MyBook PUBLIC "//article//PT" "../dtds/MyBook.dtd" [

– Num documento só existe um DTD• Para combinar vários DTDs num mesmo documento é necessário utilizar

entidades externas

Page 22: Anotação de Documentos

22

FEUP XML

Processamento de DTDs

• Se houver conflito de definições, vence o subconjunto interno• A sua inclusão pode ser controlada pela declaração XML

<?xml version="1.0" standalone="yes">

subconjunto externosubconjunto interno

<?xml version="1.0" standalone="no">

Page 23: Anotação de Documentos

23

FEUP XML

Entidades paramétricas

• As entidades são declaradas no DTD mas são incluídas no documento propriamente dito

• Para incluir entidades no DTD é necessário usar o mecanismo da referência a entidades paramétricas

<!ENTITY % PCD "(#PCDATA)"><!ELEMENT ANIMAL %PCD;><!ELEMENT COMIDA %PCD;>

• Modularizar o DTD<!ELEMENT escola (turma+)><!ELEMENT turma (aluno*)><!ENTITY % aluno SYSTEM "aluno.dtd">%aluno;

• Constrói-se assim um DTD a partir de vários– Cuidado a ter: não fazer referências circulares nos DTDs– Os documentos importados por entidades externas não podem ter o

seu próprio DTD

Page 24: Anotação de Documentos

24

FEUP XML

Atributos

• Para além do nome, um elemento pode conter outra informação em atributos (meta-informação)

<para security="secret" author="jlopes">Este parágrafo é secreto</para>

• Num DTD um atributo é associado a um elemento particular e é-lhe atribuído um dado tipo

<!ELEMENT para (#PCDATA)><!ATTLIST para security CDATA author CDATA>

• Alguns atributos são reservados– linguagens

<para xml:lang="en">Hello</para><para xml:lang="pt-PT">Olá</para>

– espaços<para xml:space="preserve">Hello, Champion!</para>

Page 25: Anotação de Documentos

25

FEUP XML

Declaração de Atributos

• Usada para associar atributos a um dado elemento<!ATTLIST target_element attr_name attr_type default>

• Por exemplo:<!ATTLIST box length CDATA "0"><!ATTLIST box width CDATA "0"><!ATTLIST frame visible (true | false) "true"><!ATTLIST person marital (single | married | divorced | widowed) #IMPLIED>

• Os valores por omissão, incluem– qualquer valor permitido pelo tipo: "0" "true" – deve ser especificado no elemento: #REQUIRED– valor não fornecido e opcional: #IMPLIED– valor fixo: #FIXED

• Atributos reservados (começados por xml)<!ATTLIST english xml:lang NMTOKEN "en">

Page 26: Anotação de Documentos

26

FEUP XML

Declaração de Atributos

• Declarações múltiplas<!ATTLIST book id ID #REQUIRED type (novel | fact) #REQUIRED><!ATTLIST book width (thick | thin ) "thin" author CDATA #IMPLIED>

<book id="X123" type="fact" author="jlopes"><book id="X127" width="thick" type="novel">

– width por omissão é thin; o autor é optativo

Page 27: Anotação de Documentos

27

FEUP XML

Tipo dos Atributos

• O tipo do atributo restringe os valores possíveis

CDATA Caracteres que não são markup

enumerated lista de valores de onde pode ser escolhido um

ENTITY entidade declarada no DTD

ENTITIES lista de entidades declaradas no DTD

ID identificador (único) de elemento

IDREF valor de identificador do tipo ID

IDREFS lista de valores de identificadores

NMTOKEN XML token

NMTOKENS lista de tokens XML

NOTATION notação declarada no DTD

Page 28: Anotação de Documentos

28

FEUP XML

Atributo NMTOKEN

• NMTOKEN– Trata-se de um tipo para os atributos que segue as regras dos

identificadores e está preparado para ligar a linguagens de programação; não admite espaços

– <!ATTLIST address state NMTOKEN #REQUIRED>– NMTOKENS, forma plural

Page 29: Anotação de Documentos

29

FEUP XML

Atributo ID

• ID– Destina-se a identificar univocamente um elemento no documento,

portanto não admite repetições– Constituído por uma palavra a começar por uma letra e sem espaços– Usado por programas que manipulem XML

<?xml version=“1.0” standalone=“yes”?><!DOCTYPE DOCUMENT [

<!ELEMENT DOCUMENT (P*)><!ELEMENT P (#PCDATA)><!ATTLIST P PNUMBER ID #REQUIRED>

]><DOCUMENT>

<P PNUMBER="p1">Heróis do mar</P><P PNUMBER="p2">Heróis do mar</P>

</DOCUMENT>

Page 30: Anotação de Documentos

30

FEUP XML

Atributo IDREF

• IDREF– O valor de um atributo com o tipo IDREF é o ID de outro elemento no

documento– Exemplo de estabelecimento de relações familiares

<?xml version=“1.0” standalone=“yes”?><!DOCTYPE DOCUMENT [

<!ELEMENT DOCUMENT (PERSON*)><!ELEMENT PERSON (#PCDATA)><!ATTLIST PERSON PNUMBER ID #REQUIRED><!ATTLIST PERSON FATHER IDREF #IMPLIED><!ATTLIST PERSON MOTHER IDREF #IMPLIED>

]><DOCUMENT>

<PERSON PNUMBER="a1">Susana</PERSON><PERSON PNUMBER="a2">Joaquim</PERSON><PERSON PNUMBER="a3" MOTHER="a1" FATHER="a2">Chico</PERSON><PERSON PNUMBER="a4" MOTHER="a1" FATHER="a2">David</PERSON>

</DOCUMENT>

Page 31: Anotação de Documentos

31

FEUP XML

Atributo ENTITY

• ENTITY– Destina-se a ligar dados binários externos– O seu valor é uma entidade geral não analisada declarada no DTD,

que liga para dados externos, por exemplo uma imagem<!ELEMENT IMAGE EMPTY><!ATTLIST IMAGE SOURCE ENTITY #REQUIRED><!ENTITY LOGO SYSTEM "logo.gif">

<DOCUMENT>...<IMAGE SOURCE="LOGO"/>

...</DOCUMENT>

Page 32: Anotação de Documentos

32

FEUP XML

Declaração de Notações

• Elementos ou entidades podem conter dados em formatos diferentes de XML

• Uma declaração de elemento deve especificar que formatos podem ser embebidos

<!NOTATION TeX PUBLIC "-//MyCorp/NOTATION TeX Help File//EN" SYSTEM "/APPS/texview.exe">

• Uma declaração de entidades deve especificar o formato que está embebido

<!ENTITY Logo SYSTEM="logo.tex" NDATA TeX>

• Também podem ser referidas em declarações de atributos<!NOTATION mpeg SYSTEM "mpegplay.exe"><!NOTATION jpeg SYSTEM "netscape.exe"><!NOTATION mov SYSTEM "mplayer.exe"><!NOTATION avi SYSTEM "mplayer.exe"><!ATTLIST media player NOTATIONS (mpeg | jpeg | mov) #REQUIRED