Os moldes de XSL
|
Os processadores de XSL analisam gramaticalmente a fonte de XML e tentam-na encontrar para fora a régua combinando do molde. Se a encontrar, as instruções dentro do molde combinando estão avaliadas então.
|
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>
|
|
Trajetos da posição
|
As partes do original de XML a que o molde deve ser aplicado são determinadas pelos trajetos da posição. Uma sintaxe requerida é especificada na especificação de XPath. Os casos simples olham similares a dirigir-se do filesystem. ver 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>
|
|
Processar sempre começos com " do match= do molde/“. Este é um elemento da raiz e sua somente criança é o elemento do original, em nosso caso que é Tutorial de XSl. Muitos dos stylesheets não contêm este elemento explicitamente. Quando o molde explícito não existe implícito o molde, que contem a instrução está chamado. Isto significa: Processa todos os childrens do nó atual, including os nós do texto.
|
Wildcard
|
Um molde pode fazer o fósforo da seleção de trajetos de uma posição, trajetos individuais que estão sendo separados com “|”. (ver Stylesheet 1). O wildcard * seleciona todas as possibilidades. Comparar o Stylesheet 1 com o 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>
|
|
Modalidades de XSL
|
As modalidades em XSL permitem que o elemento seja processado por épocas múltiplas, cada vez produzindo o resultado diferente. No Stylesheet 2 uma das modalidades não existe.
|
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>
|
|
A prioridade do molde
|
Muito frequentemente diversos dos moldes combinam o elemento selecionado na fonte de XML. Deve-se conseqüentemente decidir-se que a se usar. Os moldes são requisitados de acordo com sua prioridade que pode ser especificada com o attributte da prioridade. Se um molde não contiver este atributo, sua prioridade está calculada de acordo com diversas réguas.
|
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
|