dimecres, 1 de febrer del 2017

XML Schema

Un esquema XML descriu l'estructura d'un document XML.

El llenguatge XML Schema també es coneix com a definició d'esquemes XML (XSD).


El propòsit d'un esquema XML és definir els blocs de construcció legal d'un document XML:
  • els elements i atributs que poden aparèixer en un document
  • el nombre de (i l'ordre dels) elements secundaris
  • tipus de dades per als elements i atributs
  • valors predeterminats i fixos per a elements i atributs

En el món XML, centenars de formats XML estandarditzats són d'ús diari.

Molts d'aquests estàndards XML estan definits pels esquemes XML.

Esquema XML és una (i més potent) basat en XML alternativa a la DTD.


Una de la major fortalesa dels esquemes XML és el suport per a tipus de dades.
  •      És més fàcil descriure el contingut del document permissible
  •      És més fàcil per validar l'exactitud de les dades
  •      És més fàcil definir les restriccions a les dades
  •      És més fàcil per a definir patrons de dades (formats de dades)
  •      És més fàcil per convertir dades entre diferents tipus de dades
  •  
Una altra gran força sobre els esquemes XML és que estan escrits en XML.
  •      No ha d'aprendre un nou idioma
  •      Es pot utilitzar el seu editor de XML per editar els seus arxius d'esquema
  •      Pot utilitzar el seu analitzador XML per analitzar els arxius d'esquema
  •      Es pot manipular l'esquema amb el DOM XML
  •      Vostè pot transformar el seu esquema amb XSLT

Els esquemes XML són extensibles, perquè estan escrits en XML.

Amb una definició d'esquema extensible es pot:

  •      Reutilitzar el seu esquema en altres esquemes
  •      Crear els seus propis tipus de dades derivades dels tipus estàndard
  •      Fer referència a diversos esquemes en el mateix document 
 Com fer un schema ?

L'element arrel o pare d'un schema és l'element <schema> de qualsevol XML Schema

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:schema>
...
...
</xs:schema>

xmlns:xs --> significa que usarà dades i elements definits en
http://www.w3.org/2001/XMLSchema
 
elementFormDefault="qualified" --> són elements qualificats
En el document *.xml cal que apareixi aquesta declaració
 
<arrel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="nomfitxer.xsd">
 
ELEMENTS
Els elements simples només contenen text. La sintaxi és

<xs:element name="xxx" type="yyy"/>
 
on xxx és el nom de l'element i yyy és el tipus de dades de l'element.
Esquema XML té una gran quantitat de tipus de dades incorporats. Els tipus més comuns són:

xs: string
xs: decimal
xs: integer
xs: boolean
xs: date
xs: time


Els elements simples poden tenir un valor per defecte (default) o un valor fix (fixed) especificat.
 
Els elements simples no poden tenir atributs. Si un element atributs, es considera per ser d'un tipus complex. No obstant això, el propi atribut sempre és declarat com un tipus simple.
 
La sintaxi d'un atribut és:
<xs:attribute name="xxx" type="yyy"/>
 
on xxx és el nom de l'atribut i yyy especifica el tipus de dades de l'atribut.

Esquema XML té una gran quantitat de tipus de dades incorporats. Els tipus més comuns són:
 

xs: string
xs: decimal
xs: integer
xs: boolean
xs: date
xs: time
 
ELEMENTS COMPLEXOS
 
Un element complex és un element XML que conté altres elements i / o atributs.

Hi ha quatre tipus d'elements complexos:
  •      elements buits
  •      elements que contenen altres elements únics
  •      elements que només contenen text
  •      elements que contenen tant text i altres elements
Per definir elements complexes primer escribim l'etiqueta <xs:complexType> i després <xs:sequence>. Finalment escriurem cadascun dels seus elements ( amb atributs, o no)

EXEMPLE:

book.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/home/super/Documents/book.xsd">
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price/>
  </book>

  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>

  <book category="web">
    <title lang="en">XQuery Kick Start</title>
    <author>James McGovern</author>
    <author>Per Bothner</author>
    <author>Kurt Cagle</author>
    <author>James Linn</author>
    <author>Vaidyanathan Nagarajan</author>
    <year>2003</year>
    <price>49.99</price>


book.xsd
  </book>

  <book category="web" cover="paperback">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>

</bookstore>

book.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="bookstore">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="book" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="book">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="title"/>
        <xs:element name="author" type="xs:string"/>
        <xs:element name="year" type="xs:string"/>
        <xs:element name="price" type="xs:string"/>
      </xs:sequence>
      <xs:attribute name="category" type="xs:string" use="required"/>
      <xs:attribute name="cover" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="title">
    <xs:complexType mixed="true">
      <xs:attribute name="lang" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
 
 

 
   

Cap comentari:

Publica un comentari a l'entrada