Le mascherine di XSL
|
I processor di XSL analizza la fonte di XML e prova a scoprire la regola di corrispondenza della mascherina. Se la trova, allora le istruzioni all'interno della mascherina di corrispondenza � valutata.
|
XML source
<?xml version="1.0"?>
<xslTutorial >
<bold>Hello, world.</bold>
<red>I am </red>
<italic>fine.</italic>
</xslTutorial>
|
HTML output 1
<P>
<B>Hello, world.</B></P>
<P style="color:red">I am </P>
<P>
<i>fine.</i></P>
|
|
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="bold">
<P><B><xsl:value-of select="."/></B></P>
</xsl:template>
<xsl:template match="red">
<P style="color:red"><xsl:value-of select="."/></P>
</xsl:template>
<xsl:template match="italic">
<P><i><xsl:value-of select="."/></i></P>
</xsl:template>
</xsl:stylesheet>
|
|
Percorsi di posizione
|
Le parti del documento di XML a cui la mascherina dovrebbe essere applicata sono determinate dai percorsi di posizione. Una sintassi richiesta � specificata nella specifica di XPath. I casi semplici sembrano simili al richiamo del filesystem. vedere Stylesheet 1
|
XML source
<?xml version="1.0"?>
<xslTutorial >
<AAA id='a1' pos='start'>
<BBB id='b1'/>
<BBB id='b2'/>
</AAA>
<AAA id='a2'>
<BBB id='b3'/>
<BBB id='b4'/>
<CCC id='c1'>
<DDD id='d1'/>
</CCC>
<BBB id='b5'>
<CCC id='c2'/>
</BBB>
</AAA>
</xslTutorial>
|
HTML output 1
<DIV style="color:purple">BBB id=b1</DIV>
<DIV style="color:purple">BBB id=b2</DIV>
<DIV style="color:purple">BBB id=b3</DIV>
<DIV style="color:purple">BBB id=b4</DIV>
<DIV style="color:red">DDD id=d1</DIV>
<DIV style="color:purple">BBB id=b5</DIV>
|
|
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="BBB">
<DIV style="color:purple">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</DIV>
</xsl:template>
<xsl:template match="/xslTutorial/AAA/CCC/DDD">
<DIV style="color:red">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</DIV>
</xsl:template>
</xsl:stylesheet>
|
|
L'elaborazione sempre inizio con "/�del match= della mascherina. Ci� � un elemento della radice ed il relativo soltanto bambino � l'elemento del documento, nel nostro caso che � lezione privata di XSl. Molti degli stylesheets non contengono questo elemento esplicitamente. Quando la mascherina esplicita non esiste implicito la mascherina, che contiene l'istruzione � denominata. Ci� significa: Procede tutti i childrens del nodo corrente, compreso i nodi del testo.
|
Metacarattere
|
Una mascherina pu� fare il fiammifero dalla selezione dei percorsi di posizione, diversi percorsi che sono separati con �|�. (vedere Stylesheet 1). Il metacarattere * seleziona tutte le possibilit�. Paragonare lo Stylesheet 1 allo Stylesheet 2.
|
XML source
<?xml version="1.0"?>
<xslTutorial >
<employee>
<firstName>Joe</firstName>
<surname>Smith</surname>
</employee>
</xslTutorial>
|
HTML output 1
<DIV>[template: firstName outputs Joe ]</DIV>
<DIV>[template: surname outputs Smith ]</DIV>
|
|
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="firstName|surname">
<DIV><xsl:text> [template: </xsl:text>
<xsl:value-of select="name()"/>
<xsl:text> outputs </xsl:text>
<xsl:apply-templates/ >
<xsl:text> ]</xsl:text> </DIV>
</xsl:template>
</xsl:stylesheet>
|
XSL stylesheet 2
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="*">
<DIV><xsl:text> [template: </xsl:text>
<xsl:value-of select="name()"/>
<xsl:text> outputs </xsl:text>
<xsl:apply-templates/ >
<xsl:text> ]</xsl:text> </DIV>
</xsl:template>
</xsl:stylesheet>
|
|
XSL Modes
|
I modi in XSL permettono che l'elemento sia proceduto per i periodi multipli, ogni volta fornendo il risultato differente. Nello Stylesheet 2 uno dei modi non esiste.
|
XML source
<?xml version="1.0"?>
<xslTutorial >
<AAA id='a1' pos='start'>
<BBB id='b1'/>
<BBB id='b2'/>
</AAA>
<AAA id='a2'>
<BBB id='b3'/>
<BBB id='b4'/>
<CCC id='c1'>
<CCC id='c2'/>
</CCC>
<BBB id='b5'>
<CCC id='c3'/>
</BBB>
</AAA>
</xslTutorial>
|
HTML output 1
<DIV style="color:red">CCC id=c1</DIV>
<DIV style="color:red">CCC id=c2</DIV>
<DIV style="color:red">CCC id=c3</DIV>
<DIV style="color:blue">CCC id=c1</DIV>
<DIV style="color:blue">CCC id=c2</DIV>
<DIV style="color:blue">CCC id=c3</DIV>
<DIV style="color:purple">CCC id=c1</DIV>
<DIV style="color:purple">CCC id=c2</DIV>
<DIV style="color:purple">CCC id=c3</DIV>
|
|
XSL stylesheet 1
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/">
<xsl:apply-templates select="//CCC" mode="red"/>
<xsl:apply-templates select="//CCC" mode="blue"/>
<xsl:apply-templates select="//CCC"/>
</xsl:template>
<xsl:template match="CCC" mode="red">
<DIV style="color:red">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</DIV>
</xsl:template>
<xsl:template match="CCC" mode="blue">
<DIV style="color:blue">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</DIV>
</xsl:template>
<xsl:template match="CCC">
<DIV style="color:purple">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</DIV>
</xsl:template>
</xsl:stylesheet>
|
XSL stylesheet 2
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/">
<xsl:apply-templates select="//CCC" mode="red"/>
<xsl:apply-templates select="//CCC" mode="yellow"/>
</xsl:template>
<xsl:template match="CCC" mode="red">
<DIV style="color:red">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</DIV>
</xsl:template>
<xsl:template match="CCC">
<DIV style="color:purple">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</DIV>
</xsl:template>
</xsl:stylesheet>
|
|
The Template Priority
|
Varie delle mascherine abbinano molto spesso l'elemento selezionato nella fonte di XML. Dovrebbe quindi essere deciso quale da usare. Le mascherine sono ordinate secondo la loro priorit� che pu� essere specificata con il attributte di priorit�. Se una mascherina non contiene questo attributo, la relativa priorit� � calcolata secondo parecchie regole.
|
Keywords XSL Templates, xsl template, xslt template, xsl apply templates, xsl call template,
xsl template match, xsl apply template, asp net templates, xslt call template,
xls templates, invoice xls, xls template, xslt template match, xslt apply templates,
xslt templates, xsl for each, stylesheet templates, xslt apply template, xsl value of,
stylesheet template, asp net xsl, xml templates, xsl template mode, xls forms,
templates xsl, template in xsl
|