Open In App

XSLT Transform

What is XSLT Transform?

An XSLT transform is the process of applying an XSLT stylesheet to an XML document to produce a new document or presentation of the data. The XSLT stylesheet contains a set of rules and instructions that define how the transformation should occur.

Syntax:

<!-- Example XSLT stylesheet -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- Template for matching the root element of the XML document -->
<xsl:template match="/">
<html>
<body>
<h2>Transformed Output</h2>
</body>
</html>
</xsl:template>

<!-- Template for matching specific elements in the XML document -->
<xsl:template match="book">
<p><xsl:value-of select="title"/></p>
</xsl:template>

</xsl:stylesheet>

Elements used in XSLT Transform:

1. <xsl:stylesheet>: The root element that encapsulates the entire XSLT stylesheet.



<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

2. <xsl:template>: Defines a template rule that specifies how a particular element or set of elements should be transformed.

<!-- This XSL template is designed to match the root element ("/") of the input XML document. -->
<xsl:template match="/">
<html>
<body>
<!-- Heading level 2 for the transformed output -->
<h2>Transformed Output</h2>
</body>
</html>
</xsl:template>

3. <xsl:value-of>: Extracts the value of a selected node or expression and includes it in the output.



<!-- This XSL template is designed to match elements with the class "book" in the input XML document. -->
<xsl:template match="book">
<!-- Div element with the class "book" for styling purposes -->
<div class="book">
<!-- Heading level 2 for the book title -->
<h2><xsl:value-of select="title"/></h2>
<!-- Paragraph for displaying the author of the book -->
<p>Author: <xsl:value-of select="author"/></p>
<!-- Paragraph for displaying the published year of the book -->
<p>Published Year: <xsl:value-of select="publishedYear"/></p>
</div>
</xsl:template>

4. <xsl:apply-templates>: Triggers the processing of child nodes using their corresponding templates.

Example: Apply templates to process child nodes.

<!-- This XSL template matches the root element ("/") of the input XML document. -->
<xsl:template match="/">
<html>
<body>
<!-- Heading level 1 for the transformed content -->
<h1>Transformed Content</h1>
<!-- Applying templates to process child elements of the root -->
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

5. <xsl:for-each>: Iterates over a selected set of nodes and applies a template for each item in the node-set.

<!-- xsl:for-each to iterate over 'book' elements -->
<xsl:template match="/">
<html>
<body>
<h1>Book List</h1>
<!-- Use xsl:for-each to iterate over 'book' elements -->
<xsl:for-each select="library/books/book">
<div class="book">
<h2><xsl:value-of select="title"/></h2>
<p>Author: <xsl:value-of select="author"/></p>
</div>
</xsl:for-each>
</body>
</html>
</xsl:template>

6. <xsl:if>: Provides conditional processing, allowing certain actions to be taken based on a specified condition.

<!-- xsl:if for conditional processing -->
<xsl:template match="book">
<div class="book">
<h2><xsl:value-of select="title"/></h2>
<p>Author: <xsl:value-of select="author"/></p>

<!-- Use xsl:if to conditionally display a message -->
<xsl:if test="publishedYear &lt; 2000">
<p>Older Book</p>
</xsl:if>
</div>
</xsl:template>

7. <xsl:choose> and <xsl:when>: Allows multiple conditions to be tested, with different actions taken based on the first condition that evaluates to true.

<!-- xsl:choose and xsl:when for multiple conditions -->
<!-- This XSL template is designed to match elements named "book" in the input XML document. -->
<xsl:template match="book">
<!-- Styled division for a book with the class "book" -->
<div class="book">
<!-- Heading level 2 for the book title -->
<h2><xsl:value-of select="title"/></h2>
<!-- Paragraph for displaying the author of the book -->
<p>Author: <xsl:value-of select="author"/></p>

<!-- xsl:choose to handle multiple conditions based on publishedYear -->
<xsl:choose>
<!-- Condition for books published before 2000 -->
<xsl:when test="publishedYear &lt; 2000">
<p>Older Book</p>
</xsl:when>
<!-- Condition for books published between 2000 and 2010 -->
<xsl:when test="publishedYear &gt;= 2000 and publishedYear &lt; 2010">
<p>Published between 2000 and 2010</p>
</xsl:when>
<!-- Default condition for recent books -->
<xsl:otherwise>
<p>Recent Book</p>
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:template>

8. <xsl:text>: Defines text content to be included in the output.

<!-- xsl:text to output text content -->
<xsl:template match="book">
<div>
<h2><xsl:value-of select="title"/></h2>
<p>Author: <xsl:value-of select="author"/></p>

<!-- xsl:text to add a line break -->
<xsl:text>
</xsl:text>

<!-- xsl:text to add additional text content -->
<xsl:text>Published Year: </xsl:text>
<xsl:value-of select="publishedYear"/>
</div>
</xsl:template>

9. <xsl:copy>: Copies the current node or a specified node to the output.

<!-- xsl:copy to copy elements -->
<xsl:template match="book">
<!-- xsl:copy to copy the 'book' element to the output -->
<xsl:copy>
<!-- Copy all attributes of the 'book' element -->
<xsl:copy-of select="@*"/>

<!-- Add additional elements or modify existing elements if needed -->
<additionalInfo>Additional Information Here</additionalInfo>

<!-- Process child nodes of the 'book' element -->
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>

10. <xsl:copy-of>: Copies the current node-set or a specified node-set to the output.

<!-- xsl:copy-of to copy nodes -->
<xsl:template match="library">
<!-- xsl:copy-of to copy all child nodes of 'library' to the output -->
<xsl:copy-of select="*"/>
</xsl:template>

11. <xsl:message>: Outputs a message to the application or system.

<!-- xsl:message to output messages -->
<xsl:template match="/">
<!-- xsl:message to output a message -->
<xsl:message>Transformation started!</xsl:message>

<html>
<body>
<h1>Transformed Content</h1>
<!-- Apply other templates or transformation logic as needed -->
<xsl:apply-templates/>
</body>
</html>

<!-- xsl:message to output another message -->
<xsl:message>Transformation completed!</xsl:message>
</xsl:template>

Conclusion

In summary, XSLT transformation serves as a robust mechanism for the stylized presentation of XML data. Proficiency in XSLT enables developers with the ability to convert raw XML data into sophisticated and user-specific outputs. Within the dynamic realm of web development, a distinct comprehension of XSLT has a great significance, serving as an important asset that unlocks a realm of transformative possibilities.


Article Tags :