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 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 | <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="ApplyTemplatesXSLT.xsl"?> <collage> <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> <student id="2" eCode="e2"> <firstName>PranSukh </firstName> <lastName>NoLastName </lastName> <dob> <day>02</day> <month>Jan</month> <year>1992</year> </dob> <course>Engineering</course> </student> <student id="3" eCode="e3"> <firstName>Pran </firstName> <lastName>Sukh </lastName> <dob> <day>03</day> <month>Jan</month> <year>1993</year> </dob> <course>Architect</course> </student> <student id="4" eCode="e4"> <firstName>Hunter</firstName> <lastName>Dave</lastName> <dob> <day>04</day> <month>Jan</month> <year>1994</year> </dob> <course>Business Analyst</course> </student> </collage> |
XSLT FILE:- ApplyTemplatesXSLT.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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | <?xml version ="1.0" encoding="UTF-8"?> <n:stylesheet version="1.0" xmlns:n="http://www.w3.org/1999/XSL/Transform"> <n:template match="/"> <html> <body> <n:apply-templates select="collage/student"/> </body> </html> </n:template> <n:template match="collage/student"> <n:apply-templates select="@id"/> <n:apply-templates select="@eCode"/> <br></br> <n:apply-templates select="firstName"/> <n:apply-templates select="lastName"/> <n:apply-templates select="dob"/> <br></br> <n:apply-templates select="dob" mode="YYYY_MM_DD"/> <br></br> <n:apply-templates select="dob" mode="DD_MM_YY"/> <br></br> <br></br> </n:template> <n:template match="@id"> ID:- <span style = "font-size = 22px;background:#0f4461;color:white"> <n:value-of select = "." /> </span> </n:template> <n:template match="@eCode"> eCode:- <span style = "font-size = 22px; background:red; color:white"> <n:value-of select = "." /> </span> </n:template> <n:template match="firstName"> First Name:<span style = "color:blue;"> <n:value-of select = "." /> </span> <br/> </n:template> <n:template match="lastName"> Last Name:<span style = "color:green;"> <n:value-of select = "." /> </span> <br/> </n:template> <!-- MODE default --> <n:template match="dob"> <n:apply-templates select="day"/>/<n:apply-templates select="month"/>/<n:apply-templates select="year"/> </n:template> <!-- MODE 1 --> <n:template match="dob" mode="YYYY_MM_DD"> <n:apply-templates select="year"/>/<n:apply-templates select="month"/>/<n:apply-templates select="day"/> </n:template> <!-- MODE 2 --> <n:template match="dob" mode="DD_MM_YY"> <n:apply-templates select="day"/>/<n:apply-templates select="month"/>/<n:apply-templates select="year"/> </n:template> <n:template match="day"> <span style="color:red;"> <n:value-of select = "."/> </span> </n:template> <n:template match="month"> <span style="color:red;"> <n:value-of select = "."/> </span> </n:template> <n:template match="year"> <span style="color:red;"> <n:value-of select = "."/> </span> </n:template> </n:stylesheet> |
Explanation:
The href="ApplyTemplatesXSLT.xsl" attribute value in XMLDATA file will pick up XSLT for designing purpose. now lets go to XSLT file, the value of select attribute in <n:apply-templates select="collage/student"/> will look for template where template matches collage/student and <n:apply-templates select="@id"/> will find the template which matches the pattern @id and so on for all other tags.
Here this is how it looks like : -
<n:template select="@id"> will find its designing under the following tag.
<n:template match="@id">
Note:- when <n:template match="collage/student"> is called it further goes to process all the templates defined in it one by one. Here in under this tag further tags like
1 2 3 4 5 6 7 8 | <n:apply-templates select="@id"/> <n:apply-templates select="@eCode"/> <br></br> <n:apply-templates select="firstName"/> <n:apply-templates select="lastName"/> <n:apply-templates select="dob"/> |
are called now the XSLT processor will process this tags by looking at the template select value.
For example here is the code for template @id :
1 2 3 4 | <n:template match="@id"> ID:- <span style = "font-size = 22px; background:#0f4461;color:white"> <n:value-of select = "." /> </span> |
Now the twist is at
<n:apply-templates select="dob" mode="YYYY_MM_DD"/>
here the mode is an extra attribute, now lets see the use of it.
MODE is inbuilt attribute of XSLT, it is used when we want to process the same node for multiple time and apply different styles, e.g we may need to show DOB in different formats. in this example mode="YYYY_MM_DD" and mode="DD_MM_YY" is used to process the single <dob> tag for different formats. where mode is not defined then it is considered as default mode.
When <n:apply-templates select="dob" mode="YYYY_MM_DD"/> calls
the template <n:template match="dob" mode="YYYY_MM_DD"> with given mode will be activated and processed. The same logic work for different modes.
<?xml-stylesheet type="text/xsl" href="ApplyTemplatesXSLT.xsl"?>
NEXT:-<apply-imports>(Click here)
Thanks for this time.... Stay tuned for more updates on XML and XSLT.
The method that you are projecting the way is easy to learn. I can get the concept quickly.
ReplyDeleteQTP Training in Chennai
QTP Training
QTP Classes
QTP Course in Chennai
Automation testing training in chennai
best qtp training in chennai
qtp training institutes in chennai