Usuari:Jordibaucells/XML Schema
Aparença
Introducció
[modifica]- Basat en XML.
- Descriu l'estructura i la semàntica d'un document XML.
- Conegut com a XSD(Xml Schema Definition).
- XML Schema és un estàndard del W3C.
Què és un XML Schema?
[modifica]- Propòsit: definir els blocs de construcció d'un document XML.
- Defineix els elements que poden aparèixer a un document.
- Defineix els atributs que poden aparèixer a un document.
- Defineix quins elements fills pot tenir un element.
- Defineix l'ordre dels elements fills.
- Defineix la cardinalitat d'elements fills.
- Defineix si un element és buit o pot incloure text.
- Defineix tipus de dades d'elements i atributs.
- Defineix valors per defecte i fix a elements i atributs.
Avantatges
[modifica]- Permeten futures extensions per tenir mes potència.
- Són rics i més útils que les DTD.
- Estan escrits en XML.
- Suporten tipus de dades.
- Suporten espais de nom.
- Es el mateix llenguatge
- Pots reutilitzar l'editor XML.
- Pots reutilitzar el parser XML.
- Pots manipular l'esquema amb XML DOM.
- Pots transformar l'esquema amb XSLT.
Exemple simple
[modifica]<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Els atributs
[modifica]- Un element amb atributs sempre és de tipus complexe.
- Són de tipus bàsic, com els elements simples.
- Sintaxi: <xs:attribute name="xxx" type="yyy"/>
- Valors per defecte:
<xs:attribute name="lang" type="xs:string" default="EN"/>
- Valors fixes:
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
- Atributs opcionals:
<xs:attribute name="lang" type="xs:string" use="optional"/>
- Atributs obligatoris
<xs:attribute name="lang" type="xs:string" use="required"/>
Validació
[modifica]Exercici: Atributs Personals
[modifica]<?xml version="1.0" encoding="UTF-8"?> <dp:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/dp" xmlns:tns="http://www.example.org/dp" elementFormDefault="qualified" /> <dp:element name="dp"> <dp:complexType> <dp:sequence> <dp:element name="dp"> <dp:complexeType> <dp:sequence> <dp:element name="Nombre" type="dp:string" /> <dp:element name="Primer_Apellido" type="dp:string" /> <dp:element name="Segundo_Apellido" type="dp:string" /> <dp:element name="Edad" type="dp:integer" /> <dp:element name="Dia_Nacimiento" type="dp:date" /> <dp:element name="Pais" type="dp:string" /> <dp:element name="Telefono" type="dp:integer" /> <dp:element name="Correo_Electronico" type="dp:string" /> </dp:sequence> </dp:complexeType> </dp:element> <dp:element name="dc"> <dp:complexType> <dp:sequence> <dp:element name="Direccion" type="dp:string" /> <dp:element name="Poblacion" type="dp:string" /> <dp:element name="Codigo_Postal" type="dp:integer" /> <dp:element name="Sexo" type="dp:string" /> <dp:element name="Estado_Civil" type="dp:string" /> </dp:sequence> </dp:complexType> </dp:element> </dp:sequence> </dp:complexType> </dp:element> </dp:schema>
Exercici: Invoice
[modifica]<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/Invoice" xmlns:tns="http://www.example.org/Invoice" elementFormDefault="qualified"> <element name="Invoice"> <complexType> <sequence> <element name="Header"> <complexType> <attribute name="invoiceNumber" type="integer" /> </complexType> </element> <element name="Date"> <complexType> <sequence> <element name="Month" type="date" /> <element name="Day" type="date" /> <element name="Year" type="date" /> </sequence> </complexType> </element> <element name="Billto"> <complexType> <attribute name="customer" type="ID" /> <attribute name="name" type="string" /> <attribute name="phone" type="integer" /> </complexType> </element> <element name="Address"> <complexType> <sequence> <element name="street_1" type="string" /> <element name="street_2" type="string" /> <element name="city" type="string" /> <element name="state" type="string" /> <element name="zip" type="string" /> <element name="country" type="string" /> <element name="Item"> <complexType> <attribute name="price" type="decimal" /> <attribute name="discount" type="decimal" /> </complexType> </element> </sequence> </complexType> </element> </sequence> </complexType> </element> </schema>
EXÀMEN
[modifica]<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com/examen" xmlns="http://www.w3schools.com/examen" elementFormDefault="qualified"> <xsd:element name="socis"> <xsd:complexType> <xsd:sequence> <xsd:element name="Socis"> <xsd:complexType> <xsd:sequence> <xsd:element name="DNI" type="xsd:integer" /> <xsd:element name="Nom" type="xsd:string" /> <xsd:element name="Cognom_1" type="xsd:string" /> <xsd:element name="Cognom_2" type="xsd:string" /> <xsd:element name="Edat" type="xsd:integer" /> <xsd:element name="Dia_Naixement" type="xsd:date" /> <xsd:element name="Pais" type="xsd:string" /> <xsd:element name="Telefon" type="xsd:integer" /> <xsd:element name="Correu_Electronic" type="xsd:string" /> <xsd:element name="Numero_Soci" type="xsd:string" /> <xsd:element name="Sexe" type="xsd:date" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Videoclubs"> <xsd:complexType> <xsd:sequence> <xsd:element name="Nom" type="xsd:string" /> <xsd:element name="Propietari" type="xsd:string" /> <xsd:element name="Direccio" type="xsd:string" /> <xsd:element name="Correu_Electronic" type="xsd:string" /> <xsd:element name="Telefon" type="xsd:integer" /> <xsd:element name="Horari" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Pelicules"> <xsd:complexType> <xsd:sequence> <xsd:element name="Nom" type="xsd:string" /> <xsd:element name="Director" type="xsd:string" /> <xsd:element name="Web" type="xsd:string" /> <xsd:element name="Any_Creacio" type="xsd:date" /> <xsd:element name="Duracio" type="xsd:string" /> <xsd:element name="Pressupost" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>