1.- Esquemes i vocabularis en XML
Suposem el següent problema:
- Imagina que estem gestionant una base de dades d’una biblioteca en format XML.
- La informació que volem registrar per a cada llibre és: autor, títol i any de publicació.
- Els llibres els cataloguen diverses persones i, com que no s’han posat d’acord, cada catalogador crea versions diferents.
Versió 1
<llibre>
<títol>El Arte de la Guerra</títol>
<autor>Sun Tzu</autor>
<publicació>200 a.C.</publicació>
</llibre>
Versió 2
<libro>
<título>El Arte de la Guerra</título>
<publicación>200 a.C.</publicación>
<autor>Sun Tzu</autor>
</libro>
Versió 3
<obra>
<nombre>El Arte de la Guerra</nombre>
<escritor>Sun Tzu</escritor>
<lanzamiento>200 antes de Cristo</lanzamiento>
</obra>
Al poc de temps, algú decideix afegir més elements.
Versió 1 ampliada
<llibre>
<títol>El Arte de la Guerra</títol>
<autor>Sun Tzu</autor>
<publicació>200 a.C.</publicació>
<editorial>Ediciones Z</editorial>
</llibre>
Com podem veure als exemples, cada persona ha creat la seua pròpia estructura i nomenclatura. Açò dificulta la comprensió i la interpretació de les dades dels llibres. En altres paraules: falta coherència.
Està clar que cap de les versions de l’exemple és compatible amb les altres. Per tant, és imprescindible posar-se d’acord en:
- què es pot fer,
- què pot aparéixer,
- i en quin ordre ho hem de fer.
XML és com un idioma que les computadores i els sistemes d’informació utilitzen per comunicar-se. Però perquè aquesta comunicació siga eficaç, tots han de parlar el mateix idioma.
Esquemes i vocabularis XML
Ací és on intervenen els esquemes i els vocabularis XML:
-
Els esquemes XML són com formularis que defineixen l’estructura i els tipus de dades que s’han d’utilitzar en els documents XML. Estableixen regles perquè les dades siguen coherents i comprensibles.
-
Els vocabularis XML són com un conjunt de paraules i frases que hem d’utilitzar. Defineixen les etiquetes i elements específics que podem fer servir en els documents XML.
Per establir l’estructura d’un document XML utilitzem llenguatges de definició de vocabularis o llenguatges d’esquemes. Els més coneguts són:
- DTD
- XML Schema
- Relax NG
En resum
-
Un document XML pot ser:
- Ben format: si compleix amb la sintaxi XML.
- Vàlid: si, a més d’estar ben format, compleix determinades regles i normes.
-
Per establir les regles de construcció en XML utilitzem DTD i XML Schema.
-
La validació és un procés habitual, sobretot quan es comparteix informació entre sistemes. Aquesta validació la fem amb processadors o validadors (també coneguts com a parsers).
2.- DTD
DTD: Document Type Definition – Validació i Definició de Documents
Un DTD és una especificació que defineix l’estructura, els elements i els atributs permesos en documents XML, proporcionant una guia per validar i interpretar correctament aquests documents.
El DTD ens permet crear el nostre propi llenguatge de marcat per a aplicacions específiques. Defineix:
- Tipus d’elements.
- Atributs.
- Entitats permeses.
- També es poden expressar restriccions.
Podem crear DTD de dues maneres:
- Fitxer extern: pot ser compartit per diversos documents (fins i tot milers).
- En el propi document XML: com a part de la declaració de tipus de document (inline).
2.1. Sintaxi bàsica
<!DOCTYPE element DTD_identifier
[
declaració1
declaració2
...
]>
On:
<!DOCTYPE>: indica que estem declarant un tipus de document.- element: especifica el nom de l’element que serà l’arrel o element principal del document XML.
-
DTD identifier: identificador que fa referència a la definició del tipus de document. Pot ser:
- una ruta local a un fitxer
.dtd, - o una URL a un DTD extern (subconjunt extern).
- una ruta local a un fitxer
[ ... ]: entre claudàtors podem incloure un subconjunt intern amb declaracions d’elements, atributs o entitats.
2.2. DTD Interna
El DTD es defineix dins del mateix document XML, entre <!DOCTYPE ... > i abans de les dades.
Exemple:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE articles [
<!ELEMENT articles (article+)>
<!ELEMENT article (titol, autor, contingut)>
<!ELEMENT titol (#PCDATA)>
<!ELEMENT autor (#PCDATA)>
<!ELEMENT contingut (#PCDATA)>
]>
<articles>
<article>
<titol>Article 1</titol>
<autor>Inés Tornudo</autor>
<contingut>Aquest és el contingut de l’article 1.</contingut>
</article>
<!-- Altres articles -->
</articles>
Nota:
standalone="yes"indica que el document no depèn d’un DTD extern.encoding="UTF-8"necessari per a caràcters especials com accents, ñ i a l’exemple anterior l’apòstrof (’).
2.3. DTD Externa
El DTD es defineix en un fitxer separat (.dtd) i es fa referència des del document XML
- Exemple:
Fitxer articles.dtd
<!ELEMENT articles (article+)>
<!ELEMENT article (titol, autor, contingut)>
<!ELEMENT titol (#PCDATA)>
<!ELEMENT autor (#PCDATA)>
<!ELEMENT contingut (#PCDATA)>
Fitxer articles.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE articles SYSTEM "articles.dtd">
<articles>
<article>
<titol>Article 1</titol>
<autor>Inés Tornudo</autor>
<contingut>Aquest és el contingut de l’article 1.</contingut>
</article>
</articles>
El DTD també pot estar en una ubicació externa i pública: PUBLIC, es a dir, en un document XML podem referenciar un DTD extern de dues formes principals: SYSTEM i PUBLIC
Àmbit DTD: SYSTEM vs PUBLIC
En un document XML podem referenciar un DTD extern de dues formes principals:
- SYSTEM: DTD privat o propi. S’indica una ruta local o URL concreta al fitxer
.dtd.
<!DOCTYPE articles SYSTEM "articles.dtd">
Això vol dir: “busca un fitxer anomenat articles.dtd al mateix directori que el document XML”.
- PUBLIC: DTD d’un organisme d’estandardització. S’utilitza un identificador públic i, normalment, un SystemId.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Això vol dir: “utilitza el DTD oficial d’XHTML 1.0 Transitional publicat pel W3C”.
En resum:
- SYSTEM → DTD fet per nosaltres, ruta local o privada.
- PUBLIC → DTD oficial, d’un estàndard reconegut.
3. Estructura d’un DTD
Un DTD (Document Type Definition) és un conjunt de regles que defineixen com ha de ser l’estructura d’un document XML. Amb ell podem especificar:
-
Elements: Definixen quines etiquetes existeixen i en quin ordre poden aparéixer. Per exemple, si un
<article>ha de contindre exactament un<titol>, un<autor>i un<contingut>. -
Atributs: Determinen quins atributs poden tindre els elements i quin tipus de valor poden emmagatzemar (text, número, valors tancats, etc.). Així podem assegurar-nos que un
<llibre>tinga sempre un atributidúnic o que un campestatnomés accepte valors com “actiu” o “inactiu”. -
Entitats: Són una mena de variables o abreviatures. Podem declarar entitats per a reutilitzar text llarg o caràcters especials dins del document XML. Per exemple, una entitat
©que substituïsca automàticament pel símbol ©. -
Notacions: S’empren per a identificar tipus de dades no-XML, com imatges, sons o formats binaris. Amb les notacions indiquem al processador XML com ha d’interpretar continguts externs.
Recorda: Un document XML és ben format si compleix la sintaxi bàsica. És vàlid quan, a més, compleix les regles que hem declarat en el DTD (elements, atributs, entitats i notacions).