• Sonuç bulunamadı

2. YÖNTEM

4.2. Öneriler

O principal objetivo da linguagem XML Schema é descrever a estrutura, o conteúdo, restrições e os tipos de dados dos vários elementos e atributos de um documento XML. XML Schema pode ser considerado um conjunto de DTDs, namespaces e tipos de dados (DAUM; UDO, 2002). Seja o exemplo da figura 3.7, onde se apresenta um trecho de um documentoXML.

Fig. 3.7 – Parte de um documento XML

Estes dados, para serem válidos, devem seguir as seguintes restrições:

• O elemento endereço deve ser composto dos elementos rua, seguido por cep, cidade e telefone;

• O elemento rua é formado por caracteres alfanuméricos;

• O elemento cep é formado por cinco dígitos seguidos por um traço e mais três dígitos;

• O elemento cidade é formado por caracteres alfanuméricos;

• O elemento telefone é formato por até 13 dígitos, podendo conter traços entre eles.

Todas estas restrições podem ser expressas usando XML Schema, pois sua especificação define vários tipos de dados tais como cadeias (strings), inteiros, lógicos ou booleanos, datas, tempos (time) entre outros. XML Schema também permite a criação de novos tipos de dados.

<endereco>

<rua>Av. Prof. Luciano Gualberto, trav. 3, n. 158</rua> <cep>05508-900</cep>

<cidade>Sao Paulo</cidade>

<telefone>55-11-30915263</telefone> </endereco>

Outro ponto importante é que a especificação XML Schema assume que, pelo menos dois documentos XML são utilizados: um documento instância e, pelo menos um, documento esquema. O documento instância contém a informação propriamente dita e o documento esquema descreve a estrutura e o tipo dos elementos do documento instância. A distinção entre instância e esquema é semelhante à distinção entre objeto e classe em linguagens de programação orientadas a objetos. Uma classe descreve um objeto, assim como um esquema descreve um documento instância. (Box et al.,(2000) apud Braganholo (2001)).

A figura 3.8 mostra uma parte da codificação do XML Schema da figura 3.4. Comparando-se a codificação DTD com a XML Schema verifica-se, por exemplo, que o DTD especifica o valor de telefone apenas como caracteres. Usando XML Schema, definiu-se um novo tipo de dado, chamado telType para representar o elemento telefone e suas restrições. Esta característica permite que os documentos XML possam ser validados de maneira mais precisa, e é o grande diferencial sobre as funcionalidades do DTD.

Outra característica importante de XML Schema é o suporte à herança. Podem-se criar novos esquemas, derivados de esquemas existentes, possibilitando melhorias no processo de desenvolvimento de aplicações XML, na manutenção de código e na produtividade dos programadores (ROY; RAMANUJAN, 2001).

XML Schema é integrada com os namespaces do XML, tornando fácil criar elementos e atributos em um namespace. No exemplo, o comando:

<xsd:schema mlns:xsd=“http://www/w3.org/2001/XMLSchema”> define um namespace chamado http://www/w3.org/2001/XMLSchema, que é representado pelo nome xsd. Todos elementos e atributos prefixados com xsd pertencem a este namespace. Isto simplifica a criação e validação de documentos XML que usam namespaces múltiplos, definidos por vários XML Schema. (ROY;RAMANUJAN, 2001).

Fig. 3.8 – Parte da codificação em XML Schema da Fig. 3.4

<?xml version=“1.0”?> <xsd:schema xmlns:xsd=“http://www/w3.org/2001/XMLSchema”> <xsd:simpleType name=”nameType”> <xsd:restriction base=”xsd:string”> <xsd:maxLength value=”50”/> <xsd:restriction> </ xsd:simpleType> <xsd:simpleType name=”telType”> <xsd:restriction base=”xsd:string”> <xsd:pattern value=”d{2}-d{2}-d{7}”/> <xsd:restriction> </ xsd:simpleType> <xsd:simpleType name=”cepType”> <xsd:restriction base=”xsd:string”> <xsd:pattern value=”d{5}-d{3}”/> <xsd:restriction> </ xsd:simpleType> <xsd:simpleType name=”numero_uspType”> <xsd:restriction base=”xsd:string”> <xsd:pattern value=”[0-9]{6}”/> <xsd:restriction> </ xsd:simpleType>

<xsd:element name=“estudante” type=”estudanteType”/> <xsd:complexType name=”estudanteType”>

< xsd:sequence>

< xsd:element name=“nome” type=”nameType”/> < xsd:element name=“afiliacao” type=“afilType” minOccurs=“1” maxOccurs=“unbounded”/> < xsd:element name=“disciplina” type=“xsd:string”/> <xsd:element name=”endereco” type=”enderecoType”/> </xsd:sequence>

<xsd:attribute name=”numero_usp” type=”numero_uspType” use=”required”/> </xsd:complexType>

<xsd:complexType name=“afilType”> <xsd:sequence>

< xsd:element name=“grupo” type=“nameType”/> < xsd:element name=“faculdade” type=“ nameType”/> < xsd:element name=“universidade” type=“ nameType”/> </xsd:complexType>

<xsd:complexType name=“enderecoType”> <xsd:sequence>

< xsd:element name=“rua” type=“ nameType”/> < xsd:element name=“cep” type=“cepType”/> < xsd:element name=“cidade” type=“ nameType”/> < xsd:element name=“telefone” type=“ telType”/> </xsd:sequence>

</xsd:complexType> </xsd:schema>

<!ELEMENT telefone (#PCDATA)>

<!ELEMENT endereco (rua,cep,cidade,telefone)>

Outra diferença importante em relação à DTD é que a codificação em XML Schema utiliza a sintaxe XML, simplificando o desenvolvimento das aplicações porque tanto o documento que descreve a estrutura dos documentos, quanto seus respectivos XML Schema, têm a mesma sintaxe (KLEIN, 2001).

Todas estas características tornaram o XML Schema um padrão muito complexo. Fallside (2001) descreve as facilidades deste padrão e procura orientar a criação de esquemas, usando o XML Schema. Thompson et al. (2001) especificam a definição da linguagem e Biron e Malhota (2001) descrevem como criar tipos de dados. Gulbransen (2002) apresenta dois exemplos de aplicação de XML Schema: um para geração de nota fiscais e outro para gerenciamento de recursos humanos.

Benzer Belgeler