200 likes | 358 Views
Documenti XML ben formati. Altre componenti di un documento XML – Struttura dei documenti XML. Sezioni condizionali IGNORE/INCLUDE. A volte può essere utile marcare porzioni di DTD in modo da processarle solo in determinate circostanze
E N D
Documenti XML ben formati Altre componenti di un documento XML – Struttura dei documenti XML
Sezioni condizionali IGNORE/INCLUDE • A volte può essere utile marcare porzioni di DTD in modo da processarle solo in determinate circostanze • Nel caso di DTD molto complesse può essere utile limitare la possibilità di modificare la DTD da parte dei singoli utilizzatori
Sintassi • Simili alle sezioni CDATA <![CDATA[…]]>: <![IGNORE[…]]> <![INCLUDE[…]]>
Esempio Poesie con solo stanze: <![INCLUDE[ <!ELEMENT poesia (stanza+)> <!ELEMENT stanza (verso+)> ]]>
Per rendere inattiva la regola: <![IGNORE[ <!ELEMENT poesia (stanza+)> <!ELEMENT stanza (verso+)> ]]>
Istruzioni di elaborazione (processing instruction) • Iniziano con <? e finiscono con ?> • Es: fogli di stile <?xml-stylsheet type="text/css" href="mycss.css"?>
Namespace Serve per inserire una parte di una DTD o di uno schema quando se ne sta usando un altro • Si dichiara nel documento XML grazie a un attributo standard xmlns:[prefisso_namespace]
Esempio: analisi grammaticale del sonetto • Supposizione: esiste già una DTD grammaticale • Ipotesi uno: combinare le due DTD • Problema 1: complessità delle DTD • Problema 2: elementi con stesso nome ma significato diverso • Ipotesi due: namespace
Esempio: analisi grammaticale <verso xmlns:gram="http://www.gram.org"> <gram:pronome>Voi</gram:pronome> <gram:pronome>ch'</gram:pronome> <gram:verbo>ascoltate</gram:verbo> <gram:preposizione>in</gram:preposizione> <gram:sostantivo>rime</gram:sostantivo> <gram:aggettivo>sparse</gram:aggettivo> <gram:articolo>il</gram:articolo> <gram:sostantivo>suono</gram:sostantivo> </verso>
Struttura dei documenti XML • Prologo • Istanza di documento (il documento vero e proprio)
Prologo Può contenere: • Dichiarazione XML • Istruzioni di elaborazione • Doctype Declaration • Document Type Definition (DTD)
Esempio di dichiarazione XML <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
Dichiarazione XML • Ha la forma di un’istruzione di elaborazione • Ha tre attributi: • version. Corrisponde alla versione XML correntemente in uso (al momento 1.0). L’attributo è obbligatorio. • encoding. Corrisponde alla codifica di linguaggio usato per il documento. Il tipo predefinito è UTF-8, ma si possono usare altri set di caratteri. L’attributo è opzionale • standalone. Impostare l’attributo a “yes” se il documento non fa riferimento ad altre entità esterne; in caso contrario, usare “no”. L’attributo è opzionale
Istruzioni di elaborazione Es: <?xml-stylsheet type="text/css" href="mycss.css"?>
DocType Declaration (DTD ?) ≠ Document Type Definition (DTD) • DocType Declaration: KEYWORD DOCTYPE + elemento root + definizioni (DTD) • Definizioni interne o • Definizioni esterne SYSTEM o PUBLIC • Document Type Definition (DTD): • Una lista di definizioni per elementi, attributi, entità, notations
DTD interne e esterne e miste.1. DTD interna <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE antologia [ <!ELEMENT antologia (poesia+) > <!ELEMENT poesia (titolo?, stanza+)> <!ELEMENT stanza (verso+)> <!ELEMENT verso (#PCDATA)> ]> <antologia> <poesia><titolo>I</titolo> <stanza> <verso>Voi ch'ascoltate in rime sparse il suono</verso> <verso>di quei sospiri ond'io nudriva 'l core</verso> <verso>in sul mio primo giovenile errore</verso> <verso>quand'era in parte altr'uom da quel ch'i' sono,</verso> </stanza> <!-- altre stanze --> </poesia> </antologia>
2. DTD esterna <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE antologia SYSTEM "antologia.dtd" []> <antologia> <poesia><titolo>I</titolo> <stanza> <verso>Voi ch'ascoltate in rime sparse il suono</verso> <verso>di quei sospiri ond'io nudriva 'l core</verso> <verso>in sul mio primo giovenile errore</verso> <verso>quand'era in parte altr'uom da quel ch'i' sono,</verso> </stanza> <!-- altre stanze --> </poesia> </antologia>
3. DTD mista <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE antologia SYSTEM "antologia.dtd" [ <!ENTITY SecondaPoesia SYSTEM "poesia2.xml"> <!ENTITY %stanza; "INCLUDE"> ]> <antologia> <poesia><titolo>I</titolo> <stanza> <verso>Voi ch'ascoltate in rime sparse il suono</verso> <verso>di quei sospiri ond'io nudriva 'l core</verso> <verso>in sul mio primo giovenile errore</verso> <verso>quand'era in parte altr'uom da quel ch'i' sono,</verso> </stanza> <!-- altre stanze --> </poesia> &SecondaPoesia; </antologia>
DTD pubblica <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE TEI.2 PUBLIC "-//TEI//DTD TEI Lite XML ver. 1//EN" "/tei-emacs/xml/dtds/tei/teixlite.dtd"> <TEI.2> <teiHeader> <!-- metadati --> </teiHeader> <text> <front> <!-- il materiale prefatorio va qui --> </front> <body> <!-- il corpo del testo va qui --> </body> <back> <!-- il materiale finale va qui --> </back> </text> </TEI.2>
FPI: Formal Public Identifier "-//TEI//DTD TEI Lite XML ver. 1//EN" • Standard formale • DTD personalizzate – • Standard formale + • Nome di chi fa la manutenzione della DTD • Descrive il tipo di DTD • Lingua della DTD