ePrometeusCorsoJavaJava
testi articoli
Testi Articoli  Download
Home | Xml | Dtd | XPath | Xslt | Esempio | 
CorsoJava è ora Video! Free for all!
Clicca Qui!

Dtd
Fondamenti
Struttura
Attributi
Entità
Intestazione
DOCTYPE
Esempio
DTD
ENTITY
ELEMENT
Contenuto
Modificatori
ATTLIST
Tipo
Vincoli

<<< Contenuto >>>
Descritto mediante espressioni regolari

Il contenuto di un tag viene descritto grazie ad un elenco di tag e l'uso di una notazione speciale, simile a quella delle espressioni regolari. Le espressioni regolari, per chi non lo sapesse, sono delle speciali espressioni, usate comunemente in molti programmi in ambiente Unix e Linux, che servono a indicare insiemi di stringhe. Per esempio, una espressione regolare può essere utilizzata da un editore di testi per cercare tutte le occorrenze della parola questo al plurale o al singolare e indipendentemente dal fatto che abbia l'iniziale mauiuscola o minuscola. Cioè si puoò usare una sola espressione regolare, come (Q|q)est(o|i), per cercare una tra le parole questo, Questo, questi e Questi. Il significato della espressione regolare dell'esempio significa di considerare una lettera q maiuscola o minuscola, seguito da est, ed infine da una lettera i oppure o.

La definizione del contenuto di un elemento è definita in modo molto simile ad una espressione regolare. La sola differenza di rilievo è che in una espressione regolare gli elementi di una espressione regolare sono i caratteri di una stringa, mentre in un !ELEMENT gli elementi del contenuto sono tag. Un tag comprende anche i suoi sotto elementi. Possiamo vedere un esempio, che descrive il contenuto di un tag DOC:

<!ELEMENT DOC 
  (#PCDATA,TITLE?,#CDATA,PARA,(NOTE|CODE)*)>
#CDATA: testo analizzato dal parser
#PCDATA: testo non analizzato dal parser
TITLE: tag

Come si vede, la sintassi ricorda quella vista per le espressioni regolari. Esaminiamo adesso per cominciare il significato delle parole. Le parole che iniziano per # possono essere solamente #CDATA e #PCDATA. Nel primo caso (Character Data) significa che il tag contiene testo che deve essere considerato letteralmente, ovvero che non contiene tag. Invece #PCDATA (Parsed Character Data) indica che il tag può contenere tag. Sulla differenza tra CDATA e PCDATA ci siamo già soffermati prima.

Tutti le altre parole che non comiciano per #, eccettuate ANY ed EMPTY, il cui significato lo abbiamo già visto, indicano i tag dello stesso nome.

(NOTE|#CDATA): espressione, che indica una sequenza di tag e testo alternati

Nella espressione di contenuto è possibile porre in alternativa vari tipi di tag o altri elementi, raggruppandoli tra parentesi e ponendoli in alternativa con l'uso di |. Come si nota nell'esempio, con (NOTE|#CDATA) si vuole indicare che (parte del) contenuto del tag DOC può essere un tag NOTE oppure un blocco di caratteri non contenenti altri tag.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com