Partiamo dall'idea che sostanzialmente nasce dalla necessità facilitare la creazione dei contenuti di un portale e di consentirne l'organizzazione in modo uniformemente strutturato.
L'utilizzo dei modelli in Osiris avviene in due fasi: nella prima vengono definiti la struttura dati (schema) e la modalità di rappresentazione (stylesheet) di questi ultimi, mentre nella seconda si procederà all'immissione dei dati.
Cerchiamo innanzitutto di capire cosa si intende per schema:
Uno schema, meglio conosciuto come XSD, è sostanzialmente la descrizione di come devono essere organizzati i dati che vogliamo rappresentare.
Uno stylesheet, propriamente detto XSL, definisce invece il modo in cui tali dati verranno rappresentati.
Penso comunque che un buon esempio valga più di mille parole
Prendiamo come ipotesi un portale dedicato al cinema in cui vi sia una sezione dove inserire le schede dei vari films: l'idea è di fare in modo che chi inserisce una scheda non si debba preoccupare di come formattarla, ma si limiti semplicemente al puro inserimento dei dati lasciando così il compito di rappresentarli a qualcun altro.
Il procedimento sarà il seguente:
- Verrà innanzitutto creato un modello chiamato, ad esempio, "template_film"
- Nello schema di template_film si definiranno tutti i campi che saranno necessari in una scheda, diciamo ad esempio di volere una locandina, il titolo del film, l'anno, la durata e la trama.
Uno schema che rispecchi tale necessità potrebbe essere il seguente:
<?xml version="1.0"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="film"> <xs:complexType> <xs:sequence> <xs:element name="locandina" type="xs:string" /> <xs:element name="titolo" type="xs:string" /> <xs:element name="anno" type="xs:unsignedShort" /> <xs:element name="durata" type="xs:string" /> <xs:element name="trama" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Tale schema definisce un xml così strutturato
<film> <locandina>...</locandina> <titolo>...</titolo> <anno>...</anno> <durata>...</durata> <trama>...</trama> </film>
- Ora che abbiamo deciso cosa rappresentare dobbiamo decidere come visualizzarlo: poniamo il caso in cui in ogni nostra scheda vogliamo innanzitutto il titolo del film centrato ed in grassetto, successivamente la locandina, l'anno, la durata ed infine la trama in corsivo.
Possiamo ottenere tutto ciò dal seguente stylesheet
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="film"> [center][b]<xsl:value-of select="titolo"/>[/b][/center] [img]<xsl:value-of select="locandina"/>[/img] Anno: <xsl:value-of select="anno"/> Durata: <xsl:value-of select="durata"/> Trama: [i]<xsl:value-of select="trama"/>[/i] </xsl:template> </xsl:stylesheet>
Tralasciando gli aspetti specifici dell'XSL che non sono il tema di questo "tutorial", si dovrebbe comunque intuire che tale xsl estrarrà dall'xml definito in precedenza i dati necessari per generare un bbcode che rispecchi le nostre esigenze.
Un grosso vantaggio di tale implementazione è che ogni revisione dello Stylesheet si ripecuoterà in automatico a tutte le schede dei films presenti sul portale senza che questi debbano essere minimamente modificati.
Portiamo come esempio concreto la scheda di Sin City
<?xml version="1.0"?> <film> <locandina>http://upload.wikimedia.org/wikipedia/en/thumb/9/9e/Sincitypostercast.jpg/200px-Sincitypostercast.jpg</locandina> <titolo>Sin City</titolo> <anno>2005</anno> <durata>126'</durata> <trama> Il film comincia con una scena ambientata in una notte di pioggia, su una balconata di un grattacielo della violenta e corrotta Sin City, una ragazza impegnata ad ammirare il panorama notturno della città viene avvicinata e successivamente sedotta da un affascinante ragazzo. </trama> </film>
Tale scheda, applicata al modello sopra definito, produrrà il seguente ouput:
Sin City
Anno: 2005
Durata: 126'
Trama:
Il film comincia con una scena ambientata in una notte di pioggia, su una balconata di un grattacielo della violenta e corrotta Sin City, una ragazza impegnata ad ammirare il panorama notturno della città viene avvicinata e successivamente sedotta da un affascinante ragazzo.
Il supporto ai modelli in Osiris non è tuttavia ancora completo in quanto adesso l'utente è costretto a scrivere l'xml dei dati a mano (il che è impensabile ovviamente), in futuro invece verrà generata in dinamico un'interfaccia specifica sulla base del template scelto (ciò è possibile processando l'xsd) che chiederà all'utente i parametri specifici del modello selezionato (nell'esempio sopra riportato verrebbero generati 5 inputbox per l'inserimento della locandina, del titolo, dell'anno, della durata e della trama) e provvederà a generare l'xml finale

Help




















