XML Extensible Markup Language

De FFAWiki


Exemple XML

<email>

<remitent>
<persona>
<nom> Josep </nom>
<cognom>Pons </cognom>
</persona>
</remitent>
<destinatari>
<adreça> suport@gmail.com</adreça>
</destinatari>
<assumpte>El dispositiu no funciona</assumpte>
<missatge> Necessito que vinguin a revisar el dispositiu. </missatge>

</email>


Plantilla XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nomArxiu SYSTEM "nomArxiu.dtd">
<etiqueta xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="nomArxiu.xsd">
</etiqueta>

Regles

  1. El document conté únicament caràcters Unicode vàlids.
  2. Hi ha un element arrel que conté a la resta d'elements.
  3. Els noms dels elements i dels seus atributs no contenen espais.
  4. El primer caràcter d'un nom d'element o d'atribut pot ser una lletra, dos punts o subratllat (_).
  5. La resta de caràcters poden ser també números, guions (-) o punts (.).
  6. Els caràcters "<" i "&" només s'utilitzen com a començament de marques.
  7. Les etiquetes d'obertura, de tancament i buides estan correctament niades (no se solapen) i no cal ni sobra cap etiqueta d'obertura o tancament.
  8. Les etiquetes de tancament coincideixen amb les d'obertura (fins i tot en l'ús de majúscules i minúscules).
  9. Les etiquetes de tancament no contenen atributs.
  10. Cap etiqueta te dos atributs amb el mateix nom.
  11. Tots els atributs tenen algun valor.
  12. Els valors dels atributs estan entre cometes.

Elements DTD

Elements que contenen dades

<!ELEMENT nom-element categoria>
Exemple:

<!ELEMENT exemple (#PCDATA)>

XML:

<exemple>dades exemple</exemple>


Elements que contenen elements

<!ELEMENT nom-element (elements fills)>
Exemple:

<!ELEMENT persona (nom,cognom)>

XML:

<persona>
<nom>dades exemple</nom>
<cognom>dades exemple</cognom>
</persona>

Elements buits

<!ELEMENT nom-element EMPTY>
Exemple:

<!ELEMENT br EMPTY>

XML:

<br/>

Elements que contenen altres elements

Quan els elements contenen altres elements, Hem de considerar els seguents modificadors:

<!ELEMENT persona (nom,cognom)> Si no s’indica res els elements han d’apareixer 1 vegada (obligatòriament) i han de seguir l’ordre que s’indica.
<!ELEMENT persona (nom|cognom)> Amb el modificador lògic | (or) indiquem que hem de triar entre l’element nom i l’element cognom. O un o l’altre.
<!ELEMENT persona (nom?,cognom)> Amb el modificador ? Indiquem que nom pot aparèixer una vegada o cap. Es a dir que és opcional.
<!ELEMENT persona (nom*,cognom)> Amb el modificador * Indiquem que nom pot aparèixer una vegada, moltes o cap. Es a dir que és opcional i pot aparèixer tantes vegades com vulgui.
<!ELEMENT persona (nom+,cognom)> Amb el modificador + Indiquem que nom pot aparèixer una vegada o moltes. Es a dir que és obligatori i pot aparèixer tantes vegades com vulgui.
Si aquests modificadors es troben fora dels parèntesis afecten a tot el conjunt que hi ha dintre d’aquest.
(nom*,cognom) afecta només a nom (nom,cognom)* afecta al conjunt (nom, cognom)

Atributs DTD

<!ATTLISTnom-element nom-atribut tipus-atribut valor- inicial-atribut>

DTD example:

<!ATTLIST persona nom CDATA #REQUIRED>

Tipus d’atribut:

===CDATA=== conté caràcters sense restriccions.

Exemple:

<!ATTLIST persona correu CDATA #REQUIRED>

XML:

<persona correu=’jomp@gmail.com’/>

NMTOKEN: conté lletres, dígits i els caràcters «.», «:», «-», «_».

Exemple:

<!ATTLIST persona nom NMTOKEN #REQUIRED>

XML:

<persona nom=’Josep’/>

NMTOKENS: conté lletres, dígits i els caràcters «.», «:», «-», «_» i espais en blanc.

Exemple:

<!ATTLIST habitacio color NMTOKENS #REQUIRED>

XML:

<Habitacio color=’Blau marí’/>

ID: El valor de l’atribut ha de ser únic, no pot començar per un número.

Exemple:

<!ATTLIST Llibre codi ID #REQUIRED>

XML:

<Llibre codi=’ISBN1365’/>

IDREF: El valor ha de coincidir amb el valor de l’atribut ID d’un altre element.

Exemple:

<!ATTLIST Llibre codi ID #REQUIRED>
<!ATTLIST Prestec llibre IDREF #REQUIRED>

XML:

<Llibre codi=’ISBN1365’/>
<Prestec llibre=’ISBN1365’/>

Valors inicials d’un atribut:

#REQUIRED: Atribut obligatori.

Exemple:

<!ATTLIST exemple color CDATA #REQUIRED>

XML:

<exemple color="" />

#IMPLIED: Atribut opcional.

Exemple:

<!ATTLIST exemple color CDATA #IMPLIED>

XML:

<exemple/>

#FIXED: l’atribut conté un valor fix, Però l’atribut és opcional.

Exemple:

<!ATTLIST exemple color CDATA #FIXED ‘verd’>

XML:

<exemple color="verd" />
<exemple/>

Valor: podem posar el valor de l’atribut predeterminat

Exemple:

<!ATTLIST exemple color CDATA ‘verd’>

XML:

<exemple color="verd" />
<exemple/>
<exemple color="" />

Referència a un arxiu DTD

Per referenciar l’arxiu DTD desde el nostre XML, ens hem d’assegurar que estigui a la mateixa carpeta. L’anomenarem amb el mateix nom que el nostre XML per a no crear confusions, però amb l’extensió .dtd.

Desde el nostre XML el cridarem amb la següent línia:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nomArxiu SYSTEM "nomArxiu.dtd">