a ã +-,/.1032-412656782 0 9 S-T/U1V3W-X1W6Y6Z8W V []\_^/` : : I foli i stile permettono la separazione ella forma al contenuto. Il concetto i folio i stile è quello i creare un ocumento separato che contena tutte le informazioni necessarie per la formattazione o la trasformazione i qualsiasi tipo i ati a cui si ecia i applicarlo. Vantai: Risparmio i tempo e maior praticità i estione el sito (se si esiera infatti moificare l'aspetto i un sito we non è necessario effettuare le correzioni in oni paina ma è sufficiente moificare il folio i stile per renere effettivi i camiamenti). Personalizzazione rafica, in quanto è l aspetto eli elementi è moificaile. Utilizzo i un unico folio i stile per formattare più ocumenti. Possiilità i aattare la formattazione al tipo i utente e evice che ha accesso ai ati.! " # $&% ' # ( $!) * ; < = >? @ A B > B C B DD? E GH B C? @ I B B < K > B < L M G N GO B > H GP? < H Q&= G R < K Q > P)B H GL B {- /}1~3-16 6 8 ~ ƒ] ˆ I foli i stile oi utilizzati sono essenzialmente i tre tipi: Š CSS (Cascain Style Sheet), utilizzati soprattutto per HTML. Š XSL (Extensile Stylesheet Lanuae), utilizzati per formattare un ocumento XML estinato alla stampa. Š XSLT (Extensile Shylesheet Lanuae Transformation), utilizzati per la trasformazione i un ocumento XML. XSL è un nuovo linuaio creato per efinire foli i stile che efiniscano la presentazione el ocumento. Il suo utilizzo implica l esistenza i un processore XSL che coifica la sorente XML nel moo efinito al folio i stile. c e f h i j f j k j ll m n op j k h q jr j s f j t u o v ow j f p ox p y&e o z s y f x)j p ot j Œ Ž Ž š Œ Ž Œ œ ž Ÿ Ž Œ & Œ Ž ) œ ÂÁ_Ã/Ä Ý Þ ßÂà áˆâ Per ottimizzare la visualizzazione i un file XML su ispositivi ifferenti. Il processo i costruzione i un nuovo ocumento si articola in ue passai: ä Trasformazione ell alero: costruire un alero i arrivo a partire all alero i partenza; la trasformazione ell alero permette la creazione i ocumenti sinificativamente ifferenti rispetto al ocumento i ase (permetteno a esempio la trasformazione in linuai ifferenti). Della trasformazione ell alero si occupa un sottolinuaio chiamato XSLT. ä ormattazione: i noi ell alero sono consierato come oetti ai quali venono applicate reole i formattazione. ª «± ²² ³ µ ± ª ¹ ª º» µ ¼ µ½ µ¾ ª &«µ À ª ¹ ¾) µº Å Æ Ç È É Ê Ë Ì È Ì Í Ì ÎÎÉ Ï Ð ÑÒ Ì Í É Ê Ó ÌÔ Ì Æ Õ È Ì Æ Ö Ñ Ø ÑÙ Ì È Ò ÑÚ É Æ Ò Û&Ç Ñ Ü Æ Õ Û È Ú)Ì Ò ÑÖ Ì
' H H H m m m "!$#&% AB CED G Data la sostanziale inipenenza i queste operazioni, il W3C ecise i separarle in ue parti: ( XSLT per efinire le trasformazioni. ( XSL per formattare il risultato. XSL ormattin Oject è stato creato per fornire ali sviluppatori uno strumento aile per controllare in moo preciso l impainazione e la isposizione ella paina, senza l utilizzo i elementi complessi (a esempio i frame). XSL:fo è simile a CSS per le proprietà utilizzate, anche se spesso le estene per arantire maiore controllo. ) * +, -. / 0, 0 1 0 22-3 4 56 0 1 -. 7 08 0 * 9, 0 * : ; 5 < 5= 0, 6 5> - * 6?+ 5 @ * 9?, >0 6 5: 0 AB CED Gacfe hi jlk Esistono quattro sottoclassi i proprietà XSL:fo: Proprietà interamente prese a CSS. Proprietà CSS estese con altri valori. Proprietà CSS suivise. Proprietà oriinali XSL. XSLT consente i trasformare un alero iniziale XML (source tree) in un altro alero (result tree) i cui elementi possono ifferire molto a quelli iniziali. Generalmente viene utilizzato per operare trasformazioni tra linuai iversi (a esempio a XML a HTML) o per coificare in moo automatico un ocumento asato su un linuaio troppo complesso (a esempio MathML). E quini sostanzialmente efiniile come un linuaio a alto livello, in rao i naviare per la struttura el ocumento e i acceere ai noi. I K L M N O P L P Q P RRM S T UV P Q M N W PX P Y L P Z [ U \ U] P L V U^ M V _K U ` Y _ L ^P V UZ P I K L M N O P L P Q P RRM S T UV P Q M N W PX P Y L P Z [ U \ U] P L V U^ M V _K U ` Y _ L ^P V UZ P ˆl ŠlŒf Žl Œ ŒE ˆl ŠlŒf Žl Œ ŒE E & I foli i stile XSLT hanno una struttura moulare per permettere i riutilizzare i mouli, ricominanoli in moo ifferente a secona elle necessità. Un folio i stile XSLT si apre con una ichiarazione che ientifica il tipo i ocumento e lo spazio ei nomi utilizzato: <xsl:stylesheet xmlns:xsl=http://www.w3.or/1999/xsl/transf orm version= 1.0 > Dopo la ichiarazione iniziale si trovano li elementi i primo livello. L elemento i primo livello eve necessariamente essere uno tra: ± <xsl:attriute-set> ± <xsl:ecimal format> ± <xsl:import> ± <xsl:inclue> ± <xsl:key> ± <xsl:namespace-alias> ± <xsl:output> ± <xsl:param> ± <xsl:preserve-space> ± <xsl:strip-space> ± <xsl:template> ± <xsl:variale> n o p q r s t u q u v u wwr x y z{ u v r s u} u o ~ q u o z z u q { zƒ r o { p z o ~ q ƒu { z u š œ ž ŸŸš ž š ª «š «
"!$#"%'& (")+*,%-%.&./10'2 45 6"7$8,9+:;,<-=>':?@;,A-B >DC,E 3 E anche possiile avere eli elementi i primo livello efiniti a sviluppatori o ali utenti. In enerali questo tipo i elementi, che si riferiscono a uno spazio ei nomi ifferente, sono efiniti ali sviluppatori i processori XSL, che creano eli elementi proprietari utili per eseuire eterminate funzioni complesse. Il processo i trasformazione avviene tramite l applicazione i reole ali elementi ell alero. Oni reola è efinita ell elemento <xsl:template> che possiee un attriuto match che ientifica l elemento ell alero a cui va applicata la reola. Oni reola possiee poi un corpo, chiamato template oy, nel quale sono espresse le istruzioni a eseuire e un elemento i chiusura (</xsl:template>). 45 6"7$8.È _ E'?@EDC"9aB 45 6"7$8.È _ E'?@EDC"9aB.ce'f Elementi utilizzati per efinire le reole e controllare il moo in cui sono invocate <xsl:template> <xsl:apply-template> <xsl:call-template> Elementi che efiniscono la struttura el folio i stile <xsl:stylesheet> <xsl:inclue> <xsl:import> Elementi usati per enerare un output <xsl:value-of> <xsl:element> <xsl:attriute> <xsl:comment> <xsl:processin-instruction> <xsl:text> Elementi utilizzati per efinire variaili e parametri <xsl:variale> <xsl:param> <xsl:with-param> G H I K L M N N O N PPK Q R ST N O K L U NV N H W N H X Y S Z S[ N T S\ K H T ]I S ^ H W ] \N T SX N G H I K L M N N O N PPK Q R ST N O K L U NV N H W N H X Y S Z S[ N T S\ K H T ]I S ^ H W ] \N T SX N 45 6"7$8.È _ E'?@EDC"9aB.c1.f 45 6"7$8.È _ E'?@EDC"9aB.cihDf Elementi utilizzati per copiare informazioni al ocumento sorente al ocumento estinazione <xsl:copy> <xsl:copy.of> Elementi utilizzati per creare istruzioni e processi conizionali e iterazioni <xsl:if> <xsl:choose> <xsl:when> <xsl:otherwise> <xsl:for-each> Elementi utilizzati per controllare l orine e la numerazione <xsl:sort> <xsl:numer> Elementi utilizzati per controllare il formato el ocumento output <xsl:output> G H I K L M N N O N PPK Q R ST N O K L U NV N H W N H X Y S Z S[ N T S\ K H T ]I S ^ H W ] \N T SX N G H I K L M N N O N PPK Q R ST N O K L U NV N H W N H X Y S Z S[ N T S\ K H T ]I S ^ H W ] \N T SX N
ø!"$#%"$&')(+*-,/.%0!"$#%"$&')(+*-,/.%0lknm!o 1 Microsoft ha aiunto un processore XSL, chiamato MSXML, al suo rowser fin al 1998, anno ella prima proposta pulica relativa a XSL. Con l avvento, a fine 1999, i XSLT, Microsoft ha però mantenuto invariato il processore interno a Internet Explorer, causano così seri prolemi i compatiilità. 1 Alcune elle iscrepanze fonamentali sono: 2 Per inserire un folio i stile all interno i un ocumento, Internet Explorer richiee la ichiarazione <?xml:stylesheet type='text/xsl' href='test.xsl'?> mentre la ichiarazione stanar, secono le specifiche W3C richieeree i assenare come valore all attriuto type text/xml. 2 All inizio el folio i stile XSL è necessario usare come spazio ei nomi xmlns:xsl="http://www.w3.or/tr/wd-xsl invece che xmlns:xsl=http://www.w3.or/1999/xsl/transf orm come previsto al W3C. 2 E inoltre carente il supporto per le nuove istruzioni. 3 4 5 6 7 8 9 : 6 : ; : <<7 = >?@ : ; 7 8 A :B : 4 C 6 : 4 D E??G : 6 @?H 7 4 @ I5? 4 C I 6 H: @?D : PRQS!TVU$WXW$SYQ[Z$\^] _`U!Q[aV\$_Z c!z }~V $ ƒ V Y ˆ% `Š! Š Œ Ž! Esistono processori isponiili a titolo ratuito che arantiscono un supporto elevato e conforme alle specifiche W3C. Tra questi: Salotron (www.inerall.com) XT (www.jclark.com) Xalan (xml.apache.or) Expat (www.jclark.com) Sono tre meccanismi correlati per il puntamento all interno i un file XML: XPATH permette i naviare tra i noi i un ocumento; XPOINTER utilizza XPATH per enerare link HTML; XLINK utilizza XPOINTER per enerare link HTMl estesi. Rispetto ai link HTML permettono i: Esprimere riferimenti relativi Definire link a parti i alero. Definire link con multiple sorenti e estinazioni. 3 4 5 6 7 8 9 : 6 : ; : <<7 = >?@ : ; 7 8 A :B : 4 C 6 : 4 D E??G : 6 @?H 7 4 @ I5? 4 C I 6 H: @?D : e f h i j k l h l m l nni o p qr l m i j s lt l f u h l f v w q x qy l h r qz i f r { q f u { h zl r qv l Œ V ^Ž % `! åævç^è é%ề ë!ì í%îï!ð%ñxò ó!ðvôyõ+öyð% `ó Permette i efinire inirizzamenti relativi Permette i puntare a interi frammenti i alero senza che sia presente un ancora. E utilizzato a XLINK per iniviuare risorse remote. URI: http://www.foo.or/ar.xml#xpointer(article /section[position() <= 5]) ±² ³ [µ$ ` `¹ º ` ¹» ¹ `² ¼ #xpointer(article/section[position() <= 5]) ½ ¾À ÂÁ`à ÄÅ Æ`ÇÆÈÉÇ ÆÊÊà Á`Ä ËÌ article/section[position() <= 5]) I frament ientifiers consistono in: ù Un elemento enotato a un ID (ientificato univocamernte nel ocumento) ù Una sequenza i numeri che efiniscono il percorso all elemnto raice all elemento ID. ù Una sequenza i termini xpointer(...) xpointer(...)... che contenono una lista i espressioni Xpointer (XPATH). š œ ž Ÿ œ ª «ª Í Î Ï Ð Ñ Ò Ó Ô Ð Ô Õ Ô ÖÖÑ Ø ÙÚ Ô Õ Ñ Ò Û ÔÜ Ô Î Ý Ð Ô Î Þ ß Ù à Ùá Ô Ð Ú Ùâ Ñ Î Ú ãï Ù ä Î Ý ã Ð âô Ú ÙÞ Ô
q ž ž "!$# &"')()"!+* '-,./!10- % XPATH è un linuaio ichiarativo utilizzato per l inirizzamento (Xpointer) e per il pattern matchin (XSLT). % Il costrutto principale è chiamato location path, costituito a uan sequenza i location steps separati a /. % Oni location step è valutato rispetto al suo contesto. % Location path è valutato composizionalmente, a sinistra a estra. % Oni location step ha la forma: axis :: noe-test [ preicate ] % axis seleziona un insieme i noi caniati. % noe-test effettua un primo filtro ei noi asanosi sul loro tipo (charata, processin instruction, etc.), o nome. % preicates (zero o piú) effettua il filtro piú complesso % I noi caniati che sopravvivono costituiscono il risultato ell espressione. "!$# 2 0"."0)34-* ' % Seleziona tutti li attriuti href neli elementi cite nelle prime 5 sezioni i un articolo. chil::section[position()<6]/escenant::cite /attriute::href "!$# 2 5"687"9 : ;1<>=@? A B C@D@E B G B H B I chil seleziona i fili el noo; escenant seleziona tutti i iscenenti; parent seleziona i enitori; ancestor seleziona tutti i iscenenti al noo raice ai enitori; followin-silin seleziona i emelli a estra; precein-silin seleziona i emelli a sinistra; followin seleziona tutti i noi successivi; precein seleziona tutti i noi preceenti; attriute seleziona li attriuti el noo; namespace seleziona la ichiarazione ello spazio ei nomi; self seleziona il noo stesso; escenant-or-self seleziona l unione i escenant e self; ancestor-or-self seleziona l unione i ancestor e self. c e"f$ h i j)k)l m n1o"p/n " $ ) š) 8œ ) " +œ E possiile effettuare un test ei noi per: r sut v w$x y text() noi carattere; y comment() noi commento; y processin-instruction() noi istruzione; y noe() tutti i noi. z Nome : y name noi con un eterminato nome y * qualsiasi noo I preicati consistono essenzialmente in espressioni a valutare. Possonoe ssere: z exp -> $variale z ( exp ) z literal z numeral z function ( aruments ) z oolean-expression z numerical-expression K L M N O P Q R N R S R TTO U V WX R S O P Y RZ R L [ N R L \ ] W ^ W_ R N X W` O L X am W L [ a N `R X W\ R { } ~ ~ ƒ ˆ ƒ Š ~ Œ Ž ~ ˆ ˆ } ~ ˆ Œ
¼ "!$# "%'&(&*) + %!!,% " $ˆ " 'Š(Š* Œ, Ž ' - //inreient[@name="flour"]/@amount. / 0 1$2 3 4 5 6 7$8 9,: ; //inreient[@amount='0.5' an @unit='cup']/@name < =*>?@ AB'CD?*> E"A?*GIH AA A K > ABBAB L"MNNO*P Q*R R O ST QQU Q V UT M*P W Q*XY X Z V [ \ ]*^_ ` a* c* efh ij kf //inreient[@name="stock"]/preparation/st ep[position()=3]/text() * š œ* ž' Ÿ *š *š I š * ªª «* «± *² * ³ hµ * *¹º *¹» ½ ¾ À Á¾Â Ã Ä ¾*Å ÆÀ Á Ã Ä Á*ÄÄ Á*Å ÇÈ*Å ÉÆ ¾*É Ê Æ ¾*À Ë Ì ÍÏÎÐ*Ñ ÒÎ"Ó Ô Î Ô ÎÕÓ Ö Ò Ø Î*ÙÕ*Ú Ð Û ÎÓ Ü ÝÞ ß ß"Î*Ù ÕÓ Û ÎÕÝÓ à á â*ãä åhæ â'ç"è*é ê è á êè*ä æ ë åæ âìé í l m n o p q r s o s t s uup v w xy s t p q z s{ s m o s m } ~ x x s o y x p m y n x ƒ m o s y x} s XPOINTER permette i inirizzare non solo noi ma frammenti i alero, nello specifico permette i inirizzare un qualsiasi punto el ocumento, che è costituito a un qualsiasi elemento che precee o seue un carattere in un noo. Seleziona il primo carattere i tutti i noi caattere el ocumento. /escenant::text()/point()[position()=0]!" #$" " &%! ' ( )( *( +&,-.. /102 ( 3/&45-*( + )5-&/.76-2 38( )- 9: ; ; <= :>?< @ /section[1] to /section[3] î ï ð ñ ò ó ô õ ñ õ ö õ ò ø ù úû õ ö ò ó ü õý õ ï þ ñ õ ï ÿ ú ú õ ñ û ú ò ï û ð ú ï þ ñ õ û úÿ õ