Dans cet article, nous allons examiner comment on peut créer un schéma XML. Afin de comprendre le XML (extensible markup language) Schémas nous allons examiner les principes de base de XML dans la présente introduction. Vous êtes censés avoir une compréhension de base de XML pour ce savoir-faire.
XML- Le langage de balisage extensible est un texte basé sur la plate-forme transversale qui est la langue vous permet de stocker des données (comme les adresses dans un carnet d'adresse) d'une manière structurée. Le document XML est censé avoir la syntaxe correcte. Par conséquent, lorsque des documents XML, ils doivent être bien formées. Un document bien formé est la suivante:
- Fermé les tags (<hello> </ bonjour> ou <hi />)
- Un élément de l'attribut doit être entre guillemets (<candy price="0.50">)
- XML est sensible à la casse. En d'autres termes, le tag de début et de fin doivent utiliser le même cas
Un exemple très simple d'un document XML est donnée ci-dessous pour un magasin de bonbons menu.
<? xml version = "1.0" encoding = "utf-8"?>
<candystore>
<candy>
<productName company="XYZ"> Lollipops </ name>
<id> 634847 </ id>
<price> 0,50 </ price>
</ bonbons>
<candy>
<productName company="ABC"> Mints </ name>
<id> 634812 </ id>
<price> 0.75 </ price>
</ bonbons>
</ candystore>
La première déclaration est l'instruction de traitement. Il raconte l'analyseur, nous travaillons avec une version du langage XML. Le reste du document est composé de balises et des éléments. À l'exemple ci-dessus l'élément "nom" est un attribut de la "société". Une bonne façon de se souvenir d'un attribut est de penser que c'est une propriété qui ont quelque chose de mai. Un bonbon a un nom. Le nom est associé à une société en particulier.
Dans notre savoir-faire, nous allons prendre l'exemple ci-dessus et de créer un schéma XML pour elle qui va définir les règles de la façon dont notre élément du contenu, de données ou en d'autres termes, doit être donné. (Par exemple, ce format est prévu pour nos id? Peut-il avoir des caractères alphabétiques?)
XML Schema - Un schéma XML des métadonnées qui assigne déclare un type, que ce soit simple ou complexe, aux éléments et leurs attributs dans un document XML.
Jetons un coup d'oeil à nouveau notre exemple pour le magasin de bonbons.
<? xml version = "1.0" encoding = "utf-8"?>
<candystore>
<candy>
<productName company="XYZ"> Lollipops </ name>
<id> 634847 </ id>
<price> 0.50 </ price>
</ bonbons>
<candy>
<productName company="ABC"> Mints </ ProductName>
<id> 634812 </ id>
<price> 0.75 </ price>
</ bonbons>
</ candystore>
Notre candystore élément a deux sous-éléments de bonbons. Chaque élément possède les bonbons sous-éléments du nom, id, et le prix. Il a également un attribut appelé entreprise. Lors de la construction de règles de syntaxe, nous devons définir les contraintes pour le format de nos données. Ces contraintes mai être fondée sur la manière dont les données seront utilisées. Si, par exemple, les bonbons de notre identité doit correspondre à un produit de facture dans les 6 caractères alors que les aideront à déterminer nos contraintes. Posez-vous quelques questions à propos de vos données:
1. Est-ce que les données doivent être uniquement des chiffres ou des lettres?
2. Est-ce que les données doivent être d'une certaine longueur? Ou d'une durée minimale ou maximale plus précisément?
3. Est-ce que les données doivent avoir un attribut particulier subelement ou prévus? Ou sont-ils en option?
Maintenant que nous avons quelques idées sur les questions que nous pouvons nous demander, nous pouvons aller de l'avant. Let's construire un ensemble de règles avant de commencer la création de notre code XML Schema.
1. Le nom de bonbons est nécessaire.
2. Le nom de la compagnie ne peut être plus de 30 caractères. Il est facultatif.
3. L'id doit être tous les chiffres et doit être exactement 6 chiffres. Il est requis.
4. Le prix est nécessaire.
Avec la liste de nos règles, nous pouvons maintenant créer notre schéma. Tout d'abord, nous devons fournir une déclaration d'espace de nom appelé xsd. Nous pourrions utiliser un nom comme candyxsd nous voulons, mais xsd est court et facile à comprendre. Le terme xsd sera utilisé comme adverbe dans notre schéma de préciser l'espace de nom.
<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Dans votre schéma, vous devez définir chaque élément comme un type particulier. Il existe 2 types, vous pouvez utiliser:
Simple:
<xsd:element name=" nameofelement "type=" nameofbuilt-insimpletype ">
ou
<xsd:simpleType name=" "> nameofSimpleType
dérivés de type ...
</ xsd: simpleType>
Complex:
<xsd:complexType name=" "> nameofComplexType
<xsd:sequence>
éléments ...
</ xsd: sequence>
</ xsd: complexType>
La différence entre les 2 est assez simple. Un type simple ne peut pas avoir des attributs ou de l'élément de contenu.
À l'étape 3, nous irons au cours de la construction dans les types simples.
Maintenant que vous êtes familier avec les types d'éléments, nous allons regarder un couple de la built-in types.
- date
- string
- décimale
- heure
- integer, long, int, positiveInteger, double, float
Vous pouvez voir la liste complète des built-in simple types.
Avec un type, on peut créer un type simple, comme le prix ou de id qui n'est pas un attribut ou une subelement.
<xsd:element name="price" type="xsd:decimal" />
<xsd:element name="id" type="positiveInteger"/>

L'image donnée illustre la structure de notre XML Schema. Nous avons besoin pour construire votre complexes et ajouter dans les contraintes sur la taille de nos prix et id. Pour faire en sorte que notre société et de l'id attribut ont un format particulier, nous allons créer 2 types simples. Nous allons affecter le type de id idType. L'attribut de la société seront affectés au type de 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 restriction à l'intérieur de la balise de type simple élément nous permet de déclarer des informations concernant notre système de type de facette. L'un des aspects des contraintes d'un type simple. Nous pouvons affirmer des choses comme la façon dont le total des chiffres pour une valeur numérique à la longueur minimale pour notre chaîne de valeur. Assurez-vous que de se référer à la built-in simple types facettespour la liste. La base attribut spécifie le type de restrictions peuvent être appliquées. En d'autres termes, il ne serait pas valable d'utiliser maxLength avec toutes les valeurs numériques, comme décimal ou double. La facette est totalDigits pour cela.
Maintenant, vous avez besoin pour construire votre complexes qui contiendra tous les autres. Si vous vous souvenez de l'heure, votre complexes peuvent avoir des sous-éléments et des attributs. Notre candystore élément a le bonbon sous-élément. Les bonbons élément dispose de trois sous-éléments (productName, le prix, et id). Le productName élément a un attribut, il doit être construit pour accueillir et de sa valeur.
Notre magasin de bonbons contient tout élément:
<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>
Tout d'abord, nous déclarons candystore un élément qui est un complexType. Si vous vous souviendrez de nos bonbons élément peut être répétée autant de fois que désiré. C'est là où nos attributs minOccurs et entrer maxOccurs Ils précisent le maximum et le minimum des événements. Dites par exemple, vous ne voulait qu'une seule fois ou pas du tout. Puis minOccurs pourrait encore être 0 et maxOccurs serait 1.Our bonbons sous-élément est déclaré comme un type appelé candyType. Celui-ci est assez importante.
<xsd:complexType name="candyType">
<xsd:sequence>
productName élément rendez-vous ici ... Expliquée ci-dessous ...
<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>
Vous souvenez-vous de l'information pour nos simpleType id? Ici, il fait référence à son type qui a été appelé idType.
Voici la productName élément qui a été découpé par le haut de sorte qu'elle puisse être expliquée.
<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>
Dans le cadre de l'élément de tags productName nous déclarer un complexType. Nous devons être capables de mettre en valeur une chaîne de caractères pour l'élément productName nous avons donc besoin de déclarer un type simpleContent. Cela nous permettra d'avoir des restrictions ou des extensions de notre texte complexType. Si l'on ne prend pas ces mesures, alors nous ne serions pas en mesure de mettre le texte pour le nom du bonbon productName entre les balises. Dans notre cas, nous voulons être en mesure de mettre en valeur une chaîne de caractères. Aussi, nous avons une extension de notre attribut appelé l'entreprise qui doit être déclarée. L'attribut de base pour l'extension au-dessus de l'élément spécifie notre built-in type de données (c'est-à-dire string, long, etc), un simpleType ou complexType. Une fois que nous l'avons mis tous ensemble, nous avons fait!
Assurez-vous que votre fichier XSD est en haut:
<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Et le xsd: schema tage doit être fermé avec </ xsd: schema> à la fin, après tout.
Prenez votre fichier XSD et le nom candystore.xsd. Il est valide et bien formé.
Notre dernière étape consiste à appliquer notre schéma XML original de notre fichier 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>
</ bonbons>
<candy>
<productName company="ABC"> Mints </ productName>
<id> 634812 </ id>
<price> 0.75 </ price>
</ bonbons>
</ 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>
Note: Assurez-vous que l'ensemble de votre schéma XML est au sein de la <xsd:schema> </ xsd: schema> tags.


Delicious
Digg
Google
Yahoo