Skip to main content

Fallback tag in xslt by pran sukh on python hunter blog.

Fallback: As the name is self explanatory to use something as an alternative if the primary thing does not work well. In xslt the fallback tag works as an alternative tag if any given tag does not work or is not supported by xslt processor. 

Note: This fallback will always work in not supported tags, so run time exception will not occur.

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="XSL.xsl"?>
<records>
    <record>
        <name>Adam Barr</name>
        <address>222 Cherry</address>
        <phone>555-797-2355</phone>
    </record>
    <record>
        <name>Jeff Adell</name>
        <address>730 Elm</address>
        <phone>555-797-5555</phone>
    </record>
</records>

XSL.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
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0"?>
<xsl:stylesheet version="1.1"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

  <xsl:template match="/">
     <HTML>
     <HEAD><TITLE>Output Table</TITLE></HEAD>
     <BODY>
     <xsl:import-table href="HTMLPage.html" name="sample">
  <p>
   &lt; xsl:import-notAnyTag &gt; is not any tag processed by xslt processor so this para will not show up.
  </p>
        <xsl:fallback>
        <p>
            This version (1.1) of the parser does not support the creation of a
            table with the 'xsl:import-table' element, even there is not any tag 
   name like &lt;xsl:import-table&gt; so the following 
            table has been generated using the 'fallback' element.
        </p>
          <table border='2'>
            <xsl:for-each select='records/record'>
              <tr>
                <td><xsl:value-of select='name'/></td>
                <td><xsl:value-of select='address'/></td>
                <td><xsl:value-of select='phone'/></td>
              </tr>
            </xsl:for-each>
          </table>
        </xsl:fallback>
      </xsl:import-table>
   <!-- Another Example-->
  <xsl:notAnyTag>
    <p>
     &lt; xsl:import-notAnyTag &gt; is not any tag processed by xslt processor so this para will not show up.
    </p>
   <xsl:fallback>
    <p>
     &lt;xsl:import-notAnyTag&gt; is not any tag processed by xslt processor so this fallback will be act as alternative tag.
    </p>
   </xsl:fallback>
  </xsl:notAnyTag>
      </BODY>
    </HTML> 
  </xsl:template>

</xsl:stylesheet>

Thanks ............
Stay tuned for more deeply explained examples.

Last update (29-April-2018)

Comments

Popular posts from this blog

regex in python python hunter

Regular Expressions is a powerful concept if understood clearly you can save your valuable time to extract out the particular text from huge string or paragraph. It is wildly pronounced as regex, it can help you to automate the boring stuff, like searching particular text form log files, python used this same concept in web scrapping. Below are some common examples to understand the regex. Method names will help you to have an idea that what exactly the regex is intended to do. if you don't understand any regex or want to create your own regex with your requirements then you can comment below, i'll reach you ASAP. Thanks. import re def phoneNumberPattern (): print ( "*" * 10 ) print ( "phoneNumberPattern()" ) regexObj = re . compile( r'\d\d\d-\d\d\d-\d\d\d\d' ) mo = regexObj . search( 'Find my phone number from this string 998-805-4332' ) print (mo . group()) def grouping (): print ( "*...

Understand the generators and yield keyword in python, on Python Hunter

Generators look like a function but there is huge difference b/w generators and function. Instead of return statements you will find only yield statements are used inside of the body of a generator , i.e. one or more yield statements.  In short the main feature of generator is that the last execution statement is kept remembered by python interpreter and the next time when the same generator is called the it execute from the last yield location instead of starting the location from TOP. And the state of all local variable(s) are kept safe, that means the local variable(s) will not change their value(s) at next call.      Follow the example to understand the concept. def gen():     yield 1     yield 2     yield 3     yield 4 f=gen() print(next(f)) # will print 1 print(next(f)) # will print 2 print(next(f)) # will print 3 Let's take a real example........... -------------------------------...