EH - Esposizione interattiva di xHTML etc.   Indici:   Pagine   Panoramica   Termini   Problemi   Esempi

Introduzione ai Cascade Style Sheets ed a XSL

Controllo dello stile

Il controllo dello stile dei documenti è un classico problema che si pone ai sistemi di editing e di illustrazione; negli ultimi anni esso si é rivelato particolarmente importante per il Web editing.

Le versioni del linguaggio HTML anteriori al 1996 davano poco peso allo stile delle presentazioni dei documenti: in effetti in quegli anni si poteva operare su pochi elementi stilistici (come colore, corpo e fonte dei caratteri, spaziature); inoltre le preoccupazioni degli autori si concentravano sui tempi di scaricamento dei files dalla rete e sui tempi di emissione sullo schermo dei documenti piu` onerosi. Successivamente, sono cresciute contemporaneamete le prestazioni degli strumenti disponibili e le esigenze estetiche per le pagine finalizzate alla pubblicità ed alla presentazione di aziende e di prodotti. Di conseguenza è aumentata la tendenza a curare l'aspetto delle pagine HTML con accorgimenti ripresi dagli ambienti dell'editoria, dell'illustrazione e del design. Si e` quindi manifestata l'esigenza di migliorare ed ampliare le prestazioni stilistiche. Congiuntamente si e` sviluppata l'esigenza di controllare separatamente il contenuto e la forma delle pagine Web, possibilita` essenziale per riuscire a produrre documenti più facilmente riutilizzabili.

A queste due esigenze cercano di dare risposta i Cascade Style Sheets, i fogli di stile utilizzabili in cascata, meccanismi introdotti dalla Microsoft con il browser Internet Explorer 3.0, successivamente adottati anche dalla Netscape con Navigator 4.0 e quindi diventati oggetto di standardizzazione da parte del Consorzio W3C. Attualmente sono stati definiti due livelli di controllo dello stile per HTML ed XHTML con due Reccommendations riguardanti rispettivamente CSS1 e CSS2, e procede la pubblicazione di una serie di Working Drafts che vanno definendo un complesso terzo livello chiamato CSS3.

Recentemente poi e` stato sviluppato un linguaggio chiamato XSL, EXtensible Stylesheet Language, finalizzato alla redazione degli Style Sheets per i documenti scritti nei linguaggi applicazioni di XML, anche quelli che presentano complesse esigenze stilistiche. Lo sviluppo, talora controverso, di questo linguaggio si basa sull'idea di ricondurre la scelta dell'aspetto di una presentazione di un documento ad una trasformazione di una rappresentazione originaria del documento in un nuovo documento. XSL quindi consiste di due parti:

Di XSL e` stata pubblicata una Candidate Recommendation XSL 1.0 in http://www.w3.org/TR/2000/CR-xsl-20001121.
Di XSLT sono stati pubblicati una Recommendation XSLT 1.0 in http://www.w3.org/TR/xslt/ ed un successivo Working Draft 1.1 in http://www.w3.org/TR/xslt11/

Gli Style Sheets ed XSL intendono anche venire incontro ad un'esigenza emersa successivamente, intorno al 1999, quella di ottenere presentazioni accettabili di documenti tipograficamente complessi quando questi vengano visualizzati con dispositivi con prestazioni tipografiche modeste (bassa risoluzione, pochi colori, poche fonts, ...). La questione riguarda i dispositivi di produzione poco recente e, soprattutto, le apparecchiatura mobili e di piccole dimensioni (computers palmari, agende elettroniche, telefoni cellulari avanzati, ... ) che si cominciano ad utilizzare per accedere al Web e per le quali si prevede una rapida vistosa diffusione.

Tipi diStyle Sheets

Gli Style Sheets possono essere utilizzati in tre modi principali e sono chiamati, rispettivamente, Inline Style Sheets, Embedded Style Sheets ed External Style Sheets.

Gli Inline Style Sheets si ottengono arricchendo alcuni tags di HTML, XHTML ed XML con richieste specifiche di stile. In questo modo, ad es., si può chiedere una determinata indentazione o l'uso di una determinata fonte per una intestazione o per un paragrafo agendo su start tags tradizionali come <h2> o <p>. Inoltre si possono utilizzare elementi caratterizzati dai meno tradizionali tags <span> e <div>, il primo introdotto per il controllo dello stile di brani brevi (facenti parte di un paragrafo), il secondo per porzioni di rilevante estensione (comprendenti anche molti paragrafi).

Gli Embedded Style Sheets consentono di controllare singole pagine attraverso regole stilistiche da redigere secondo un'apposita sintassi all'interno di un elemento caratterizzato dai tags coniugati <style> e </style> da collocare all'interno dell'elemento head. Queste regole sono poi richiamabili secondo modi specifici da elementi come intestazioni, paragrafi, span e div.

Gli External Style Sheets, detti anche Linked Style Sheets, consentono di controllare lo stile di interi gruppi di pagine mediante meccanismi uguali a quelli adottati dagli Embedded Style Sheets. Essi vengono compilati in appositi files che devono avere la estensione .css e che devono essere richiamati nello head di tutti i documenti HTML o XML nei quali si vogliono adottare gli stili che essi definiscono.

Per un controllo elaborato dello stile dei documenti, i tre tipi di Style Sheets descritti possono essere utilizzati congiuntamente. In questi casi il browser tiene conto globalmente dei Linked Style Sheets, nell'ambito di una pagina dà la preferenza alle richieste degli Embedded Style Sheets quando questi sono in conflitto con i Linked e nell'ambito di un elemento locale (intestazione, paragrafo, table, ...) da` la preferenza agli Inline Style Sheets se in contrasto con i rimanenti. A questo atteggiamento si da il nome di presa in considerazione in cascata dei fogli di stile.

Il linguaggio CSS

CSS e` un semplice linguaggio dichiarativo che consente di inserire richieste stilistiche (concernenti fonti, spaziature, colori, corpi tipografici, ...) ai documenti strutturati scritti in HTML ed in XML. L'autore puo` specificare in qual modo gli elementi vengano resi visibilmente associando loro proprieta` and valori. Ad esempio la richiesta:

 h1 {
    font-size: 12pt;
    font-weight: bold;
    color: blue;
  }

dichiara che gli elementi h1 contengono scritture in grassetto, blu e di corpo 12. Le svariate proprieta` CSS permettono di scegliere fra numerose possibilita` stilistiche dei singoli paragrafi, delle intestazioni, degli altri elementi testuali, le ampiezze dei margini, la spaziatura fra le linee, i tipi di segni che evidenziano gli items degli elenchi, gli spazi bianchi intorno alle immagini, le tessiture di sfondo e molto altro. Il termine "Cascading Style Sheets" dice che diversi fogli di stile di diverse origini possono contribuire "a cascata" a determinare l'aspetto finale del documento.

CSS1 e ormai ampiamente implementato sui browsers piu` diffusi.

Determinazione dello stile per un ventaglio dididpositivi

Invece di compilare complessi documenti HTML che utilizzano tags ed attributi per il controllo della fonte e di altri aspetti del layout, con CSS il controllo dello stile diventa un processo separato. La separazione fra structure e presentazione consente notevolissimi benefici quando occorre sintonizzare finemente i contenuti del Web per dispositivi differenti come telefoni cellulari, televisione, palmari, desktop computers a simili.

CSS2 consente di scrivere style sheets relativi a diversi specifici tipi di media. Ad es. per la presentazione sopra uno schermo di computer a colori uno style sheet si puo` concentrare sul colore e sul layout. Uno style sheet per la presentazione vocale, vantaggiosa in particolare per documenti cui si accede da un telefono montato sopra un'auto, si deve invece preoccupare del tono della voce, del suo volume e cosi` via.

Diagram showing how a style sheet can
re-purpose XHTML content for different devices

XSL

XSL e` un linguaggio molto diverso da CSS in quanto volto a soddisfare esigenze differenti, quelle che si pongono in progetti di documentazione complessi. The model used by XSL for rendering documents on the screen builds upon many years of work on a complex ISO-standard style language called DSSSL. XSL ha molte prestazioni many uses associated with the automatic generation of tables of contents, indexes, reports and other more complex publishing tasks. XSL can be used to do things such as:

"raccogliere tutte le intestazioni nel documento ed emetterle in un indice, in una table of contents"

Oppure:

"raccogliere i contenuti dei tags CONTACT-NAME, COMPANY e ADDRESS di un documento XML e redigere un rapporto in XHTML munito di stili con CSS, ordinato per compagnia, con i nomi dei contatti come intestazioni in verde, i nomi delle compagnie in blu underneath e gli indirizzi in nero"

Come opera XSL

XSL esamina un documento XML e produce un secondo documento XML la cui struttura e` stata ottenuta con una determinata trasformazione. In tal modo XSL puo` essere usato per prestazioni come le seguenti:

Generare XHTML, as shown below in Figure 2:

formatting aspects of XSL

Generare una specifica di formattazione XSL sotto forma di sequenza gerarchica di oggetti di formattazione e di loro proprieta` (Figura 3). Esampi ditali oggetti di formattazione sono immagini, linee di testo, blocchi di paragrafi e cosi` via. XSL inoltre offre al programmatore varie funzioni di formattazione: cornice, riempimento (padding), aree rettangolari, fonti, corpi delle fonti (font size), immagine di sfondo (background image), tagliosillabico (hyphenation), etc.

transformational aspects of XSL

Gli oggetti di formattazione adottati da XSL si basano sui precedenti lavori riguardanti i linguaggi CSS ed DSSSL, Document Style Semantics & Specification Language. DSSSL viene utilizzato solo da programmatori esperti ed XSL e` stato progettato per essere di uso piu` facile. Cio` non di meno si ritiene opportuno che siano predisposti tools capaci di semplificare sostanzialmente il lavoro di definizione degli style sheets XSL.

Per implementare XSL occorre costruire un processore XSL, procedura che interpreta uno style sheet XSL. Attualmente vi sono solo alcune implementazioni di XSL che supportano la parte trasformazionale di XSL.
Il consorzio W3C considera cruciale per promuovere l'adozione di XML che si possa disporre di un linguaggio dichiarativo standardizzato per le trasformazioni da XML a XML.


Indice pagine - inizio pagina