Developing XSLT-based Applications in ASP.NET 2.0 - Parsing through previous and next siblings using XSLT
(Page 7 of 7 )
Let us consider the following XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="SQLData/Rows/FirstName" />
</xsl:template>
<xsl:template match="FirstName">
<b>
<xsl:value-of select="."/>
</b>
<br />
</xsl:template>
</xsl:stylesheet>
From the above you can understand that it displays all “FirstName” related information in bold. What if I want to display the “EmployeeID” along with the “FirstName?” In the above path, I didn’t specify “EmployeeID” at all and the template simply belongs to “FirstName.”
Now within the “FirstName” template, I would like to access the “EmployeeID.” It is the previous tag at the same level (or it is simply a preceding sibling). The following will help you understand how to access previous and next siblings:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-
templates select="SQLData/Rows/FirstName" />
</xsl:template>
<xsl:template match="FirstName">
<xsl:value-of select="./preceding::EmployeeID[1]"/> -
<b>
<xsl:value-of select="."/>
</b> -
<xsl:value-of select="./following::JobTitle[1]"/>,
<br />
</xsl:template>
</xsl:stylesheet>
The power of using XSLT solely depends on your grasp of XPath. I strongly suggest you to learn XPath before you learn XSLT. You can also find different utilities on this web site for learning XPath. Good luck.
I hope you enjoyed the article and any comments, suggestions, feedback, bugs, errors, enhancements etc. are highly appreciated at http://jagchat.spaces.live.com
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |