230 likes | 361 Views
Tecnologias XML XML Schema. XML Schema. Documento XML válido Um documento Schema especifica as regras para a validação de um documento XML Um Schema especifica: Os elementos e atributos que podem constar do documento A ordem e número dos elementos filhos
E N D
XML Schema • Documento XML válido • Um documento Schema especifica as regras para a validação de um documento XML • Um Schema especifica: • 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 umaclasse de documentos. Documentos XML que referenciam esse Schema são instâncias dessa classe
XML Schema XML
<?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://your_namespace" elementFormDefault="qualified"> <xsd:element name="pessoas" > <xsd:complexType> <xsd:sequence> <xsd:element name="pessoa" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="nome" type="xsd:string" /> <xsd:element name="data-nascimento" > <xsd:complexType> <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:complexType> </xsd:element> <xsd:element name="bi" type="xsd:string" /> </xsd:sequence> <xsd:attribute name="id" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
XML Schema • Estrutura de um Schema <?xml version="1.0" ?> <xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema targetNamespace=http://your_namespace elementFormDefault="qualified"> <xsd:element ... <!– definição de elementos e atributos --> ... </xsd:schema> Declaração XML Root namespace prefixo xsd
XML Schema • NamespacesXML Schema <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> • Especifica as entidades para definir um Schema: element, schema,simpleType (XML Schema Schema) • URI -> http://www.w3.org/2001/XMLSchema • Prefixo por convenção é xsd:
XML Schema • XML Schema Instance Namespaces xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance • Deve ser referenciado por documentos instância (XML) que usam entidades definidas neste schema como: xsi:schemaLocation xsi:noNamespaceSchemaLocation
XML Schema • Referenciar um Schema no XML – (1) • Atributoxsi:noNamespaceSchemaLocation pessoas.xml <?xml version="1.0" encoding="ISO-8859-1"?> <pessoas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation=“pessoas.xsd" > ... Documento pessoas.xsd
XML Schema • Referenciar um Schema no XML – (2) • Atributoxsi:schemaLocation pessoas.xml pessoas.xsd <?xml version="1.0" encoding="ISO-8859-1"?> <pessoas xmlns=http://your_namespace xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://your_namespace pessoas.xsd" > ... <?xml version="1.0" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://your_namespace" elementFormDefault="qualified"> …
XML Schema • Definição de elementos • Elemento xsd:element • O atributo name especifica o nome do elementono XML • O atributo type define o tipo de dados do elemento <xsd:element name="montante" type="xsd:float"> <montante>123.56</montante>
XML Schema • Tipos simples primitivos <xsd:element name="ano" type="xsd:int" /> • Tipos de dados para o conteúdo textual de um elemento ou atributo String float date (ccyy-mm-dd) anyURI decimal time (hh:mm:ss.sss) .... • Hierarquia de tipos de dados primitivos anySimpleType –> decimal –> integer -> long ...
XML Schema • Tipos simples derivados • Derivação por restrição, lista ou união • Elemento xsd:simpleType • xsd:restrictiondefine restrições adicionais aos valores do elemento <xsd:element name="percentagem"> <xsd:simpleType > <xsd:restriction base="xsd:int"> <xsd:minInclusive value="0" /> <xsd:maxInclusive value="100" /> </xsd:restriction> </xsd:simpleType> </xsd:element>
XML Schema • Operadores de restrição – facets • xsd:minInclusive - >= • xsd:maxInclusive - <= • xsd:length – tamanho fixo (string, listas) • xsd:totaldigits – o numero máximo de dígitos • xsd:pattern – expressão regular • xsd:fractionDigits - número de casas decimais. • enumeration – valores numa enumeração
XML Schema • Novos tipos de dados simples • Atributo name de xsd:simpleType • Usados para definir tipos de dados de elementos <xsd:simpleType name="Toperador"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="91" /> <xsd:enumeration value="93" /> <xsd:enumeration value="96" /> </xsd:restriction> </xsd:simpleType> <xsd:element name="indicativo"type="Toperador">
XML Schema • Exemplos de restrições • xsd:length • xsd:pattern <xsd:simpleType name="Tcodigo"> <xsd:restriction base="xsd:string"> <xsd:length value="7" /> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="Tbi"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{7}"/> </xsd:restriction> </xsd:simpleType>
XML Schema • Derivação por união • Elemento xsd:union • A instância pode conter um dos valores especificados pelo atributo memberTypes <xsd:simpleType name="Tmes" > <xsd:union memberTypes="Tmesstr Tmesnum" /> </xsd:simpleType>
XML Schema • Derivação por lista • Elemento xsd:list • Exemplo XML <web>http://www.dei.isep.ipp.pt http://w2ks.dei.isep.ipp.pt</web> <xsd:simpleType name="Tenderecosweb" > <xsd:list itemType="xsd:anyURI" /> </xsd:simpleType>
XML Schema • Tipo Composto • Os elementos de tipo composto podem conter elementos filhos e atributos • Um elemento com atributos é sempre do tipo composto • declarado usando o elemento complexType <xsd:element name="data-nascimento" > <xsd:complexType> <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:complexType> </xsd:element>
XML Schema • Composição dos sub-elementos num tipo composto • sequence – especifica uma sequência com uma ordem fixa • choice - especifica uma escolha de um elemento, entre os elementos declarados • all – elementos são opcionais (?) e não têm ordem fixa
XML Schema • Restrições de ocorrência • definir o modo como os elementos ocorrem • Atributos minOccurse maxoccurs • Usados nos operadores de composição ou na declaração de elementos <xsd:element name=“grupo” > <xsd:complexType> <xsd:sequence maxOccurs=“2” > <element name=“aluno” type=“Taluno”> <xsd:element name="autor" type="xsd:string" minOccurs="1" maxOccurs="unbounded" />
Declaração de atributos • Elemento xsd:attribute • O atributo name especifica o nome e o atributo type o tipo de dados • o tipo de dados é do tipo simples primitivo ou derivado • declaração é feita dentro do elemento complexType depois dos elementos • Atributo use especifica a ocorrência • 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" maxOccurs="unbounded"> <xsd:complexType> <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:complexType> </xsd:element> Atributo depois dos elementos <pessoa id=“P123"> <nome>António José Silva</nome> <dnascimento>2004-07-12</dnascimento> </pessoa>