(DTD) Document Type Definition - Laboratorio di Programmazione Distribuita Dott. Marco Bianchi

Pagina creata da Simone Rizzo
 
CONTINUA A LEGGERE
(DTD) Document Type Definition - Laboratorio di Programmazione Distribuita Dott. Marco Bianchi
Laboratorio di Programmazione Distribuita

  Document Type Definition
          (DTD)
               Dott. Marco Bianchi
         Università degli Studi di L'Aquila

               bianchi@di.univaq.it
           http://di.univaq.it/~bianchi

                           DTD
                   LPD - A.A. 2003/2004
Relazione tra classi e oggetti in OO

Definizione    ...
  Classe                Ennesima istanza di classe Slide
   Slide                String titolo=”Overview”;
                        ...
                                              ...
                      Seconda istanza di classe Slide
                      String titolo=”Overview”;
                      ...

         Prima istanza di classe Slide
         String titolo=”Wake up to WonderWidgets!”;
         ...

                               DTD
                       LPD - A.A. 2003/2004
Ruolo del DTD

Document
  Type                 
Definition               Mr.
                         Sam
                         Fisher
         ...           
                       2002 Main Street
              Anytown
                 34829
                       
             Mrs.
             Mary
             McGoon
           
           1401 Main Street
           Anytown
           34829
           
                              DTD
                      LPD - A.A. 2003/2004
DTD
●   Un DTD e’ un documento che definisce in modo
    formale, utizzando una grammatica Extended
    Backus-Naur Form (EBNF), le regole di una classe
    di documenti XML
●
    In un DTD si possono dichiarare:
    –   Gli elementi utilizzabili, in che ordine e con
        quante occorrenze possono essere nidificati
        tra loro
    –   Quali attributi sono applicabili a ciascun
        elemento, se sono obbligatori e quali sono i
        loro valori predefiniti
    –   Le entità e le annotazioni utilizzabili all’interno
        del documento XML o del DTD stesso
                                  DTD
                          LPD - A.A. 2003/2004
Perchè usare un DTD

●   Gruppi indipendenti di persone possono
    accordarsi su un DTD comune per definire
    un formato per i dati

●   Un DTD puo’ essere usato per verificare la
    validita’ dei dati

●
    Avvertenza: il DTD non e’ obbligatorio!

                             DTD
                     LPD - A.A. 2003/2004
Dichiarazione di un DTD

●   Interna al documento XML:

●
    Esterna al documento XML :

                              DTD
                      LPD - A.A. 2003/2004
Esempio DTD interno

]>

Carlo
Paolo
Ci vediamo alle 12

                        DTD
                LPD - A.A. 2003/2004
Esempio DTD esterno

Carlo
Paolo
Ci vediamo alle 12

                                             nota.dtd
                             DTD
                     LPD - A.A. 2003/2004
Dichiarazione di elemento

●   Esistono quattro categorie di contenuti degli
    elementi:
    –   ELEMENT
    –   EMPTY
    –   ANY
    –   MIXED

●
    Sintassi:

                     oppure
        
                              DTD
                      LPD - A.A. 2003/2004
Elementi contenenti solo character data

●    Vengono dichiarati con la categoria
    (#PCDATA)

●
    Esempio DTD:
     
●
    Esempio XML:
      Paolo

                               DTD
                       LPD - A.A. 2003/2004
Elementi con figli (in sequenza)

●
    Gli elementi con uno o piu’ figli sono dichiarati con
    il nome dei figli tra parentesi, separati da virgole
    che determinano il loro ordine nel documento

                       oppure
    
●   Esempio DTD:
          
                                 DTD
                         LPD - A.A. 2003/2004
Quante occorrenze dello stesso elemento?

●
    Esattamente una occorrenza:

●   Esempio DTD:
        
●   Esempio XML:
        
           ... 
        
                            DTD
                    LPD - A.A. 2003/2004
Quante occorrenze dello stesso elemento?

●
    Almeno una occorrenza:

●
    Esempio DTD:
        
●   Esempio XML errato:
        
                            DTD
                    LPD - A.A. 2003/2004
Quante occorrenze dello stesso elemento?

●   Zero o piu’ occorrenze:

●   Esempio DTD:
        
●
    Esempio XML:
        
           ... 
           ... 
        
                            DTD
                    LPD - A.A. 2003/2004
Quante occorrenze dello stesso elemento?

●
    Zero o una occorrenza:

●
    Esempio DTD:
        
●   Esempio XML errato:
        
           ... 
           ... 
        
                            DTD
                    LPD - A.A. 2003/2004
Scelta fra contenuti
●   Una occorrenza oppure un'altra:

●
    Esempio DTD:
      
●   Esempi XML:
                                     
        ...                            ... 
        ...                          ... 
        ...                        ... 
                                    
                            DTD
                    LPD - A.A. 2003/2004
Esempi di dichiarazioni di elemento

                         DTD
                 LPD - A.A. 2003/2004
EMPTY

●   Gli elementi vuoti vengono dichiarati con la
    parola chiave EMPTY

●   Esempio DTD:
      
●
    Esempio XML:
      
                            DTD
                    LPD - A.A. 2003/2004
ANY

●
    Gli elementi generici vengono dichiarati con
    parola chiave ANY

●   Esempio DTD:
         
                             DTD
                     LPD - A.A. 2003/2004
Contenuto misto

• Testo oppure elementi non in sequenza:

• Esempio DTD:
     
• Esempio XML
           
              ... 
             Un po' di testo
              ... 
             Ancora testo
           
                              DTD
                      LPD - A.A. 2003/2004
Limitazioni

         Parser Error:
         Illegal mixed content model for 'item'

         Parser Warning:
         Duplicate definition for 'item'

                          DTD
                  LPD - A.A. 2003/2004
Dichiarazione di attributi

●   Sintassi per la dichiarazione di attributo:

●
    Esempio DTD:
    
                             DTD
                     LPD - A.A. 2003/2004
Dichiarazione di attributi: note

●   Tutte le dichiarazioni attlist per lo stesso
    elemento vengono fuse dal parser XML.

●   In caso di conflitti su attributi ridefiniti, la
    prima definizione ha la precedenza.

●   Si possono dichiarare un numero arbitrario
    di attributi in ogni ATTLIST.

                               DTD
                       LPD - A.A. 2003/2004
Valori possibili di attribute-type

●
    Sintassi per la dichiarazione di attributo:

●
    Possibili valori di attribute-type:
     –   CDATA       character data
     –   (n1|n2|…)   uno fra gli n1, n2, …
     –   ID          un identificatore unico
     –   IDREF       riferimento ad un ID
     –   …
                                DTD
                        LPD - A.A. 2003/2004
Valori possibili di default-values

●
    Sintassi per la dichiarazione di attributo:

     –   “value”            valore di default se non
                            esplicitamente specificato
     –   #REQUIRED          valore obbligatorio
     –   #IMPLIED           valore facoltativo
     –   #FIXED ”value”     valore di default unico
                            ammissibile

                                  DTD
                          LPD - A.A. 2003/2004
Dichiarazioni interne di entita’ carattere

●   Sintassi:
    
●
    Esempio DTD:
    
• Esempio XML:
    &autore;&copyright;

                           DTD
                   LPD - A.A. 2003/2004
Dichiarazioni esterne di entita’ carattere

●   Sintassi:

●   Esempio DTD:
    
●   Esempio XML:
    &autore;&copyright;

                           DTD
                   LPD - A.A. 2003/2004
Entità parametriche

●
    Sintassi
               
●   Simili alle entità generali, possono essere
    usate solo all’interno del DTD, rendendolo
    “parametrico”.

●   Per utilizzare un'entità parametrica: %name;

●   Sono validi tutti i contenuti visti per le entità
    generali parsed (interne ed esterne).

                               DTD
                       LPD - A.A. 2003/2004
Definire un namespace nel DTD

●
    Nel DTD:
     
●   Nel documento:

      Overview
  
                             DTD
                     LPD - A.A. 2003/2004
Validazione automatica

●   Esistono programmi per la validazione
    automatica di documenti XML
    –   testano sia la “ben formatezza” che la
        validita’
    –   Esempio:
         ●
             Sun Multi-Schema XML Validator

                                 DTD
                         LPD - A.A. 2003/2004
Progettare una
struttura dati XML

              DTD
      LPD - A.A. 2003/2004
Consigli per una buona progettazione

●
    Quando possibile, usare un DTD già
    esistente:
    –   Si risparmia tempo
    –   Favorisce l'interscambio di dati

●   Scegliere opportunamente attributi o
    elementi:
...

    oppure
This is the title
  ...
                                DTD
                        LPD - A.A. 2003/2004
Attributi o Elementi: scelte forzate

Elementi più convenienti quando:
●   I dati contengono sottostrutture
●   I dati contengono linee multiple
●   Sono possibili occorrenze multiple
●
    I dati cambiano frequentemente

Attributi più convenienti quando:
●   Semplici stringhe che cambiano raramente
●   Quando i possibili valori sono limitati

                             DTD
                     LPD - A.A. 2003/2004
Attributi o Elementi: scelte stilistiche

Le scelte stilistiche possono riguardare:
●   Visibilità
    –   Dati visibili all'utente finale modellati come
        elementi
●   Consumer/Provider
    –   Dati inseriti da utente modellati come
        elementi
●   Container vs. Contents
    –   Caratteristiche del contenuto modellati come
        attributi

                                DTD
                        LPD - A.A. 2003/2004
Esercizi & Laboratorio

      XML

               DTD
       LPD - A.A. 2003/2004
Case Study: DTD per agenda giornaliera

           Doctor's appointment
           Physics class at BH291C
      
           Independence Day
      
           Party at Joe's
      
           Meeting in room 14-C
      
                                DTD
                        LPD - A.A. 2003/2004
Definizione degli elementi

           Doctor's appointment
           Physics class at BH291C
      
           Independence Day
      
      ...
            
                          DTD
                  LPD - A.A. 2003/2004
Aggiungere gli attributi

            Doctor's appointment
            Physics class at BH291C
       
            Independence Day
       
      ...
  
             ...
             
                                DTD
                        LPD - A.A. 2003/2004
Il DTD completo

                        DTD
                LPD - A.A. 2003/2004
Documento valido

           Doctor's appointment
           Physics class at BH291C
      
           Independence Day
      
           Party at Joe's
      
      ...
  
                                DTD
                        LPD - A.A. 2003/2004
Esercizio: Drugs
 ●
     Scrivere una DTD per il seguente documento; poi, cambiate la
     sequenza di due elementi nel documento sorgente.
     Convalidate il documento e apportate le modifiche necessarie
     al DTD affinchè risulti valido.

          aspirin
          0.4 g. acetisalicil acid, 0.24g.
          ascorbine acid
          analgetic 
          yes
          andol

  ulcer
      
                             DTD
             LPD - A.A. 2003/2004
Risorse on-line

●
    www.oasis-open.org
    Per cercare DTD standard industriali
●   www.dtd.com
    Un repository di DTD per documenti XML
●
    www.xml101.com/dtd
    Contiene tutorial e spiegazioni per creare
    DTD
●   www.w3schools.com/dtd
    Contiene tutorial ed esempi sulle DTD
●
    www.schema.net
    Un repository di DTD con link e risorse
    correlate ad XML
                             DTD
                     LPD - A.A. 2003/2004
Domande?

         DTD
 LPD - A.A. 2003/2004
Puoi anche leggere