DTD Document Type Definitions: diferència entre les revisions
De FFAWiki
(Es crea la pàgina amb «<li>Defineix l’estructura i els elements i atributs legals d’un tipus de document XML</li> <li>El DTD és en sí mateix un llenguatge de marques basat en SGML (ant...».) |
(→CDATA) |
||
(22 revisions intermèdies per 2 usuaris que no es mostren) | |||
Línia 3: | Línia 3: | ||
<li>És el primer tipus que es va inventar. Per tant, té les seves limitacions</li> | <li>És el primer tipus que es va inventar. Per tant, té les seves limitacions</li> | ||
<li>Tot i així, encara s’utiltiza, per exemple, en XHTML i HTML5</li> | <li>Tot i així, encara s’utiltiza, per exemple, en XHTML i HTML5</li> | ||
__toc__ | |||
==Elements de creació amb DTD== | |||
<li>Elements <body>some text</body></li> | |||
<li>Atributs <img src="computer.gif" /></li> | |||
<li>Entitats &lt; &gt; &amp; &quot; &apos;</li> | |||
<li>PCDATA Parsed data (dades que el sistema comprovarà)</li> | |||
<li>CDATA Non-parsed data (dades que el sistema no comprovarà)</li> | |||
==[[Plantilla DTD]]== | |||
:'''per el xml''' | |||
::<!DOCTYPE escacs SYSTEM "FmayolaXSDAct2.dtd"> | |||
:'''per el dtd''' | |||
::<!ELEMENT llibre (----,----)+*?> | |||
::<!ELEMENT titol (#PCDATA)> | |||
::<!ATTLIST titol ------ CDATA #REQUIRED> | |||
==Elements DTD== | |||
===Elements que contenen dades=== | |||
:<!ELEMENT nom-element categoria><br> | |||
::Exemple:<br> | |||
:::<!ELEMENT exemple (#PCDATA)><br> | |||
::XML:<br> | |||
:::<exemple>dades exemple</exemple><br> | |||
===Elements que contenen elements=== | |||
:<!ELEMENT nom-element (elements fills)><br> | |||
::Exemple:<br> | |||
:::<!ELEMENT persona (nom,cognom)><br> | |||
::XML:<br> | |||
:::<persona> | |||
::::<nom>dades exemple</nom> | |||
::::<cognom>dades exemple</cognom> | |||
:::</persona> | |||
===Elements buits=== | |||
:<!ELEMENT nom-element EMPTY><br> | |||
::Exemple:<br> | |||
:::<!ELEMENT br EMPTY><br> | |||
:XML:<br> | |||
::<nowiki><br/></nowiki> | |||
=== 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.<br> | |||
::<!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.<br> | |||
::<!ELEMENT persona (nom?,cognom)> Amb el modificador ? Indiquem que nom pot aparèixer una vegada o cap. Es a dir que és opcional.<br> | |||
::<!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.<br> | |||
::<!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.<br> | |||
::Si aquests modificadors es troben fora dels parèntesis afecten a tot el conjunt que hi ha dintre d’aquest.<br> | |||
::(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í’/> | |||
====Valors==== | |||
:Conté un atribut d’una llista de valors separats per |, la llista ha d’escriure’s entre parèntesis. | |||
::Exemple: | |||
:::<!ATTLIST habitacio color (blau|verd|rosa) #REQUIRED> | |||
::XML: | |||
:::<Habitacio color=’blau’/> | |||
====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"> |
Revisió de 10:48, 16 gen 2021
Elements de creació amb DTD
Plantilla DTD
- per el xml
- <!DOCTYPE escacs SYSTEM "FmayolaXSDAct2.dtd">
- per el dtd
- <!ELEMENT llibre (----,----)+*?>
- <!ELEMENT titol (#PCDATA)>
- <!ATTLIST titol ------ CDATA #REQUIRED>
Elements DTD
Elements que contenen dades
- <!ELEMENT nom-element categoria>
- Exemple:
- <!ELEMENT exemple (#PCDATA)>
- <!ELEMENT exemple (#PCDATA)>
- XML:
- <exemple>dades exemple</exemple>
- <exemple>dades exemple</exemple>
- Exemple:
Elements que contenen elements
- <!ELEMENT nom-element (elements fills)>
- Exemple:
- <!ELEMENT persona (nom,cognom)>
- <!ELEMENT persona (nom,cognom)>
- XML:
- <persona>
- <nom>dades exemple</nom>
- <cognom>dades exemple</cognom>
- </persona>
- <persona>
- Exemple:
Elements buits
- <!ELEMENT nom-element EMPTY>
- Exemple:
- <!ELEMENT br EMPTY>
- <!ELEMENT br EMPTY>
- Exemple:
- 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)
- <!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.
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í’/>
Valors
- Conté un atribut d’una llista de valors separats per |, la llista ha d’escriure’s entre parèntesis.
- Exemple:
- <!ATTLIST habitacio color (blau|verd|rosa) #REQUIRED>
- XML:
- <Habitacio color=’blau’/>
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">