Vés al contingut

Usuari:Jordibaucells/Estructura de documents XML

De la Viquipèdia, l'enciclopèdia lliure
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 repetir­se 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]

Plantilla:Important

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.