Neste artigo, vamos olhar para a forma como um pode criar um XML Schema. A fim de compreender o XML (extensible markup language) Esquemas vamos rever as noções básicas de XML neste introdução. Está prevista para ter um entendimento básico de XML para este how-to.
XML- A Extensible Markup Language é um texto baseado em multi-plataforma linguagem que permite que você é para armazenar dados (como endereços em um catálogo de endereços) em uma forma estruturada. O documento XML deverá ter a sintaxe correta. Portanto, quando a documentos XML devem ser bem-formado. Um documento bem-formado tem o seguinte texto:
- Fechado tags (<hello> </ Olá> ou <hi />)
- Um elemento do atributo deve estar entre aspas (<candy price="0.50">)
- XML é sensível a maiúsculas. Em outras palavras, o início eo fim etiqueta deverá utilizar o mesmo caso
Um exemplo muito simples de um documento XML é apresentado a seguir para uma loja candy menu.
<? xml version = "1.0" encoding = "utf-8"?>
<candystore>
<candy>
<productName company="XYZ"> lollipops </ name>
<iD> 634847 </ id>
<price> 0,50 </ price>
</ cândi>
<candy>
<productName company="ABC"> Pastilhas </ name>
<iD> 634812 </ id>
<price> 0,75 </ price>
</ cândi>
</ candystore>
A primeira afirmação é a transformação instrução. Ela diz ao analisador que estamos a trabalhar com uma determinada versão de XML. O resto do documento é composto de nossas marcas e elementos. No exemplo acima, o elemento "nome" tem um atributo de "empresa". Uma ótima maneira de lembrar um atributo é o de pensar nela como uma propriedade que algo pode ter. Um doce tem um nome. O nome está associado a uma determinada empresa.
Em nosso how-to vamos dar o exemplo acima e criar um XML Schema para ele que vai definir regras para como o nosso elemento de conteúdo, dados ou em outras palavras, deve ser dado. (Por exemplo, o formato é esperado para a nossa id? Pode ter caracteres alfabéticos?)
XML Schema - Um XML Schema declara metadados que atribui um tipo particular, seja ele simples ou complexos, para os elementos e seus atributos em um documento XML.
Vamos dar uma olhada novamente em nosso exemplo para a confeitaria.
<? xml version = "1.0" encoding = "utf-8"?>
<candystore>
<candy>
<productName company="XYZ"> lollipops </ name>
<iD> 634847 </ id>
<price> 0,50 </ price>
</ cândi>
<candy>
<productName company="ABC"> Pastilhas </ ProductName>
<iD> 634812 </ id>
<price> 0,75 </ price>
</ cândi>
</ candystore>
Nosso candystore elemento tem dois cândi sub-elementos. Cada elemento tem o doce subelementos do nome, id, e preço. Ela também tem um atributo chamado empresa. Ao construir as regras de sintaxe, temos de definir limites para o formato de nossos dados. Estas restrições podem ser baseadas em como os dados serão utilizados. Se, por exemplo, o nosso doce do ID deve caber em um produto factura dentro de 6 caracteres, em seguida, que irá ajudar a determinar as nossas limitações. Pergunte a si mesmo a algumas perguntas sobre os seus dados:
1. Será que os dados têm de ser apenas números ou letras por ordem alfabética?
2. Será que os dados têm de ser um determinado período? Ou uma duração mínima ou máxima mais especificamente?
3. Será que os dados têm que ter um determinado atributo ou subelement especificados? Ou são opcionais?
Agora que temos algumas idéias sobre o que perguntas, podemos perguntar-nos, nós podemos avançar. Vamos construir um conjunto de regras, antes de começar criar o nosso código XML Schema.
1. O nome do doce é necessária.
2. O nome da empresa não pode ser superior a 30 caracteres. É opcional.
3. O id deve ser todos os dígitos e deve ser exactamente 6 dígitos. É exigido.
4. O preço é necessário.
Com a nossa lista de regras, podemos agora criar o nosso esquema. Primeiro de tudo temos de apresentar uma declaração do nosso namespace chamado xsd. Podemos usar qualquer nome que queremos como candyxsd, xsd, mas é curto e fácil de compreender. O termo xsd irá ser utilizado como um prefixo em todo o nosso esquema de especificar os nossos nomes.
<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Dentro de seu esquema que você precisa para definir cada elemento como um tipo particular. Existem 2 tipos que você pode usar:
Simples:
<xsd:element name=" nameofelement "type=" nameofbuilt-insimpletype ">
ou
<xsd:simpleType name=" nameofSimpleType ">
constrangimentos derivados tipo ...
</ xsd: simpleType>
Complexo:
<xsd:complexType name=" nameofComplexType ">
<xsd:sequence>
elementos ...
</ xsd: sequence>
</ xsd: complexType>
A diferença entre os 2 é muito simples. Um simples tipo não pode ter atributos ou elemento conteúdo.
No passo 3, vamos repassar o construída em simples tipos.
Agora que você está familiarizado com o elemento tipos, vamos olhar para um jovem da built-in tipos.
- data
- string
- decimais
- timne
- integer, long, int, positiveInteger, double, float
Você pode ver a lista completa das built-in simples tipos.
Com um built-in tipo pode-se criar um tipo simples como o preço ou id que não tenham um atributo ou um subelement.
<xsd:element name="price" type="xsd:decimal" />
<xsd:element name="id" type="positiveInteger"/>

O retrato dado ilustra a estrutura da nossa linguagem XML Schema. Precisamos de construir o seu complexo e adicionar tipos de limitações no tamanho para o nosso preço e id. Para certificar-se de nossa id ea empresa atributo têm um formato específico que vamos criar 2 tipos simples. Vamos atribuir o tipo de idType id. O atributo empresa será atribuído o tipo de companyType.
<xsd:simpleType name="idType">
<xsd:restriction base="xsd:positiveInteger">
<xsd:totalDigits value="6"/>
</ xsd: restrição>
</ xsd: simpleType>
<xsd:simpleType name="companyType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</ xsd: restrição>
</ xsd: simpleType>
A restrição tag dentro do tipo simples elemento nos permite declarar informações relativas ao nosso simples modelo da faceta. Uma faceta restringe um simples tipo. Podemos afirmar coisas como a forma como o total dígitos para um valor numérico para o comprimento mínimo para o nosso valor de string. Certifique-se de referir a built-in simples tipos facetaspara a lista. A base atributo especifica o tipo de restrições podem ser aplicadas. Em outras palavras, não seria válida para usar maxlength com todos os valores numéricos como decimal ou dupla. O totalDigits faceta é para isso.
Agora você precisa construir o seu complexo tipos que irá conter todos os outros. Se bem se lembram de mais cedo, o seu complexo tipos pode ter sub-elementos e atributos. Nosso candystore elemento tem os doces sub-elemento. O doce elemento tem três sub-elementos (ProductName, preço e id). ProductName O elemento tem um atributo, pois ele precisa ser construída para acomodar ela e seu valor.
Nossa loja candy elemento contém tudo:
<xsd:element name="candystore" type="candystoreType"/>
<xsd:complexType name="candystoreType">
<xsd:sequence>
<xsd:element name="candy" type="candyType" minOccurs="0" maxOccurs="unbounded"/>
</ xsd: sequence>
</ xsd: complexType>
Em primeiro lugar, nós declaramos candystore um elemento, que é um complexType. Se você vai recordar os nossos doces elemento pode ser repetido quantas vezes desejar. Isso é onde os nossos atributos minOccurs e maxOccurs pol Eles vêm especificar o valor máximo e mínimo ocorrências. Digamos, por exemplo, você só queria que ele só uma vez ou não em todos. Então minOccurs poderá ainda ser 0 e maxOccurs seria 1.Our doce sub-elemento é declarado como um tipo chamado candyType. Este é um bem grande.
<xsd:complexType name="candyType">
<xsd:sequence>
ProductName elemento vai aqui ... Explicado a seguir ...
<xsd:element name="id" type="idType" minOccurs="1" maxOccurs="1"/>
<xsd:element name="price" type="xsd:decimal" minOccurs="1" maxOccurs="1"/>
</ xsd: sequence>
</ xsd: complexType>
Você se lembra do simpleType informação para a nossa identidade? Aqui se refere ao seu tipo, que foi chamado idType.
Aqui está a ProductName elemento que foi cortado a partir de cima, pelo que poderia ser explicado.
<xsd:element name="productName" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="company" type="companyType"/>
</ xsd: extension>
</ xsd: simpleContent>
</ xsd: complexType>
</ xsd: element>
Dentro do elemento de tags ProductName nós declaramos um complexType. Temos de ser capazes de colocar em uma string para o valor ProductName elemento portanto precisamos de declarar uma simpleContent tipo. Isso nos permitirá ter restrições ou ampliações no nosso texto baseado complexType. Se nós não tomarmos estas medidas, então nós não seria capaz de colocar o texto para o nome do doce entre o ProductName tags. No nosso caso, queremos ser capazes de colocar em um valor de string. Além disso, temos uma extensão para o nosso atributo chamado empresa que necessita de ser declarada. A base para a extensão atributo elemento acima especifica nossa base de dados tipo (ou seja, seqüência, tempo, etc), um simpleType, ou complexType. Depois que juntou tudo que estamos a fazer!
Certifique-se que o XSD tem esse arquivo no topo:
<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
E o xsd: schema tagem deve ser fechado com </ xsd: schema> no final depois de tudo.
Pegue o seu arquivo XSD arquivo e nomeie-o candystore.xsd. É válido e bem formado.
Nosso último passo é aplicar o nosso XML Schema a nossa original arquivo XML.
candystore.xml
<? xml version = "1.0" encoding = "UTF-8"?>
<candystore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="candystore.xsd">
<candy>
<productName company="XYZ"> lollipops </ ProductName>
<iD> 634847 </ id>
<price> 0,50 </ price>
</ cândi>
<candy>
<productName company="ABC"> Pastilhas </ ProductName>
<iD> 634812 </ id>
<price> 0,75 </ price>
</ cândi>
</ candystore>
candystore.xsd
<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="candystore" type="candystoreType"/>
<xsd:complexType name="candystoreType">
<xsd:sequence>
<xsd:element name="candy" type="candyType" minOccurs="0" maxOccurs="unbounded"/>
</ xsd: sequence>
</ xsd: complexType>
<xsd:complexType name="candyType">
<xsd:sequence>
<xsd:element name="productName" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="company" type="companyType"/>
</ xsd: extension>
</ xsd: simpleContent>
</ xsd: complexType>
</ xsd: element>
<xsd:element name="id" type="idType" minOccurs="1" maxOccurs="1"/>
<xsd:element name="price" type="xsd:decimal" minOccurs="1" maxOccurs="1"/>
</ xsd: sequence>
</ xsd: complexType>
<xsd:simpleType name="idType">
<xsd:restriction base="xsd:positiveInteger">
<xsd:totalDigits value="6"/>
</ xsd: restrição>
</ xsd: simpleType>
<xsd:simpleType name="companyType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</ xsd: restrição>
</ xsd: simpleType>
</ xsd: schema>
Nota: Certifique-se de todo o seu esquema XML está dentro do <xsd:schema> </ xsd: schema> tags.


Delicious
Digg
Google
Yahoo