HTML Tutorials |
|
XML Tutorials |
|
Browser Scripting |
|
Server Scripting |
|
.NET (dotnet) |
|
Multimedia |
|
Web Building |
|
Java Tutorials |
|
Programming Langauges |
|
Soft Skills |
|
Database Tutorials |
|
Operating System |
|
Software Testing |
|
SAP Module |
|
Networking Programming |
|
Microsoft Office |
|
Accounting |
|
|
Este cap�tulo demonstrar� como escrever Schemas de um XML. Voc� aprender� tamb�m que um schema do xml pode ser escrito em maneiras diferentes.
|
Um original de XML
|
Vamos ter um olhar nos originais deste XML chamados �shiporder.xml�:
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>
</shiporder>
|
|
O original de XML acima consiste em um elemento da raiz, o �shiporder�, que contem um atributo requerido chamado �orderid�. O elemento do �shiporder� contem tr�s elementos diferentes da crian�a: �orderperson�, �shipto� e �artigo�. O elemento do �artigo� aparece duas vezes, e contem �t�tulo�, um elemento opcional da �nota�, �quantidade�, e um elemento do �pre�o�.
A linha acima: xmlns: o xsi= " http://www.w3.org/2001/XMLSchema-instance �diz ao parser de XML que este documenta deve ser validado de encontro a um schema. A linha: xsi: o noNamespaceSchemaLocation= " shiporder.xsd� especifica ONDE o schema reside (aqui est� no mesmo dobrador que �shiporder.xml�).
|
Criar um Schema de XML
|
Agora n�s queremos criar acima um schema para o original de XML.
N�s come�amos abrindo uma lima nova que n�s chamemos como �shiporder.xsd�. Para criar o schema n�s poder�amos simplesmente seguir a estrutura nos originais de XML e definir cada elemento como n�s o encontramos. N�s come�aremos com a declara��o padr�o de XML seguida pelos xs: elemento do schema que define um schema:
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
...
</xs:schema>
|
|
No schema acima n�s usamos o namespace padr�o (xs), e o URI associado com este namespace � a defini��o da l�ngua do Schema, que tem o valor padr�o de http://www.w3.org/2001/XMLSchemas.
Em seguida, n�s temos que definir o elemento do �shiporder�. Este elemento manda-o um atributo e conter outros elementos, conseq�entemente n�s consideramo-lo como um tipo complexo. O elemento da crian�a do elemento do �shiporder� � cercado pelo xs: arranjar em seq��ncia o elemento que define uma seq��ncia requisitada de elementos secund�rios:
|
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
...
...
</xs:sequence>
...
</xs:complexType>
</xs:element>
|
|
Ent�o n�s temos que definir o elemento do �orderperson� como o tipo simples (porque n�o contem nenhuns atributos ou outros elementos). O tipo (xs: a corda) � prefixada com o prefixo do namespace associado com os Schemas de XML que indica um tipo de dados predefinido do schema:
|
<xs:element name="orderperson" type="xs:string"/>
|
|
Em seguida, n�s temos que definimos dois elementos que s�o do tipo complexo: �shipto� e �artigo�. N�s come�amos definindo o elemento do �shipto� como segue:
|
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
|
|
Com schema n�s podemos definir o n�mero de ocorr�ncias poss�veis para um elemento com os maxOccurs e os atributos dos minOccurs. os maxOccurs especificam o n�mero m�ximo das ocorr�ncias para um elemento e os minOccurs especificam o n�mero m�nimo das ocorr�ncias para um elemento. O valor de defeito para ambos os maxOccurs e minOccurs � sempre 1!
Agora n�s podemos definir o elemento do �artigo�. Este elemento pode aparecer �pocas m�ltiplas dentro do elemento do �shiporder�. Isto � especificado ajustando o atributo dos maxOccurs do elemento do �artigo� �unbounded� que significam que pode haver tantas como ocorr�ncias do elemento do �artigo� como o autor deseja. Observar que o elemento da �nota� � opcional aqui. N�s especificamos este ajustando o atributo dos minOccurs para ser zero:
|
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
|
|
N�s podemos agora declarar o atributo do elemento do �shiporder�. Desde que este � um atributo requerido n�s especificamos o use= " requerido�.
Nota: A declara��o do atributo deve sempre vir por �ltimo:
|
<xs:attribute name="orderid" type="xs:string" use="required"/>
|
|
Est� aqui a lista completa da lima do schema chamada o �shiporder.xsd�:
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
|
|
Dividir o Schema
|
O m�todo de projeto precedente � muito simples, mas pode ser dif�cil de ler e manter quando o original � complexo.
O m�todo de projeto seguinte � baseado em definir todos os elementos e atributos primeiramente, e ent�o em consultar-lhes que usam os atributos da refer�ncia.
Est� aqui o projeto novo da lima do schema (�shiporder.xsd�):
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- definition of simple elements -->
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
<!-- definition of attributes -->
<xs:attribute name="orderid" type="xs:string"/>
<!-- definition of complex elements -->
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="city"/>
<xs:element ref="country"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="note" minOccurs="0"/>
<xs:element ref="quantity"/>
<xs:element ref="price"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element ref="orderperson"/>
<xs:element ref="shipto"/>
<xs:element ref="item" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="orderid" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
|
|
Usando Tipo nomeado
|
O terceiro m�todo de projeto define classes ou os tipos, aquele permitem-nos de re�so defini��es do elemento. Isto � feito nomeando os simpleTypes e o elemento dos complexTypes, e aponta-lhes ent�o atrav�s do tipo atributo do elemento.
Est� aqui o terceiro projeto da lima dos schemas (�shiporder.xsd�):
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="stringtype">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="inttype">
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="dectype">
<xs:restriction base="xs:decimal"/>
</xs:simpleType>
<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="shiptotype">
<xs:sequence>
<xs:element name="name" type="stringtype"/>
<xs:element name="address" type="stringtype"/>
<xs:element name="city" type="stringtype"/>
<xs:element name="country" type="stringtype"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="title" type="stringtype"/>
<xs:element name="note" type="stringtype" minOccurs="0"/>
<xs:element name="quantity" type="inttype"/>
<xs:element name="price" type="dectype"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="shipordertype">
<xs:sequence>
<xs:element name="orderperson" type="stringtype"/>
<xs:element name="shipto" type="shiptotype"/>
<xs:element name="item" maxOccurs="unbounded" type="itemtype"/>
</xs:sequence>
<xs:attribute name="orderid" type="orderidtype" use="required"/>
</xs:complexType>
<xs:element name="shiporder" type="shipordertype"/>
</xs:schema>
|
|
O elemento da limita��o indica que o datatype est� derivado de um datatype do namespace do Schema de W3C XML. Assim, o seguinte meio do fragmento que o valor do elemento ou do atributo deve ser um valor da corda:
|
<xs:restriction base="xs:string">
|
|
O elemento da limita��o � mais usado frequentemente aplicar a limita��o aos elementos. Olhar a seguinte linha do schema acima:
|
<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>
|
|
Isto indica que o valor do elemento ou do atributo deve ser uma corda, ele deve ser exatamente seis car�teres em uma fileira, e aqueles car�teres devem ser um n�mero de 0 a 9.
|
|
|
Keywords: tutorial do xsd, xml do xsd, DTD do xsd, exemplos do xsd, Validator do xsd, especifica��o do xsd, xsd da amostra, ferramentas do xsd, exemplo do xsd, editor do xsd, sintaxe do xsd, xsd do xslt, formato do xsd, xsd do cdata, elemento do xml.
|
|
HTML Quizes |
|
XML Quizes |
|
Browser Scripting Quizes |
|
Server Scripting Quizes |
|
.NET (dotnet) Quizes |
|
Multimedia Quizes |
|
Web Building Quizes |
|
Java Quizes |
|
Programming Langauges Quizes |
|
Soft Skills Quizes |
|
Database Quizes |
|
Operating System Quizes |
|
Software Testing Quizes |
|
SAP Module Quizes |
|
Networking Programming Quizes |
|
Microsoft Office Quizes |
|
Accounting Quizes |
|
|