A major advantage of XTP is its separation of content from formatting. Your source documents can use meaningful markup tags letting the stylesheet format the output. The XTP source of this tutorial uses a few tags for basic formatting: />, />, and />. For example, the source for the tutorial index contains a section like: <s1 title="XTP"> <ul> <li><a href="xtp-copy.xtp">XTP copy</a> treats XTP pages exactly like JSP. <li><a href="xtp-format.xtp">Format</a> sections, splitting style from content <li><a href="xtp-page.xtp">Encode links</a> for sessions automatically <li><a href="xtp-strict.xtp">Strict XSL</a> equivalent to StyleScript </ul> </s1> The stylesheet contains a new rule for . In this example, the rule only works when there is a attribute. In the replacement code, /> inserts the value of the attribute. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- make sure '<' is not printed as '<' --> <xsl:output disable-output-escaping='true'/> <!-- copy input to output --> <xsl:template match='*|@*'> <xsl:copy> <xsl:apply-templates select='node()|@*'/> </xsl:copy> </xsl:template> <!-- s1 format --> <xsl:template match="s1[@title]"> <table width="100%" cellpadding="5" border="0"> <tr bgcolor="#ccddff"><td> <font size="+2"><b><value-of select="@title"/></b></font> </td></tr> </table> <xsl:apply-templates/> </xsl:template> </xsl:stylesheet>