In XSLT we may need to use same template for different xml data tags, and also there might be a situation where we need to send some special instructions to template tag to act upon give condition or value and produce/process the xml data.
Data.xml
XSLT.xsl
Explanation:-
<xsl:template match="ol/li"> tag in XSLT is calling the
<xsl:template name="numbered-block"> without any parameter in it so when the matching template is fetched then
<xsl:param name="format">1. </xsl:param> is set and used for that template.
When same template is called with
<xsl:with-param name="format">a ) </xsl:with-param> then any local parameter in it with same name will be ignored, like format parameter is being passes with value "a." then local param in <template name="numbered-block"> tag with value as <xsl:param name="format">1. </xsl:param> is being ignored.
Thanks...
Stay tuned for more updates....... Menu list is growing.......
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version='1.0'?> <?xml-stylesheet type="text/xsl" href="XSLT.xsl"?> <lists> <ol> <li>the</li> <li>cat</li> <ol> <li>sat</li> <li>on</li> <li>the</li> </ol> <li>mat</li> </ol> </lists> |
XSLT.xsl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <!-- Calling template from here without any parameter --> <xsl:template match="ol/li"> <br/> <xsl:call-template name="numbered-block"/> </xsl:template> <!-- Calling template from here with "format" parameter --> <xsl:template match="ol/ol/li"> <br/>    <xsl:call-template name="numbered-block"> <xsl:with-param name="format">a ) </xsl:with-param> </xsl:call-template> </xsl:template> <!-- Calling template here --> <xsl:template name="numbered-block"> <!--Calling this template without any parameter then format 1. will be shown on browser. --> <xsl:param name="format">1. </xsl:param> <fo:block> <!--Calling this template with a parameter then this format will be shown on browser. {$format} is used to catch the incoming format value, in this case the value is "a ) "--> <xsl:number format="{$format}"/> <xsl:apply-templates/> </fo:block> </xsl:template> </xsl:stylesheet> |
Explanation:-
<xsl:template match="ol/li"> tag in XSLT is calling the
<xsl:template name="numbered-block"> without any parameter in it so when the matching template is fetched then
<xsl:param name="format">1. </xsl:param> is set and used for that template.
When same template is called with
<xsl:with-param name="format">a ) </xsl:with-param> then any local parameter in it with same name will be ignored, like format parameter is being passes with value "a." then local param in <template name="numbered-block"> tag with value as <xsl:param name="format">1. </xsl:param> is being ignored.
Thanks...
Stay tuned for more updates....... Menu list is growing.......
Comments
Post a Comment
Thanks in anticipation.