i fogli di stile xsl – 2 –. selezioni multiple : serve per applicare una regola in modo...
TRANSCRIPT
![Page 1: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/1.jpg)
I fogli di stile
XSL – 2 –
![Page 2: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/2.jpg)
Selezioni multiple
<xsl:for-each>: serve per applicare una regola in modo ricorsivo a nodi figli dell’elemento contestuale. Attributo select obbligatorio
<xsl:value-of>: serve per selezionare a quali fra gli elementi selezionati da <xsl:for-each> si deve applicare la regola. Attributo select obbligatorio
![Page 3: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/3.jpg)
Un esempio<?xml version="1.0"?><xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:output method="html" indent="yes" /><xsl:template match="/">
<html><head><title>Antologia</title></head><body> <xsl:apply-templates /></body></html></xsl:template><xsl:template match="titolo"><p><center><xsl:apply-templates /></center></p></xsl:template>
<xsl:template match="stanza"><xsl:for-each select="verso"> <xsl:value-of select="." /><br/></xsl:for-each><br/> </xsl:template>
</xsl:stylesheet>
Alternativa:<xsl:template match=“stanza"><xsl:apply-templates /><br/> </xsl:template>
<xsl:template match="verso"><xsl:apply-templates /><br/> </xsl:template>
Alternativa 2:<xsl:template match=“stanza|verso"><xsl:apply-templates /><br/> </xsl:template>
![Page 4: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/4.jpg)
Nel dettaglio…<xsl:template match="stanza">
“stanza” nodo contestuale
<xsl:for-each select="verso"> “verso” figlio dell’elemento contestuale e nuovo nodo contestuale
<xsl:value-of select="." />”.” = tutti i nodi selezionati
<br/>a capo dopo un verso
</xsl:for-each><br/> riga vuota dopo una stanza
</xsl:template>
![Page 5: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/5.jpg)
Selezionare nodi per l’attributo select:XPathDove:
<xsl:apply-templates> <xsl:for-each> <xsl:value-of> <xsl:when> <xsl:if> <xsl:sort> <xsl:copy-of> …
![Page 6: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/6.jpg)
XPath Raccomandazione W3C (16 novembre
1999) Consta di espressioni Oltre a quelle viste per l’attributo match
consente di: Trovare nodi anche per padri/antenati e
fratelli del nodo contestuale. Restituire valori booleani, stringhe, valori
numerici.
![Page 7: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/7.jpg)
Espressioni XPath: percorsi di locazione Un percorso di locazione è costituito da
passi di locazione separati da / o da // Locazioni:
Assolute: cominciano con / parte dal nodo radice
Es: “/verso” tutti gli elementi <verso> figli diretti dell’elemento radice
Relative: cominciano senza / parte dal nodo contestuale
Es: “verso” tutti gli elementi <verso> figli del nodo contestuale
![Page 8: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/8.jpg)
Un passo di locazione è costituito da: un asse: esprime la relazione di parentela
del nodo da selezionare rispetto al nodo contestuale o all’elemento radice
un nodo test: il nodo di cui si vuole testare l’esistenza e a cui si vuole applicare una regola
zero o più predicati: una caratteristica del nodo selezionato
![Page 9: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/9.jpg)
Esempiochild::verso[position() = 1]
child:: è l’asse (qui: figlio del nodo contestuale) verso è il nodo test (il nodo da selezionare) [position() =1] è il predicato (qui: il primo
elemento)
= “fra tutti gli elementi <verso> figli del nodo contestuale, selezionare il primo”
![Page 10: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/10.jpg)
Tipi di Assi
Asse Sintassi abbreviata
ancestor
ancestor-or-self
attribute @
child nome_figlio
descendant
descendant-or-self //
following
following-sibling
namespace
parent ..
preceeding
preceding-sibling
self .
![Page 11: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/11.jpg)
Esempi di assiEsempio Sintassi abbreviata
child::verso verso
child::* *
attribute::rima @rima
descendant::verso //verso
ancestor::stanza
ancestor-or-self::stanza
descendant-or-self::verso
self::verso
child::stanza/descendant::verso stanza//verso
/
/descendant::stanza
/descendant::stanza/child::verso //stanza/verso
self::* .
![Page 12: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/12.jpg)
Esempio<?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:output method="html" indent="yes" /><xsl:template match="/">
<html><head><title>Antologia</title></head><body> <xsl:apply-templates /></body></html></xsl:template>
<xsl:template match="titolo"><p><center><xsl:apply-templates /></center></p></xsl:template>
<xsl:template match="stanza"><xsl:for-each select="child::verso"> <xsl:value-of select="self::*" /><br/></xsl:for-each><br/> </xsl:template></xsl:stylesheet> antologia4.xml
![Page 13: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/13.jpg)
Visualizzare il teiHeader: la root<xsl:template match="/"><html>
<head><title> <xsl:apply-templates select="//titleStmt/title" /></title>
</head><body>
<xsl:apply-templates /></body>
</html></xsl:template>
![Page 14: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/14.jpg)
Visualizzare il teiHeaderPossibilità 1: ogni elemento un template
<xsl:template match="fileDesc"><xsl:apply-templates select="titleStmt"/></xsl:template>
<xsl:template match="titleStmt"><xsl:apply-templates select="title | author" />
</xsl:template>
<xsl:template match="title"><h2><xsl:apply-templates /></h2>
</xsl:template>
<xsl:template match="author"><h3><xsl:apply-templates /></h3>
</xsl:template>
![Page 15: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/15.jpg)
Visualizzare il teiHeaderPossibilità 2: un template unico
<xsl:template match="fileDesc"><h2>
<xsl:apply-templates select="titleStmt/title" /></h2><h3>
<xsl:apply-templates select="titleStmt/author" /></h3></xsl:template> fileDesc.xml
![Page 16: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/16.jpg)
Gestire più entrate omogeneeEs:<change> <date>20 aprile 2004</date> <respStmt> <resp>Codifica a cura di</resp> <name>Elena Pierazzo</name> </respStmt> <item>Correzione della Codifica</item> </change><change> <date>15 aprile 2004</date> <respStmt> <resp>Codifica a cura di</resp> <name>Elena Pierazzo</name> </respStmt> <item>Codifica TEI Lite</item> </change>
![Page 17: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/17.jpg)
Questo:<xsl:template match="revisionDesc"><h4>Storia del documento:</h4><ul>
<li><b><xsl:apply-templates select="change/date" /></b>: <xsl:apply-templates select="change/respStmt/resp" /> <xsl:text> </xsl:text> <xsl:apply-templates
select="change/respStmt/name"/> — <xsl:apply-templates select="change/item" /> </li>
</ul></xsl:template>
Dà prova.xml
![Page 18: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/18.jpg)
<xsl:apply-templates/> in questo caso non va bene perché mettere ogni occorrenza del medesimo elemento una di seguito all’altra
<xsl:for-each>!
![Page 19: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/19.jpg)
Invece quest’altro…<xsl:template match="revisionDesc"><h4>Storia del documento:</h4><ul><xsl:for-each select="change">
<li><b><xsl:value-of select="date" /></b>: <xsl:value-of select="respStmt/resp" /> <xsl:text> </xsl:text> <xsl:value-of select="respStmt/name" /> — <xsl:value-of
select="item" /></li>
</xsl:for-each></ul></xsl:template>
Dà prova2.xml!
![Page 20: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/20.jpg)
<xsl:apply-templates> quando:1. Quando si vuole processare tutti i nodi
figlio allo stesso modo
<xsl:template match="/"><html><head></head><body> <xsl:apply-templates /></body></html></xsl:template>
![Page 21: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/21.jpg)
<xsl:apply-templates> quando:2. Quando si vuole selezionare un particolare nodo figlio e si
vuole ignorare gli altri
<xsl:template match="fileDesc"><h2>
<xsl:apply-templates select="titleStmt/title" /></h2><h3>
<xsl:apply-templates select="titleStmt/author" /></h3><!-- manca respStmt --><p><b>Edizione pubblicata da:</b><xsl:apply-templates select="publicationStmt/publisher" /></p>
<xsl:apply-templates select="sourceDesc" /></xsl:template>
![Page 22: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/22.jpg)
<xsl:apply-templates> quando:3. Quando si vuole selezionare i figli di un nodo e disporli in
ordine diverso rispetto a quello che hanno nel documento XML
<xsl:template match="fileDesc"><h3>
<xsl:apply-templates select="titleStmt/author" /></h3><h2>
<xsl:apply-templates select="titleStmt/title" /></h2>
<xsl:apply-templates select="sourceDesc" />
<p><b>Edizione pubblicata da:</b><xsl:apply-templates select="publicationStmt/publisher" /></p>
</xsl:template>
![Page 23: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/23.jpg)
<xsl:apply-templates> quando:4. Quando si vuole richiamare un template definito
dopo
<xsl:template match="fileDesc"><h2>
<xsl:apply-templates select="titleStmt/title" /></h2><xsl:apply-templates select="sourceDesc" /></xsl:template>
<xsl:template match="sourceDesc"><xsl:for-each select="bibl"> <b>Fonte:</b><br /> <xsl:value-of select="author" /> <br /></xsl:for-each></xsl:template>
![Page 24: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/24.jpg)
<xsl:for-each> quando: Quando si vuole processare tutte le istanze di un figlio di un
nodo separatamente e ricorsivamente
<xsl:template match="revisionDesc"><h4>Storia del documento:</h4><ul><xsl:for-each select="change"><li><b><xsl:value-of select="date" /></b>:<xsl:value-of select="respStmt/resp" /> <xsl:text> </xsl:text><xsl:value-of select="respStmt/name" /> —<xsl:value-of select="item" /></li>
</xsl:for-each></ul>
</xsl:template>
![Page 25: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/25.jpg)
Perché questo non va:<xsl:template match="revisionDesc"><h4>Storia del documento:</h4><ul>
<li><b><xsl:apply-templates select="change/date" /></b>: <xsl:apply-templates select="change/respStmt/resp" /> <xsl:text> </xsl:text> <xsl:apply-templates select="change/respStmt/name"/> — <xsl:apply-templates select="change/item" /> </li>
</ul></xsl:template>
![Page 26: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/26.jpg)
Nel dettaglio:<li><b><xsl:apply-templates select="change/date" /> prende tutte le <date>
all’interno di <change> e le mette una di seguito all’altra</b>: <xsl:apply-templates select="change/respStmt/resp" />prende tutte i <resp> all’interno di <change> e di <respStmt> e li mette uno
di seguito all’altro <xsl:text> </xsl:text> <xsl:apply-templates select="change/respStmt/name"/>prende tutte i <name> all’interno di <change> e di <respStmt> e li mette
uno di seguito all’altro — <xsl:apply-templates select="change/item" />prende tutte i <resp>
all’interno di <change> e li mette uno di seguito all’altro </li>
Esercizio 36
![Page 27: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/27.jpg)
<xsl:element> <xsl:attribute><xsl:element>: crea un nuovo elemento
nell’output
<xsl:attribute>: crea un nuovo attributo per un elemento dichiarato
![Page 28: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/28.jpg)
Esempio<xsl:template match=“/”><html><xsl:apply-templates/></html></xsl:template>
<xsl:template match="teiHeader"><table border='1‘><tr><td><xsl:apply-templates /></td></tr></table></xsl:template>
<xsl:template match=“/”><xsl:element name=“html”><xsl:apply-templates/><xsl:element></xsl:template>
<xsl:template match="teiHeader"><table><xsl:attribute
name=“border”>1</xsl:attribute><tr><td><xsl:apply-templates /></td></tr></table></xsl:template>
![Page 29: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/29.jpg)
Inserire le immagini in un file TEI<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="es25.xsl"?><!DOCTYPE TEI.2 PUBLIC "-//TEI//DTD TEI Lite XML ver. 1//EN""c:/TEI-EMACS/xml/dtds/tei/teixlite.dtd" [
<!ENTITY mummie1.jpg SYSTEM "mummie1.jpg" NDATA JPEG><!ENTITY mummie2.jpg SYSTEM "mummie2.jpg" NDATA JPEG><!ENTITY mummie3.jpg SYSTEM "mummie3.jpg" NDATA JPEG><!ENTITY mummie4.jpg SYSTEM "mummie4.jpg" NDATA JPEG><!ENTITY mummie5.jpg SYSTEM "mummie5.jpg" NDATA JPEG>
]>
![Page 30: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/30.jpg)
Elemento <figure>
<head type="numerale">XIV <figure entity="mummie1.jpg">
<figDesc>Pagina 1</figDesc> </figure></head>
![Page 31: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/31.jpg)
Visualizzazione<xsl:template match="figure"><img><xsl:attribute name="src"><xsl:apply-templates select="@entity" /></xsl:attribute><xsl:attribute name="alt"><xsl:apply-templates select="figDesc" /></xsl:attribute><xsl:attribute name="border">0</xsl:attribute><xsl:attribute name="width">100%</xsl:attribute><xsl:attribute name="heigth">100%</xsl:attribute></img></xsl:template>
![Page 32: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/32.jpg)
Risultato
<img src=“mummie1.jpg” alt=“Pagina 1” border=“0” width=“100%” height=“100%”>
mummie.xml
![Page 33: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/33.jpg)
Visualizzare le note: il testo
<head type="descrittivo">DIALOGO DI <name>FEDERICO RUYSCH</name> E DELLE SUE
MUMMIE<note n="39" place="end">Vedi, tra gli altri, circa queste
famose mummie, che in linguaggio scientifico si direbbero preparazioni anatomiche, il
<bibl><author>Fontenelle</author> <title lang="fra">Eloge de <abbr expan="monsignore"
type="title">mons.</abbr> <name>Ruysch</name></title></bibl>.</note>
</head>
![Page 34: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/34.jpg)
HTML da ottenere<h3>DIALOGO DI FEDERICO RUYSCH E DELLE SUE MUMMIE<sup><a href=“#39”>39</a></sup></h3>
<!-- qui tutto il testo -->
<div> <hr><p><a name=“39”><b>39.</b></a> Vedi, tra gli
altri…</p></div>
![Page 35: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/35.jpg)
Il rimando…<xsl:template match="note"><sup><a><xsl:attribute name="href">#<xsl:apply-templates select="@n"/></xsl:attribute><xsl:apply-templates select="@n"/></a></sup></xsl:template>
![Page 36: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/36.jpg)
…e il testo<xsl:template match="body"><body><xsl:apply-templates /><div><hr/><xsl:for-each select="//note"><p><a><xsl:attribute name="name"><xsl:value-of select="@n" /></xsl:attribute></a><b><xsl:value-of select="@n" />.</b><xsl:text> </xsl:text> <xsl:value-of select="." /></p></xsl:for-each></div></body></xsl:template> mumm 22xmlie
![Page 37: I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb5a497959361e8c78b0/html5/thumbnails/37.jpg)
Attenzione: non usare due <body>!<xsl:template match="/"><html>
<head><title> <xsl:apply-templates select="//titleStmt/title" /></title>
</head><body>
<xsl:apply-templates /></body>
</html></xsl:template>
<xsl:template match="body"><body>
…</body></xsl:template>