Start of change

Example: Using XSLT as a formatting engine

The following example illustrates how to use the built-in XSLTRANSFORM function as a formatting engine.

To get set up, first insert the two example documents below into the database.

INSERT INTO XML_TAB VALUES 	
(1,
 	  '<?xml version="1.0"?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation = "/home/steffen/xsd/xslt.xsd">
<student studentID="1" firstName="Steffen" lastName="Siegmund" 
    age="23" university="Rostock"/>
</students>',

    '<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="headline"/>
<xsl:param name="showUniversity"/>
<xsl:template match="students">
   		<html>
             	<head/>
                	<body>
                		<h1><xsl:value-of select="$headline"/></h1>
                		<table border="1">
                 			<th>
                     			<tr>
                                <td width="80">StudentID</td>
                                <td width="200">First Name</td>
                                <td width="200">Last Name</td>
                                <td width="50">Age</td>
                                <xsl:choose>
       <xsl:when test="$showUniversity ='true'">
                         		        <td width="200">University</td>
                                    </xsl:when>
       </xsl:choose>
                             </tr>
                        	 </th>
                        	 <xsl:apply-templates/>
                		</table>
                	</body>
                </html>
        	</xsl:template>
      		<xsl:template match="student">
             	<tr>
                  <td><xsl:value-of select="@studentID"/></td>
                  <td><xsl:value-of select="@firstName"/></td>
                  <td><xsl:value-of select="@lastName"/></td>
                  <td><xsl:value-of select="@age"/></td>
                  <xsl:choose>
                      <xsl:when test="$showUniversity = 'true' ">
                        <td><xsl:value-of select="@university"/></td>
                      </xsl:when>
                  </xsl:choose>
 			   </tr>
  		    </xsl:template>
</xsl:stylesheet>'
); 

Next, call the XSLTRANSFORM function to convert the XML data into HTML and display it.

SELECT XSLTRANSFORM (XML_DOC USING XSL_DOC AS CLOB(1M)) FROM XML_TAB;

The result is this document:

<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1></h1>
<table border="1">
<th>
<tr>
<td width="80">StudentID</td>
<td width="200">First Name</td>
<td width="200">Last Name</td>
<td width="50">Age</td>
</tr>
</th>
 <tr>
<td>1</td>
<td>Steffen</td><td>Siegmund</td>
<td>23</td>
</tr>
		</table>
</body>
</html>

In this example, the output is HTML and the parameters influence only what HTML is produced and what data is brought over to it. As such it illustrates the use of XSLT as a formatting engine for end-user output.

End of change