In questo articolo, ci accingiamo ad esaminare in che modo si può creare uno schema XML. Al fine di comprendere XML (Extensible Markup Language) Schema noi esamineremo i principi fondamentali di XML in questa introduzione. Se si prevede di avere una conoscenza di base di XML per questo how-to.
XML- Extensible Markup Language è un testo-base di cross-platform lingua che è vi permette di memorizzare i dati (indirizzi, come in un libro di indirizzo), in modo strutturato. Il documento XML è previsto per avere la sintassi corretta. Pertanto, quando si fa documenti XML devono essere ben formati. Un documento ben formato è il seguente:
- Chiuso il tag (<hello> </ ciao> o <hi />)
- Un elemento di attributo deve essere racchiusa tra virgolette doppie (<candy price="0.50">)
- XML è sensibile alle maiuscole / minuscole. In altre parole, l'inizio e la fine tag deve utilizzare lo stesso caso
Un esempio molto semplice di un documento XML è riportato qui di seguito per un candy store menu.
<? xml version = "1.0" encoding = "utf-8"?>
<candystore>
<candy>
<productName company="XYZ"> lecca-lecca </ nome>
<id> 634847 </ id>
<price> 0,50 </ prezzo>
</ Candy>
<candy>
<productName company="ABC"> Mints </ nome>
<id> 634812 </ id>
<price> 0,75 </ prezzo>
</ Candy>
</ candystore>
La prima dichiarazione è l'elaborazione di istruzioni. Essa dice al parser stiamo lavorando con una particolare versione di XML. Il resto del documento si compone di tag e il nostro elementi. In questo esempio di cui sopra l'elemento "nome" è un attributo di "impresa". Un ottimo modo per ricordare un attributo è quello di pensare che sia una proprietà che può avere qualcosa. Una caramella ha un nome. Il nome è associato a una particolare società.
Nel nostro how-to ci accingiamo a prendere l'esempio di cui sopra e di creare uno schema XML per definire le regole che per quanto il nostro elemento di contenuto, o di dati in altre parole, deve essere motivato. (Ad esempio, il formato è prevista per il nostro id? Può avere caratteri alfabetici?)
XML Schema - Uno schema XML dei metadati dichiara che assegna un tipo particolare, che sia semplice o complessa, per gli elementi e gli attributi di un documento XML.
Diamo uno sguardo al nostro esempio di nuovo per la Candy Store.
<? xml version = "1.0" encoding = "utf-8"?>
<candystore>
<candy>
<productName company="XYZ"> lecca-lecca </ nome>
<id> 634847 </ id>
<price> 0,50 </ prezzo>
</ Candy>
<candy>
<productName company="ABC"> Mints </ ProductName>
<id> 634812 </ id>
<price> 0,75 </ prezzo>
</ Candy>
</ candystore>
Il nostro candystore elemento ha due candy sub-elementi. Ogni elemento ha il candito subelements del nome, l'ID, e il prezzo. Essa ha anche un attributo chiamato società. Quando la costruzione di regole di sintassi che deve definire i vincoli per il formato dei nostri dati. Tali vincoli possono essere basate sul modo in cui i dati saranno utilizzati. Se, per esempio, l'ID del nostro candy deve stare su un prodotto fattura entro 6 caratteri quindi che consentono di determinare i nostri vincoli. Chiedete a voi alcune domande circa i tuoi dati:
1. I dati devono essere solo numeri o lettere?
2. Se i dati sono di una certa lunghezza? O di un minimo o massimo di durata più precisamente?
3. I dati devono avere un particolare attributo o subelement specificato? O sono facoltative?
Ora che abbiamo alcune idee su ciò che le questioni che si può chiedere di noi, possiamo andare avanti. Let's costruire un insieme di regole, prima di iniziare a creare il nostro codice XML Schema.
1. Il nome di caramelle è obbligatorio.
2. Il nome della società non può essere superiore a 30 caratteri. E 'facoltativo.
3. L'id devono essere tutte le cifre e deve essere esattamente 6 cifre. E 'richiesto.
4. Il prezzo è obbligatorio.
Con il nostro elenco di regole ora possiamo creare il nostro schema. Prima di tutto abbiamo bisogno di presentare una dichiarazione dei nostri nomi chiamati xsd. Si potrebbe utilizzare un nome qualsiasi candyxsd come vogliamo, ma xsd è breve e facile da capire. Il termine xsd sarà utilizzato come prefisso di tutto il nostro schema per specificare i nostri nomi.
<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Entro il tuo schema è necessario definire ogni elemento come un tipo particolare. Ci sono 2 tipi si possono usare:
Semplice:
<xsd:element name=" nameofelement "type=" nameofbuilt-insimpletype ">
o
<xsd:simpleType name=" nameofSimpleType ">
tipo di vincoli derivati ...
</ xsd: simpleType>
Complesso:
<xsd:complexType name=" nameofComplexType ">
<xsd:sequence>
elementi ...
</ xsd: sequence>
</ xsd: complexType>
La differenza tra i 2 è molto semplice. Un semplice tipo non può avere attributi o elemento di contenuto.
Nel passaggio 3 andremo oltre la semplice costruzione di tipi.
Ora che l'utente abbia familiarità con l'elemento tipi, diamo un'occhiata a un paio di tipi built-in.
- data
- stringa
- decimale
- tempo
- intero, lungo, int, positiveInteger, doppie, float
È possibile visualizzare l'elenco completo di built-in semplici tipi.
Con un tipo built-in si può creare un tipo semplice, come il prezzo o id che non dispone di un attributo o di un subelement.
<xsd:element name="price" type="xsd:decimal" />
<xsd:element name="id" type="positiveInteger"/>

L'immagine dato illustra la struttura del nostro schema XML. Abbiamo bisogno di costruire la vostra tipi complessi e aggiungere i vincoli sul prezzo per la nostra dimensione e id. Per assicurarsi che il nostro id e la società hanno un attributo particolare formato ci accingiamo a creare 2 tipi semplice. Noi id assegnare il tipo di idType. L'attributo società verrà assegnato il tipo di companyType.
<xsd:simpleType name="idType">
<xsd:restriction base="xsd:positiveInteger">
<xsd:totalDigits value="6"/>
</ xsd: restriction>
</ xsd: simpleType>
<xsd:simpleType name="companyType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</ xsd: restriction>
</ xsd: simpleType>
La limitazione dei tag all'interno del tipo semplice elemento ci permette di dichiarare le informazioni riguardanti la nostra semplice tipo di aspetto. Un aspetto pone una semplice tipo. Possiamo affermare cose come il modo in cui il totale delle cifre di un valore numerico per la lunghezza minima per il nostro valore stringa. Assicurarsi di fare riferimento alla built-in semplici tipi sfaccettatureper la lista. La base attributo specifica quale tipo di restrizioni possono essere applicate. In altre parole, non sarebbe valido per utilizzare maxlength con tutti i valori numerici come decimali o doppio. Il totalDigits aspetto è per questo.
Ora avete bisogno di costruire la vostra tipi complessi che conterrà tutti gli altri. Se si ricordano precedenti, il complesso tipi possono avere sub-elementi e attributi. Il nostro è l'elemento candystore candy sub-elemento. Le caramelle elemento ha tre sub-elementi (ProductName, prezzo, e id). Il ProductName elemento ha un attributo, pertanto, deve essere costruita per ospitare e il suo valore.
Il nostro negozio candy elemento contiene tutto:
<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>
Prima di tutto uno candystore dichiarare che è un elemento complexType. Se si ricorderà il nostro candy elemento può essere ripetuto quante volte si desidera. Questo è dove il nostro attributi minOccurs e maxOccurs arrivino Essi specificare l'importo massimo e minimo di occorrenze. Dire, ad esempio, si è voluto solo una sola volta o non a tutti. Poi minOccurs potrebbero ancora essere 0 e maxOccurs sarebbe 1.Our candy sub-elemento è dichiarato come un tipo chiamato candyType. Questo è molto ampia.
<xsd:complexType name="candyType">
<xsd:sequence>
ProductName elemento andrà qui ... Spiegato qui di seguito ...
<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>
Ti ricordi il simpleType informazioni per il nostro id? Qui ci si riferisce al tipo che è stato chiamato idType.
Ecco il ProductName elemento che è stato tagliato fuori da sopra in modo che possa essere spiegato.
<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>
All'interno del tag di elemento ProductName noi dichiarare una complexType. Dobbiamo essere in grado di mettere in una stringa per il valore ProductName elemento così abbiamo bisogno di dichiarare un simpleContent tipo. Questo ci permetterà di avere limitazioni o estensioni basate sul nostro testo complexType. Se non compiamo questi passi poi non saremmo in grado di mettere il testo per il nome del ProductName candy tra i tag. Nel nostro caso, noi vogliamo essere in grado di mettere in un valore stringa. Inoltre, abbiamo una proroga per la nostra società chiamato attributo che deve essere dichiarata. L'attributo di base per l'estensione di cui sopra precisa il nostro elemento incorporato nel tipo di dati (cioè stringa, a lungo, ecc), un simpleType o complexType. Una volta che abbiamo messo insieme è fatta!
Assicurarsi che il file XSD è presente in alto:
<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
E il xsd: schema di vantaggio deve essere chiuso con </ xsd: schema> alla fine, dopo tutto.
Prendete il vostro file XSD e nome candystore.xsd. E 'valido e ben formato.
Il nostro passo finale è quello di applicare il nostro schema XML per i nostri file XML originale.
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"> lecca-lecca </ ProductName>
<id> 634847 </ id>
<price> 0,50 </ prezzo>
</ Candy>
<candy>
<productName company="ABC"> Mints </ ProductName>
<id> 634812 </ id>
<price> 0,75 </ prezzo>
</ Candy>
</ 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: restriction>
</ xsd: simpleType>
<xsd:simpleType name="companyType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</ xsd: restriction>
</ xsd: simpleType>
</ xsd: schema>
Nota: Assicurarsi che l'intero schema XML è all'interno della <xsd:schema> </ xsd: schema> tag.


Delicious
Digg
Google
Yahoo