xml100_3

Embed Size (px)

DESCRIPTION

xml100_3

Citation preview

  • 1Helder da Rochawww.argonavis.com.br

    XML: uma introduo prtica

  • 2Por que validar?

    Para a maior parte das aplicaes, um XML bem formado suficiente possvel, em documentos XML no vlidos Montar a rvore usando DOM Extrair ns, acrescentar ns, alterar o contedo dos

    elementos usando SAX ou DOM Transformar o documento em outro usando XSLT Gerar um PDF ou um SVG com dados contidos no

    documento Exibir o XML em um browser usando CSS

    Para que serve, ento, o trabalho de desenvolver um DTD?

  • 3Definir uma linguagem

    Para se ter uma linguagem precisa-se de um esquema Linguagem implica comunicao. No h comunicao eficiente sem uma

    conveno entre as partes sobre vocabulrios, regras de formao, etc.

  • 4Definir um esquema

    Documentos no vlidos so "individualistas" Um esquema representa um conjunto de documentos,

    que existem e que viro a existir possvel fazer muitas coisas com UM documento no

    vlido. difcil automatizar os processos sem considerar uma CLASSE de documentos

    Um esquema uma formalidade necessria Se voc tem uma grande coleo de documentos que

    foram construdos segundo determinadas regras, voc jtem, informalmente, um esquema Para validar documentos de acordo com suas convenes,

    preciso ter um esquema

  • 5Classes vs. instncias

    Um esquema define uma classe de documentos Os documentos que quiserem fazer parte dessa

    classe devem aderir ao esquema Um documento pode pertencer a vrias

    classes Um documento pode ser vlido em vrios

    esquemas

  • 6Documentos vlidos

    Documentos vlidos contm Declarao de tipo de documento (para DTD), ou

    Declarao de namespace e schema (para XMLSchema)

    Para validar Use um validador (com suporte a Schema)

  • 7O que define um esquema

    Um vocabulrioElementos, atributosUma gramticaRelacionamentosUma coleo de entidadesNo caso dos DTDs

  • 8Exemplo

    Richard Feynman

    F sico Matemtico Arrombador de cofres

  • 9DTD

  • 10

    Documento vlido

    RichardFeynman

  • 11

    Documento no vlido (1)

    Por que?

    Richard

    Arrombador de cofres

  • 12

    Documento no vlido (2)Documento no vlido (2)

    Por que?

    Arrombador de cofres

    RichardFeynman

    F sico

  • 13

    DTD Externo SYSTEM

    Como vincular

    (...)

    Elementos: vincula o DTD a um documento define um elemento define os atributos de um elemento define uma entidade ( ex: &nome;) define uma notao interna para uma URI

    nome do elementoraiz do documento

    onde buscar validao:SYSTEM ou PUBLIC

    URI ou identificador

  • 14

    DTD pblico

    Comum em linguagens consolidadas No precisa de URI, mas deve ser fornecida

    por segurana FPI: formal public identifier arquivo chamado de "catalog" guardado com a

    aplicao verifica o FPI se no encontrar, busca o DTD na URI fornecida

  • 15

    DTD Interno

    ]>

    RichardFeynman

  • 16

    DTD incompleto

    O DTD foi importado, mas est incompleto. Parte dele definido localmente

    Elementos, atributos e entidades definidos no documento tm prioridade sobre declaraes importadas Processador l primeiro elementos locais, depois externos A primeira declarao usada. Declaraes adicionais

    para o mesmo elemento/atributo/entidade so desconsideradas

    ]>

  • 17

    href CDATA #REQUIRED >

    href CDATA #REQUIRED >

    DTD: exemplozero ou uma ocorrncia exatamente uma

    ocorrncia cada

    zero ou mais ocorrncias

    uma ou mais ocorrncias

    no pode conter outros ns(exceto atributos)

    definio deelemento

    lista de atributos

    atributo obrigatriocontm "Character DATA"

    atributo opcionalcontm nome ou nmero

    um ou o outro

    valor default

  • 18

    Sintaxe

    O contedo pode ser (1) ( #PCDATA) ,(2) ( uma seqncia) ,(3) ( uma lista para escolha) ,(4) ( contedo misto) ,(5) a palavra EMPTYou (6) a palavra ANY.

  • 19

    #PCDATA

    Parsed Character Data Elemento pode conter textoNo pode conter elementos

  • 20

    Seqncias de Elementos-filho

    O contedo deve ter uma lista de elementos separados por vrgula Podem ter sufixos indicando multiplicao * zero ou mais +um ou mais ? zero ou um

    Exemplos

    email *, website ?) >

  • 21

    Seleo de um Elemento-filho

    Lista de elementos separada por |(barra vertical) Exemplos

  • 22

    Contedo misto

    (#PCDATA | elem1 | ... | elemn)* #PCDATA tem que ser o primeiro elemento O * no final obrigatrio No possvel controlar o nmero ou a estrutura

    dos elementos Exemplo: a seguinte declarao em DTD:

    permite o seguinte contedoA frase que ele leu n o foi a que elaouviu.

  • 23

    Elementos Vazios e Any

    Elementos que no podem conter nada devem ser declarados como EMPTY

    Elementos EMPTY podem conter atributos

    A declarao acima permite elementos como

    ANY: para elementos que podem conterqualquer coisa

  • 24

    Sintaxe

    atributo 1 tipo valor_ default >

    atributo 2 tipo valor_default >...

    ou

    atributo 1 tipo valor_ defaultatributo 2 tipo valor_ defaultatributo 3 tipo valor_defaultatributo 4 tipo valor_default

    ... >

  • 25

    Exemplos

    numero CDATA #FIXED "12/32 - 1"

    para (REC|CGH|GRU|SDU) #REQUIRED

    transportador (RG | JH) "RG" >

  • 26

    Tipos de dados

    CDATANMTOKENNMTOKENS

    SeleoID

    IDREFIDREFSENTITYENTITIESNOTATION

  • 27

    CDATA e NMTOKEN

    CDATA (character data) representa qualquer texto arbitrrio pode conter espaos, pontuao, etc.

    NMTOKEN (name token). semelhante a um nome de elemento ou atributo caracteres alfanumricos no pode conter espaos

    NMTOKENS representa um ou mais NMTOKEN separados por espaos.

  • 28

    Seleo

    Uma Seleo uma lista de NMTOKENS de onde pode-se escolher o valor do atributo. As escolhas so separadas por |:

    Elementos no podem conter espaos ou outros caracteres no-alfanumricos Tipo NMTOKEN!

  • 29

    ID

    Atributos do tipo ID tem que conter um nome (e noNMTOKEN) que seja unvoco no documento. Nome tem mesmas regras que identificador XML

    (caracteres alfanumrico, no comea com nmero, etc.) No se pode usar um nmero como ID. A soluo colocar um prefixo antes do nmero que seja

    ou uma letra ou um sublinhado. Elementos s podem ter um tipo ID. No pode haver outro elemento na mesma pgina com

    mesmo ID Exemplos

  • 30

    IDREF

    IDREF referncia para um ID. Exemplo:

    Aplicao (codigo e numero so IDs)

    ... ...

    ...

    ...

  • 31

    IDREFS

    Lista de elementos IDREF. Exemplo:

    Aplicao (codigo e numero so IDs)

    ... ... ...

  • 32

    Valores default

    #REQUIRED: fora o autor do documento a definir um valor explcito ao atributo. #IMPLIED: o atributo opcional. #FIXED: o atributo tem um valor fixo, constante Valor no pode ser mudado Autor no precisa definir atributo e, se o fizer, no pode

    mudar o valor. Exemplo:

    Valor inicial, entre aspas Autor no precisa definir atributo, mas pode mud-lo

  • 33

    e tipo NOTATION

    Associa URI a um nome Usado frequentemente para associar valores CDATA a

    NMTOKEN (mesmo onde no h URIs) Exemplos

    Tipo NOTATION de til em situaes onde no se pode usar CDATA

    store NOTATION(amazon | barnes) #REQUIRED>

    Assim pode-se limitar melhor valores dos atributos

  • 34

    Vrios tipos de Constantes usadas nos DTDs e documentos XML

    De parmetro (%nome; - s no DTD) internas - incluem texto definido localmente externas - incluem sub-DTDs de arquivos externos

    Gerais (&nome; - s no XML) internas (texto local - sempre processadas) caracter - globais - < & definidas pelo usurio

    externas (carregam arquivos externos) processadas - incluem texto no XML no-processadas - incluem formatos binrios (como imagens)

  • 35

    Entidades gerais internas

    Exemplos:

    Uso: &nome;no documento XML Visite a &empresa; ainda hoje!.

    &copyright;

  • 36

    Entidades gerais externas

    Carregam texto de arquivos externos

    Exemplo

    Uso

    &menu_sup;

    Contedo de menu.xml:

    Texto

    Resultado

    Texto

  • 37

    Entidades externas no processadas

    Usadas para carregar dados que no podem ser processados (que no so texto) atravs de atributos

    Depende de uma declarao NOTATION Neste caso tpico usada para informar tipo de dados

    Exemplo de uso no DTD

    Atributos podem declarar receber tipo ENTITY

    Uso no XML:

  • 38

    Entidades de parmetro

    Variveis para uso dentro do DTD Exemplos. Em vez de repetir ...

    Declare as entidades

    E use as entidades no DTD

  • 39

    Entidades de parmetro externas

    Carregam trechos de DTD de outros arquivos

    Exemplo

    preciso chamar a entidade dentro do DTD. Uso

    %tabela;

    ...

    Contedo de voos.dtd:

    Resultado

  • 40

    Condicionais

    Servem para construir DTDs configurveis Ignora o contedo

    ]]>

    Declara que o contedo deve ser interpretado

    ]]>

    Parecem inteis, no?

  • 41

    Utilidade das condicionais

    Um DTD com declaraes "desligadas"

    ]]>

    ]]>

    Na utilizao, pode-se ligar as declaraes:

    ...

  • 42

    Namespaces e XML Schema

    DTDs validam "documentos", no "linguagens" DTDs supem que documentos contm apenas uma

    linguagem DTDs no suportam namespaces. Para declarar um

    elemento preciso usar o nome qualificado:

    Para validar namespaces em vez de documentos, use XML Schema Cada namespace pode ser associado a um esquema

    diferente (um documento pode ter vrios esquemas) DTDs ainda podem ser usados, para declarar, por

    exemplo, entidades.

  • 43

    Validao: alm do DTD

    DTD vantagem: simples desvantagens: (1) no usa sintaxe XML; (2) limitado.

    XML Schema vantagem: (1) XML; (2) permite validao mais

    detalhada. desvantagem: muito mais complicado que DTD

    XML Schema ainda no resolve todos os problemas H outras alternativas: Trax, Relax, Schematron Em certos casos preciso realizar validao adicional

    usando alguma linguagem (Python, Java)