Les calibres de XSL
|
Les processeurs de XSL analyse la source de XML et essaye de découvrir la règle assortie de calibre. Si elle la trouvent, alors les instructions à l'intérieur du calibre assorti est évaluées.
|
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>
|
|
Chemins d'endroit
|
Des parties du document de XML auquel le calibre devrait être appliqué sont déterminées par les chemins d'endroit. Une syntaxe exigée est indiquée dans des spécifications de XPath. Les cas simples semblent semblables à l'adressage de filesystem. voir le 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>
|
|
Le traitement toujours des débuts avec " de match= de calibre/« . C'est un élément de racine et son seulement enfant est l'élément de document, dans notre cas que c'est cours d'instruction de XSl. Plusieurs des stylesheets pas contient cet élément explicitement. Quand le calibre explicite n'existe pas implicite le calibre, qui contient l'instruction s'appelle. Ceci signifie : Il traite tous childrens du noeud courant, y compris les noeuds des textes.
|
Wildcard
|
Un calibre peut faire le match du choix des chemins d'un endroit, différents chemins étant séparés avec « | ». (voir le Stylesheet 1). Le wildcard * choisit toutes possibilités. Comparer le Stylesheet 1 au 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>
|
|
Modes de XSL
|
Des modes dans XSL permettent à l'élément d'être traité pendant des périodes multiples, chaque fois produisant le résultat différent. Dans le Stylesheet 2 un des modes n'existent pas.
|
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>
|
|
La priorité de calibre
|
Très souvent plusieurs des calibres font le match l'élément choisi dans la source de XML. Il devrait donc décider quel à employer. Des calibres sont commandés selon leur priorité qui peut être indiquée avec l'attributte prioritaire. Si un calibre ne contiennent pas cet attribut, sa priorité est calculée selon plusieurs règles.
|
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
|