Recupero dei dati in un file XML
Applicare un foglio di stile per la trasformazione di un file XML
Potremmo ipotizzare tre livelli, che corrispondono a tre macro aree di analisi e quindi a tre modelli o a tre punti di vista:
Non è obbligatorio scegliere uno dei tre modelli; tutti e tre possono essere rappresentati in fase di markup o meglio il modello elaborato può contemplare elementi che provengono dai tre diversi livelli della modellizzazione.
PROSA
I paragrafi che costituiscono una divisione testuale dovrebbero
essere marcati con <p>
<body>
...
<p>A seguitare, non ci saremmo mai intesi; perché se a me
stava a cuore la tigre, a lei il cacciatore. </p>
...
</body>
LIRICA
<l> contiene una singola linea, anche incompleta,
di un verso.
<lg> contiene un gruppo di versi che costituiscono un'unità formale, per esempio una stanza, una terzina, un refrain, un paragrafo in versi, etc.
<lg n=‘I’>
<l>Spesso il male di vivere ho incontrato:</l>
<l>era il rivo strozzato che gorgoglia,</l>
<l>era l'incartocciarsi della foglia</l>
<l>riarsa, era il cavallo stramazzato.</l>
</lg>
(da Ossi di seppia di Eugenio Montale)
Testi drammatici
<sp> contiene una singola battuta in un testo drammatico, o un brano presentato come tale (cioè per la recitazione) in un testo in prosa o in versi. Tra gli attributi: @who: identifica il soggetto parlante
<speaker> contiene una forma particolare di intestazione o etichetta, che fornisce i nomi di uno o più parlanti in un testo o frammento drammatico.
Testi drammatici
<stage> contiene qualsiasi tipo di didascalie e direttive di scena all'interno di un testo o di un frammento di testo drammatico. Tra gli attributi:
@type: indica il tipo di direttiva di scena. I valori consigliati includono ENTRATA, USCITA, MESSA IN SCENA, DIZIONE, etc.
<body>
<div1 type="act" n="1">
<head>Act One</head>
<div2 type="scene" n="1">
<stage>Pa Ubu, Ma Ubu</stage>
<sp>
<speaker>Pa Ubu</speaker>
<p>Pschitt!</p>
</sp>
</div2>
<div2 type="scene" n="2">
<stage>A room in Pa Ubu's house, where a magnificent
collation is set out</stage>
</div2>
</div1>
SCHEMA
XML
XQUERY
XSLT
Linguaggi relativi all'XML o altri linguaggi di visualizzazione
HTML
ePub
- Per poter trasformare un documento o recurare annotazioni, c'è bisogno di un linguaggio base per selezionare nodi in un documento XML
- Manipolare dati attraverso funzioni
XPath è l'acronimo di XML Path Language
XPath utilizza la sintassi "path like" per identificare e navigare i nodi in un documento XML
XPath contiene oltre 200 funzioni integrate
XPath è un elemento importante nello standard XSLT
XPath è una raccomandazione W3C
Le espressioni XPath permettono di ”navigare” l’albero del
documento XML usando assi di navigazione (expression axes).
.
nodename | Selects all nodes with the name "nodename" |
---|---|
/ | Selects from the root node |
// | Selects nodes in the document from the current node that match the selection no matter where they are |
. | Selects the current node |
.. | Selects the parent of the current node |
@ | Selects attributes |
XSLT (Extensible Stylesheet Language Transformations)è un linguaggio per trasformare documenti XML in altri documenti XML, o in altri formati come HTML per pagine Web, testo normale o oggetti di formattazione XSL, che possono successivamente essere convertiti in altri formati, come PDF, PostScript e PNG.
Provate a farlo con l'elemento <stage>
Quanti versi ci sono? <l>
/TEI/text/body/div/div/sp
//sp[@who='#Barnardo']
L'attributo si richiama con il simbolo @
count(//sp[@who='#Barnardo'])
Xpath ha delle funzioni
un particolare costrutto sintattico di un determinato linguaggio di programmazione che permette di raggruppare, all'interno di un programma
//div/div[string-length(.) > 20000]
Xpath ha delle funzioni
un particolare costrutto sintattico di un determinato linguaggio di programmazione che permette di raggruppare, all'interno di un programma
avg(//div/div/string-length(.))
Xpath ha delle funzioni
un particolare costrutto sintattico di un determinato linguaggio di programmazione che permette di raggruppare, all'interno di un programma
<xsl:text>Number of speeches:</xsl:text>
<xsl:value-of select="count(//sp)"/>
Aggiungiamo qualche istruzione
<xsl:text>Number of acts:</xsl:text>
<xsl:value-of select=""/>
Aggiungiamo - <xsl:value-of select="count(//body/div)"/>