3 Conformità: requisiti e raccomandazioni
Con questa sezione hanno inizio le specifiche formali CSS2, a partire dal
contratto tra autori, utenti ed implementatori.
Le parole chiave "DEVE" [="MUST", "SHALL"], "NON DEVE" [="MUST NOT", "SHALL NOT"], "OBBLIGATORIO" [="REQUIRED"], "DOVREBBE" [="SHOULD"], "NON DOVREBBE" [="SHOULD NOT"], "RACCOMANDATO" [="RECOMMENDED"], "PUÒ" [="MAY"] e "FACOLTATIVO" [="OPTIONAL"] devono essere interpretate in questo documento così come descritto in RFC 2119 (si veda [RFC2119]).
Tuttavia, per ragioni di leggibilità, tali parole non appaiono in lettere tutte maiuscole all'interno di queste specifiche.
A volte le presenti specifiche raccomandano delle buone consuetudini per autori e programmi
utente. Tali raccomandazioni non sono normative e la conformità a queste specifiche non
dipende dalla loro attuazione. Simili raccomandazioni contengono espressioni come "Noi
raccomandiamo ...", "Queste specifiche raccomandano ...", o altre formulazioni analoghe.
- Foglio di stile
- Un insieme di istruzioni che specifica la presentazione di un documento.
I fogli di stile possono avere tre differenti origini: l'autore, l'utente e il programma utente. L'interazione tra queste sorgenti
è descritta nella sezione su collegamenti a cascata
ed eredità.
- Foglio di stile valido
- La validità di un foglio di stile dipende dal
livello di CSS usato per il foglio di stile. Tutti i fogli di stile CSS1 validi
sono fogli di stile CSS2 validi. Tuttavia, in virtù di alcuni cambiamenti rispetto ai CSS1, alcuni
fogli di stile CSS1 avranno una semantica leggermente differente in CSS2.
Un foglio di stile CSS2 valido deve essere scritto in modo conforme alla grammatica dei CSS2. Inoltre esso deve contenere solo
regole-a, nomi di proprietà e valori di proprietà definiti in queste specifiche.
Sono illegali (invalidi)
una regola-a, un nome di proprietà o un valore di proprietà
che non sono validi.
- Documento
sorgente
- Il documento a cui uno o più fogli di stile si riferiscono. Questo è codificato
in un qualsiasi linguaggio che rappresenti il documento come un albero di elementi. Ciascun elemento consiste di un nome che identifica
il tipo di elemento, di un numero facoltativo di attributi e di un contenuto (che può essere vuoto).
- Linguaggio del documento
- Il linguaggio in cui è codificato il documento sorgente (p.es., HTML
o un'applicazione XML).
- Elemento
- (Termine di SGML, si veda [ISO8879].) I costrutti sintattici primari del linguaggio
del documento. La maggior parte delle regole dei fogli di stile CSS usa i nomi di
questi elementi (come "P", "TABLE" e "OL" per l'HTML), allo scopo di specificare
informazioni per la loro riproduzione.
-
Elemento rimpiazzato
- Un elemento di cui il formattatore CSS conosce soltanto le dimensioni
intrinseche. In HTML gli elementi IMG, INPUT, TEXTAREA, SELECT e OBJECT
possono essere esempi di elementi rimpiazzati. Per esempio, il contenuto
dell'elemento IMG è spesso rimpiazzato dall'immagine che l'attributo "src"
designa. I CSS non definiscono il modo in cui le dimensioni intrinseche sono
reperite.
- Dimensioni intrinseche
- La larghezza e l'altezza così come definite dall'elemento stesso, non
imposte dalle condizioni circostanti. In CSS2 si assume che tutti gli elementi
rimpiazzati -- e soltanto gli elementi rimpiazzati -- possiedono
dimensioni intrinseche.
- Attributo
- Un valore associato con un elemento, consistente di un nome e di un valore
(testuale) associato.
- Contenuto
- Il contenuto associato con un elemento nel documento sorgente; non tutti gli
elementi hanno un contenuto, nel qual caso sono chiamati vuoti. Il contenuto di un
elemento può includere del testo, e può includere un certo numero di sottoelementi,
nel qual caso l'elemento è chiamato il genitore di quei
sottoelementi.
- Contenuto
riprodotto
- Il contenuto di un elemento dopo che è stato riprodotto conformemente agli
appropriati fogli di stile che gli sono stati applicati. Il contenuto riprodotto
di un elemento rimpiazzato proviene dall'esterno
del documento sorgente. Contenuto riprodotto può essere anche del testo alternativo
per un elemento (p.es., il valore dell'attributo HTML "alt"), e può includere parti
inserite implicitamente o esplicitamente dal foglio di stile, quali pallini,
numerazione, ecc.
-
Albero del documento
- L'albero degli elementi codificati nel documento sorgente. Ciascun elemento
in questo albero ha esattamente un genitore, con l'eccezione dell'elemento
radice, che non ne ha nessuno.
- Figlio
- Un elemento A è detto figlio dell'elemento B se, e soltanto se, B è
il genitore di A.
- Discendente
- Un elemento A è detto discendente dell'elemento B, se (1)
A è figlio di B o se (2) A è figlio di un qualsiasi elemento C
che è discendente di B.
- Progenitore
- Un elemento A è detto progenitore di un elemento B, se e solo se B
è un discendente di A.
- Fratello [= Sibling]
- Un elemento A è detto fratello di un elemento B, se e solo se B ed A
condividono lo stesso elemento genitore. L'elemento A è un fratello precedente
se esso viene prima di B nell'albero del documento. L'elemento B è un fratello
seguente se esso viene dopo A nell'albero del documento.
- Elemento precedente
- Un elemento A è detto elemento precedente di un elemento B, se e solo se
(1) A è un progenitore di B o se (2) A è un fratello precedente di B.
- Elemento seguente
- Un elemento A è detto elemento seguente di un elemento B, se e solo se B
è un elemento precedente di A.
- Autore
- Un autore è una persona che scrive documenti e fogli di stile ad essi associati.
Uno strumento autoriale genera documenti e fogli di stile associati.
- Utente
- Un utente è una persona che interagisce con un programma utente per vedere,
ascoltare o utilizzare in altro modo un documento ed il foglio di stile che gli è
associato. L'utente può utilizzare un foglio di stile personale che codifica le
sue preferenze personali.
- Programma utente (PU) [= User agent (UA)]
- Un programma
utente è un qualsiasi programma che interpreta un documento scritto nel
linguaggio del documento ed applica i fogli di stile associati in conformità con quanto
stabiliscono queste specifiche. Un programma utente può mostrare un documento, leggerlo
ad alta voce, generarne la stampa, convertirlo ad un altro formato, ecc.
Ecco un esempio di documento sorgente codificato in HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<TITLE>Il mio sito</TITLE>
<BODY>
<H1>Il mio sito</H1>
<P>Benvenuti nel mio sito! Lasciate che vi
elenchi i miei compositori preferiti:
<UL>
<LI> Elvis Costello
<LI> Johannes Brahms
<LI> Georges Brassens
</UL>
</BODY>
</HTML>
Ciò produce il seguente albero:
Conformemente alla definizione di HTML, l'elemento HEAD sarà desunto durante l'analisi
e diverrà parte dell'albero del documento, anche se nel codice sorgente non sono presenti
marcatori HEAD. Analogamente, l'analizzatore sa dove i P e i LI terminano, anche se nel
sorgente mancano i marcatori </P> e </LI>.
Questa sezione definisce la conformità alle sole specifiche CSS2. Potranno
esserci in futuro altri livelli di CSS, che richiederanno ad un programma utente
di implementare un differente insieme di caratteristiche allo scopo di risultare
conforme.
In generale, i punti successivi devono essere osservati da un programma utente
che si dichiara conforme alle presenti specifiche:
- Deve supportare uno o più dei tipi di media CSS2.
- Per ciascun documento sorgente, deve cercare di reperire tutti i fogli
di stile che sono appropriati per i tipi di media supportati. Se non può
reperire tutti i fogli di stile associati (ad esempio a causa di errori di rete),
deve mostrare il documento usando quelli che può reperire.
- Deve analizzare i fogli di stile in modo conforme a queste specifiche.
In particolare, deve riconoscere tutte le regole-at, i blocchi, le dichiarazioni
e i selettori (si veda la grammatica dei CSS2).
Se un programma utente incontra una proprietà che si applica ad un tipo di media
supportato, il programma utente deve analizzare il valore in base alla definizione
della proprietà. Ciò implica che il programma utente deve accettare tutti i valori
validi e deve ignorare
le dichiarazioni contenenti valori invalidi. I programmi utente devono ignorare le regole che si applicano a tipi
di media non supportati.
- Per ciascun elemento in un albero del documento, deve
assegnare un valore a ciascuna proprietà applicabile in base alla definizione della
proprietà e alle regole di cascata ed eredità.
- Se il documento sorgente presenta un foglio di stile alternativo (come per esempio
uno con la parola chiave "alternate" in HTML 4.0 [HTML40]), il
PU [= UA] deve consentire all'utente di selezionare
uno tra questi fogli di stile e deve applicare quello selezionato.
Non tutti i punti devono essere osservati da tutti i programmi utente, tuttavia:
- Un programma utente che immette [= inputs] fogli di stile deve rispettare
i punti 1 - 3.
- Ad uno strumento autoriale si richiede unicamente di produrre fogli di stile validi.
- Un programma utente che riproduce un documento con fogli di stile
associati, deve rispettare i punti 1 - 5 e riprodurre il documento secondo i
requisiti appropriati per il mezzo, esposti in queste specifiche. I valori possono essere approssimati, quando
richiesto dal programma utente.
L'impossibilità da parte di un programma utente di attuare parte di queste
specifiche a causa delle limitazioni di un particolare dispositivo (p.es., un programma
utente non può riprodurre colori su un monitor o su una pagina monocromatici) non
implica la non-conformità.
Queste specifiche raccomandano che i programmi utente permettano all'utente di
specificare un foglio di stile dell'utente.
In generale, questo documento non specifica come i programmi utente devono
comportarsi nel gestire gli errori (p.es., come si comportano quando non possono
trovare una risorsa designata da un URI).
Tuttavia, i programmi utente devono osservare le regole per gestire gli errori di analisi.
Dal momento che i programmi utente possono variare nel modo in cui trattano le
condizioni di errore, autori ed utenti non devono basarsi su alcuno specifico
comportamento di recupero degli errori.
I fogli di stile CSS che esistono come file separati, sono
trasmessi attraverso la Rete come sequenze di byte accompagnate
da informazioni di codifica (si veda [HTML40], capitolo 5). La struttura della trasmissione,
denominata entità messaggio, è definita
da RFC 2045 e RFC 2068 (si veda [RFC2045] e [RFC2068]). Un'entità messaggio con un tipo di contenuto
"text/css" rappresenta un documento CSS indipendente. Il tipo di contenuto "text/css"
è stato registrato da RFC 2318 ([RFC2318]).