XML Extensible Markup Language: diferència entre les revisions

De FFAWiki
Línia 46: Línia 46:
===Elements que contenen dades===
===Elements que contenen dades===


<!ELEMENT nom-element categoria><br>
:<!ELEMENT nom-element categoria><br>
Exemple:<br>
::Exemple:<br>
:<!ELEMENT exemple (#PCDATA)><br>
:::<!ELEMENT exemple (#PCDATA)><br>
XML:<br>
::XML:<br>
:<exemple>dades exemple</exemple><br>
::::<exemple>dades exemple</exemple><br>
 


===Elements que contenen elements===
===Elements que contenen elements===

Revisió del 00:45, 27 nov 2020


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’/>
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">