Tecnologias XML Schema XML Schema l l l

  • Slides: 26
Download presentation
Tecnologias XML Schema

Tecnologias XML Schema

XML Schema l l l Documento XML válido Um documento Schema especifica as regras

XML Schema l l l Documento XML válido Um documento Schema especifica as regras para a validação de um documento XML Um Schema especifica: l l Os elementos e atributos que podem constar do documento A ordem e número dos elementos filhos Tipos de dados para os elementos e atributos Um Schema define uma classe de documentos. Documentos XML que referenciam esse Schema são instâncias dessa classe

XML Schema XML

XML Schema XML

<? xml version="1. 0" ? > <xsd: schema xmlns: xsd="http: //www. w 3. org/2001/XMLSchema"

<? xml version="1. 0" ? > <xsd: schema xmlns: xsd="http: //www. w 3. org/2001/XMLSchema" target. Namespace=http: //your_namespace > <xsd: element name="pessoas" > <xsd: complex. Type> <xsd: sequence> <xsd: element name="pessoa" max. Occurs="unbounded"> <xsd: complex. Type> <xsd: sequence> <xsd: element name="nome" type="xsd: string" /> <xsd: element name="data-nascimento" > <xsd: complex. Type> <xsd: sequence> <xsd: element name="ano" type="xsd: int" /> <xsd: element name="mes" type="xsd: int" /> <xsd: element name="dia" type="xsd: int" /> </xsd: sequence> </xsd: complex. Type> </xsd: element> <xsd: element name="bi" type="xsd: string" /> </xsd: sequence> <xsd: attribute name="id" type="xsd: string" use="required" /> </xsd: complex. Type> </xsd: element> </xsd: sequence> </xsd: complex. Type> </xsd: element>

XML Schema l Estrutura de um Schema Declaração XML <? xml version="1. 0" ?

XML Schema l Estrutura de um Schema Declaração XML <? xml version="1. 0" ? > Root schema <xsd: schema xmlns: xsd=http: //www. w 3. org/2001/XMLSchema target. Namespace=http: //your_namespace element. Form. Default="qualified"> <xsd: element. . . <!– definição de elementos e atributos -->. . . </xsd: schema> namespace prefixo xsd

XML Schema l Namespaces XML Schema <xsd: schema xmlns: xsd="http: //www. w 3. org/2001/XMLSchema">

XML Schema l Namespaces XML Schema <xsd: schema xmlns: xsd="http: //www. w 3. org/2001/XMLSchema"> l Especifica as entidades para definir um Schema: element, schema, simple. Type (XML l l Schema) URI -> http: //www. w 3. org/2001/XMLSchema Prefixo por convenção é xsd:

XML Schema Instance Namespaces xmlns: xsi=http: //www. w 3. org/2001/ XMLSchema-instance l l Deve

XML Schema Instance Namespaces xmlns: xsi=http: //www. w 3. org/2001/ XMLSchema-instance l l Deve ser referenciado por documentos instância (XML) que usam entidades definidas neste schema como: xsi: schema. Location xsi: no. Namespace. Schema. Location

XML Schema l Referenciar um Schema no XML – (1) l Atributo xsi: no.

XML Schema l Referenciar um Schema no XML – (1) l Atributo xsi: no. Namespace. Schema. Location pessoas. xml <? xml version="1. 0" encoding="ISO-8859 -1"? > <pessoas xmlns: xsi="http: //www. w 3. org/2001/XMLSchemainstance" xsi: no. Namespace. Schema. Location=“pessoas. xsd" >. . . Documento pessoas. xsd

XML Schema l Referenciar um Schema no XML – (2) l Atributo xsi: schema.

XML Schema l Referenciar um Schema no XML – (2) l Atributo xsi: schema. Location pessoas. xml <? xml version="1. 0" encoding="ISO-8859 -1"? > <pessoas xmlns=http: //your_namespace xmlns: xsi=http: //www. w 3. org/2001/XMLSchema-instance xsi: schema. Location="http: //your_namespace pessoas. xsd" >. . . pessoas. xsd <? xml version="1. 0" ? > <xsd: schema xmlns: xsd="http: //www. w 3. org/2001/XMLSchema" target. Namespace="http: //your_namespace" element. Form. Default="qualified"> …

XML Schema l Definição de elementos l l l Elemento xsd: element O atributo

XML Schema l Definição de elementos l l l Elemento xsd: element O atributo name especifica o nome do elemento no XML O atributo type define o tipo de dados do elemento <xsd: element name="montante" type="xsd: float"> <montante>123. 56</montante>

XML Schema l Tipos simples primitivos <xsd: element name="ano" l type="xsd: int" /> Tipos

XML Schema l Tipos simples primitivos <xsd: element name="ano" l type="xsd: int" /> Tipos de dados para o conteúdo textual de um elemento ou atributo String any. URI. . float decimal date (ccyy-mm-dd) time (hh: mm: ss. sss) l Hierarquia de tipos de dados primitivos any. Simple. Type –> decimal –> integer -> long. . .

XML Schema l Tipos simples derivados l l l Derivação por restrição, lista ou

XML Schema l Tipos simples derivados l l l Derivação por restrição, lista ou união Elemento xsd: simple. Type xsd: restriction define restrições adicionais aos valores do elemento <xsd: element name="percentagem"> <xsd: simple. Type > <xsd: restriction base="xsd: int"> <xsd: min. Inclusive value="0" /> <xsd: max. Inclusive value="100" /> </xsd: restriction> </xsd: simple. Type> </xsd: element>

XML Schema l Operadores de restrição – facets l l l l xsd: min.

XML Schema l Operadores de restrição – facets l l l l xsd: min. Inclusive - >= xsd: max. Inclusive - <= xsd: length – tamanho fixo (string, listas) xsd: totaldigits – o numero máximo de dígitos xsd: pattern – expressão regular xsd: fraction. Digits - número de casas decimais. enumeration – valores numa enumeração

XML Schema l Novos tipos de dados simples <xsd: simple. Type name="Toperador"> <xsd: restriction

XML Schema l Novos tipos de dados simples <xsd: simple. Type name="Toperador"> <xsd: restriction base="xsd: string"> <xsd: enumeration value="91" /> <xsd: enumeration value="93" /> <xsd: enumeration value="96" /> </xsd: restriction> </xsd: simple. Type > l Atributo name de xsd: simple. Type l Usados para definir tipos de dados de elementos <xsd: element name="indicativo" type="Toperador">

XML Schema l Exemplos de restrições l xsd: length <xsd: simple. Type name="Tcodigo"> <xsd:

XML Schema l Exemplos de restrições l xsd: length <xsd: simple. Type name="Tcodigo"> <xsd: restriction base="xsd: string"> <xsd: length value="7" /> </xsd: restriction> </xsd: simple. Type> l xsd: pattern <xsd: simple. Type name="Tbi"> <xsd: restriction base="xsd: string"> <xsd: pattern value="[0 -9]{7}"/> </xsd: restriction> </xsd: simple. Type>

XML Schema l Derivação por união <xsd: simple. Type name="Tmes" > <xsd: union member.

XML Schema l Derivação por união <xsd: simple. Type name="Tmes" > <xsd: union member. Types="Tmesstr Tmesnum" /> </xsd: simple. Type> l Elemento xsd: union l A instância pode conter um dos valores especificados pelo atributo member. Types

XML Schema l Derivação por lista <xsd: simple. Type name="Tenderecosweb" > <xsd: list item.

XML Schema l Derivação por lista <xsd: simple. Type name="Tenderecosweb" > <xsd: list item. Type="xsd: any. URI" /> </xsd: simple. Type> l Elemento xsd: list l Exemplo XML <web>http: //www. dei. isep. ipp. pt http: //w 2 ks. dei. isep. ipp. pt</web>

XML Schema l Tipo Composto l Os elementos de tipo composto podem conter elementos

XML Schema l Tipo Composto l Os elementos de tipo composto podem conter elementos filhos e atributos l Um elemento com atributos é sempre do tipo composto l declarado usando o elemento complex. Type <xsd: element name="data-nascimento" > <xsd: complex. Type> <xsd: sequence> <xsd: element name="ano" type="xsd: int" <xsd: element name="mes" type="xsd: int" <xsd: element name="dia" type="xsd: int" </xsd: sequence> </xsd: complex. Type> </xsd: element> /> /> />

XML Schema l Composição dos sub-elementos num tipo composto l l l sequence –

XML Schema l Composição dos sub-elementos num tipo composto l l l sequence – especifica uma sequência com uma ordem fixa choice - especifica uma escolha de um elemento, entre os elementos declarados all – elementos não têm ordem fixa

XML Schema l <xs: choice> <xs: group name="name. Types"> <xs: choice> <xs: element name="name"

XML Schema l <xs: choice> <xs: group name="name. Types"> <xs: choice> <xs: element name="name" type="xs: string"/> <xs: sequence> <xs: element name="first. Name" type="xs: string"/> <xs: element name="middle. Name" type="xs: string" min. Occurs="0"/> <xs: element name="last. Name" type="xs: string"/> </xs: sequence> </xs: choice> </xs: group>

XML Schema l Definição de um elemento com conteúdo simples: texto e atributo l

XML Schema l Definição de um elemento com conteúdo simples: texto e atributo l <telefone operador="TMN" > 3457654 </telefone> <xs: element name="telefone"> <xs: complex. Type> <xs: simple. Content> <xs: extension base="xs: string"> <xs: attribute name="operador" use="required" type="xs: string"/> </xs: extension> </xs: simple. Content> </xs: complex. Type> </xs: element>

XML Schema l Restrições de ocorrência l definir o modo como os elementos ocorrem

XML Schema l Restrições de ocorrência l definir o modo como os elementos ocorrem l Atributos min. Occurs e max. Occurs l Usados nos operadores de composição ou na declaração de elementos <xsd: element name=“grupo” > <xsd: complex. Type> <xsd: sequence max. Occurs=“ 2” > <element name=“aluno” type=“Taluno”> <xsd: element name="autor" type="xsd: string" min. Occurs="1" max. Occurs="unbounded" />

Declaração de atributos Elemento xsd: attribute l O atributo name especifica o nome e

Declaração de atributos Elemento xsd: attribute l O atributo name especifica o nome e o atributo type o tipo de dados l o tipo de dados é do tipo simples primitivo ou derivado l declaração é feita dentro do elemento complex. Type depois dos elementos l Atributo use especifica a ocorrência l l required - o atributo é obrigatório optional - o atributo é opcional (por omissão) prohibited - o atributo deve ser omitido

Exemplo Schema com atributos <xsd: element name="pessoa" max. Occurs="unbounded"> <xsd: complex. Type> <xsd: sequence>

Exemplo Schema com atributos <xsd: element name="pessoa" max. Occurs="unbounded"> <xsd: complex. Type> <xsd: sequence> <xsd: element name="nome" type="xsd: string" /> <xsd: element name=“dnascimento" type="xsd: date" /> </xsd: sequence> <xsd: attribute name="id" type="xsd: string" use="required" /> </xsd: complex. Type> Atributo depois dos </xsd: element> elementos <pessoa id=“P 123"> <nome>António José Silva</nome> <dnascimento>2004 -07 -12</dnascimento> </pessoa>

l Validar XML em. Net private void Validation. Call. Back(Object sender, Validation. Event. Args

l Validar XML em. Net private void Validation. Call. Back(Object sender, Validation. Event. Args args) { //Display the validation error. This is only called on error m_Success = false; //Validation failed } private bool validate. Xml(String pathstr) { m_Success = true; Xml. Reader. Settings settings = new Xml. Reader. Settings(); settings. Validation. Type = Validation. Type. Schema; settings. Validation. Flags |= Xml. Schema. Validation. Flags. Process. Schema. Location; settings. Validation. Flags |= Xml. Schema. Validation. Flags. Report. Validation. Warnings; settings. Validation. Event. Handler += new Validation. Event. Handler(Validation. Call. Back); // Create the Xml. Reader object. Xml. Reader reader = Xml. Reader. Create(pathstr, settings); // Parse the file. while (reader. Read()) ; reader. Close(); return m_Success; } 25