Usuari:Jordibaucells/Estructura de documents XML
Estructura d'un document XML
[modifica]- Captura de pantalla de la fulla 3 de les transparències.
Síntaxi
[modifica]- La primera línea d'un document XML ha de ser sempre la següent:
<?xml version="1.0" encoding="ISO-8859-1"?>
- Tots els elements s'han de tancar sempre.
<llibre> <personatge> Frodo </personatge> </llibre>
- Els elements poden estar aniuats.
<llibre autor=“J.R.R. Tolkien” titol=“El Hobbit”> <capitol numero=“1”>Visita inesperada</capitol> </llibre>
- Els elements poden tenir contingut text.
<llibre autor=“J.R.R. Tolkien” titol=“El senyor dels anells”> És un gran llibre ! </llibre>
- Els elements poden tenir un contingut mixt.
<llibre autor=“J.R.R. Tolkien” titol=“El Hobbit”> <capitol numero=“1”>Visita inesperada</capitol> Aquest llibre és increïble !!! </llibre>
- Els elements poden tenir atributs:
<llibre autor=“J.R.R. Tolkien” titol=“El senyor dels anells”></llibre>
- Els elements sense dades es poden tancar al final:
<llibre autor=“J.R.R. Tolkien” titol=“El senyor dels anells”/>
- Les marques distingeixen majúscula/minúscula, és a dir:
- El següent "tag" és incorrecte:
<llibre></Llibre>
- El següent "tag" és correcte:
<llibre></llibre> o bé <Llibre></Llibre>
- Els espais són normalitzats en els atributs. És a dir:
<llibre autor=“J.R.R. Tolkien> El Hobbit </llibre>
- Equival a :
<llibre autor=“J.R.R. Tolkien> El Hobbit </llibre>
Atributs
[modifica]- Quan declarem atributs, hem de tenir present:
– Hi ha distinció entre majúscules i minúscules, no és el mateix:
<autor nom=“Tolkien”> que <autor nom=“tolkien><autor nom=“Tolkien”> que <autor Nom=“Tolkien >
– Un element pot tenir un nombre il∙limitat d’atributs.
– Un atribut no pot repetirse dins un mateix element.
– L’ordre dels atributs no influeix, és a dir:
<autor nom=“Tolkien” ab=“J.R.R.T”>
- Equival a:
<autor ab=“J.R.R.T” nom=“Tolkien”>
Restriccions d’un document
[modifica]- Els documents XML estan lligats a certes restriccions:
– Té un format textual, per tant les dades binàries s’han d’enviar en Base 64 o enviar a part del document XML (via enllaç, com fa l’HTML amb les imatges).
– Els documents han d’estar ben formats. És a dir, han de seguir les restriccions sintàctiques enumerades en l’especificació.
– Els documents poden ser vàlids. És a dir es pot comprovar si segueixen certes estructures.
Comentaris en XML
[modifica]- Podem afegir comentaris als nostres XMLs igual que ho fem amb HTML:
<!– Una de les millors obres literàries del gènere de ciència ficció> <llibre autor=“J.R.R. Tolkien” titol=“El Hobbit”> <capitol numero=“1”>Visita inesperada</capitol> </llibre>
Tipus de dades dels atributs
[modifica]- En els fitxers XML no s’especifica de quin tipus (enters, caràcters,...) són els valors del atributs, però sí en la seva DTD o XSD corresponent.
- Per tant, a l’hora de crear un XML cal tenir present els tipus definits en la seva DTD o XSD.
- Ara parlarem dels DTD i dels XML Schemas com a eines de validació semàntica de documents XML.
Validació de documents
[modifica]Documents vàlids
[modifica]- Perquè un document sigui un document XML semànticament vàlid ha de complir amb les restriccions establertes a un DTD o un XML Schema.
- Tant DTD com XML Schema són llenguatges de definició d'esquemes de documents.
Document Type Definition (DTD)
[modifica]- La declaració de tipus de document es fa de la següent manera:
<!DOCTYPE nom ... >
- El node arrel al qual volem aplicar la DTD haurà de tenir el mateix nom que hem indicat.
- A continuació del nom del document hi podem tenir:
– La definició de l’estructura del document (DTD interna).
– Una referència a un recurs extern que conté la DTD d’aquest document (DTD privada).
– Una referència a una definició pública (DTD Pública).
- Exemple de DTD
<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT Invoice (Header,Item+)> <!ELEMENT Header (Date,BillTo)> <!ATTLIST Header invoiceNumber CDATA #REQUIRED > <!ELEMENT Item (description*)> <!ATTLIST Item price CDATA #REQUIRED discount (promotion | regular) "regular" > <!ELEMENT Date ((Month,Day,Year)|(Day,Month,Year))> <!ELEMENT BillTo (Address)> <!ATTLIST BillTo custNumber ID #REQUIRED name CDATA #IMPLIED phone CDATA #IMPLIED > <!ELEMENT description (#PCDATA)> <!ELEMENT Address (street1,street2?,city,(state|province),zip,country?)> <!ELEMENT street1 (#PCDATA)> <!ELEMENT street2 (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ELEMENT state (#PCDATA)> <!ELEMENT province (#PCDATA)> <!ELEMENT zip (#PCDATA)> <!ELEMENT country (#PCDATA)> <!ELEMENT Month (#PCDATA)> <!ELEMENT Day (#PCDATA)> <!ELEMENT Year (#PCDATA)>
- Declaració de DTD interna: Les sentències estan incrustades dins del fitxer XML.
- Declaració de DTD privada: Les sentències estan a un altre fitxer.