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 |
|
|