Skip to main content

Calling xslt template with param tag by pran sukh on Python Hunter

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
 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/>&#xA0;&#xA0;&#xA0;
   <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

Popular posts from this blog

Understanding the usage of underscore( _ ) of Python for beginner. On Python Hunter

Introduction: Just like you, a newbie in python scripting language, me too was confused about lot of new things in python that are not valid or available in other languages like Java, .Net etc. Just like other things i had seen the use of '_' underscore in python, at beginning level that flabbergasted me for a while.      With some research and practice i have summarised the following usage of '_' underscore in python. Hope you will find it helpful at beginning level. First Usage : Hold the previous output value. When used in interpreter. 1 2 3 4 5 6 7 _ = input () # For example you typed '5' print (_) # This will print '5' print ( int ( _ ) * int ( _ ) ) # This will print '25' print ( int ( _ ) + 10 ) The above will print '15', because last input was "5" and in above   line of code is producing '25' as output but not being handl

XML, XSLT info by pran sukh on Python Hunter blog.

What is XML? Many computer systems contain data in incompatible formats. Exchanging data between incompatible systems (or upgraded systems) is a time-consuming task for web developers. Large amounts of data must be converted, and incompatible data is often lost. XML stores data in plain text format. This provides a software- and hardware-independent way of storing, transporting, and sharing data. XML also makes it easier to expand or upgrade to new operating systems, new applications, or new browsers, without losing data. With XML, data can be available to all kinds of "reading machines" like people, computers, voice machines, news feeds, etc. XML:- 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 34 35 36 37 38 39 40 41 42 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category= "cooking" > <title lang= "en" > Every

XSLT applyTemeplate tag by pran sukh on Python Hunter.

XSLT is used for presenting XML data in well structured way and in eye appealing sense. In XSLT we can define different templates and maintain criteria for XSLT processor to parse the XML data in and apply different template for different XML tags. Lets examine following example XML DATA. 1 2 3 4 5 6 7 8 9 10 <student id= "1" eCode= "e1" > <firstName> Python 1 </firstName> <lastName> Hunert 1 </lastName> <dob> <day> 01 </day> <month> Jan </month> <year> 1991 </year> </dob> <course> Programmer </course> </student> In above XML data we want to present student id with dark background and eCode with red background colors, First Name in blue color, last name in green color and date of birth in different modes, so it will look like this. Source File:- XML_DATA.xml 1 2 3 4 5 6 7 8 9 10