140 likes | 262 Views
XSL (Extensible Stylesheet Language) is a powerful language for transforming XML documents into various formats, such as HTML. Unlike HTML, XML element names lack intrinsic presentation semantics, making XSL essential for defining how XML data should be presented. It builds upon the foundation laid by CSS2 and DSSSL and offers extensibility. This guide explores XSL's core functions, including stylesheet transformation, the creation of formatting object trees, and practical examples of XSL documents that demonstrate its capabilities in formatting and displaying XML data effectively.
E N D
Extensible Stylesheet Language(XSL) Brian Temple
about:XSL • XSL is a language for expressing stylesheets • a language for transforming XML documents • an XML vocabulary for specifying formatting semantics
But, why XSL? • Unlike HTML, XML element names have no intrinsic presentation semantics • Builds on prior work of CSS2, DSSSL • Can be extended
<?xml version=“1.0”?> <purchaseOrder orderDate=“1999-10-20”> <shipTo country=“US”> <name>Matthias Hauswirth</name> <street>4500 Brookfield Dr.</street> <city>Boulder</city> <state>CO</state> <zip>80303</zip> </shipTo> <billTo country=“US”> <name>Brian Temple</name> <street>1234 Strasse</street> <city>Boulder</city> <state>CO</state> <zip>80302</zip> </billTo> <comment>Brian pays</comment> <items> <item partNum=“123-AB”> <productName>Porsche</productName> <quantity>1</quantity> <price>129400.00</price> <comment>Need a new one</comment> </item> <item> <productName>Ferrari</productName> <quantity>2</quantity> <price>189000.25</price> <shipDate>1999-05-21</shipDate> </item> </items> </purchaseOrder> An Example XML Document
Simple XSL Document <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <HTML> <BODY> <table border="2" bgcolor="yellow"> <xsl:for-each select="records/purchaseOrder"> <tr> <td><xsl:value-of select="shipTo/name"/></td> <td><xsl:value-of select="comment"/></td> <xsl:for-each select="items/item"> <td><xsl:value-of select="price"/></td> </xsl:for-each> </tr> </xsl:for-each> </table> </BODY> </HTML> </xsl:template> </xsl:stylesheet>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <HTML> <BODY> <table border="2" bgcolor="yellow"> <xsl:for-each select="records/purchaseOrder"> <tr> <td><xsl:value-of select="shipTo/name"/></td> <td><xsl:value-of select="comment"/></td> <xsl:for-each select="items/item"> <xsl:choose> <xsl:when match=".[price>100]"> <td bgcolor="red"><xsl:value-of select="price"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="price"/></td> </xsl:otherwise> </xsl:choose> </xsl:for-each> </tr> </xsl:for-each> </table> </BODY> </HTML> </xsl:template> </xsl:stylesheet> XSL:CHOOSE
Formatting process • Build formatting object tree • Produce refined formatting object tree • mapping from properties to traits • shorthand expansion into individual properties • mapping of corresponding properties • determining computed values • inheritance • Construct area tree
<doc> <p>This is an <emph>important word</emph> in this sentence that also refers to a <code>variable</code>.</p> </doc> <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'> ... <xsl:template match="code"> <fo:wrapper font-family="Courier"> <xsl:apply-templates/> </fo:wrapper> </xsl:template> Fe FiFOFum
bidi-override block block-container character color-profile conditional-page-master-reference declarations external-graphic float flow footnote footnote-body initial-property-set inline inline-container instream-foreign-object layout-master-set leader list-block list-item list-item-body list-item-label marker multi-case multi-properties multi-property-set multi-switch multi-toggle page-number page-number-citation page-sequence page-sequence-master region-after region-before region-body region-end region-start repeatable-page-master-alternatives repeatable-page-master-reference retrieve-marker root simple-link simple-page-master single-page-master-reference Examples of Formatting Objects • static-content • table • table-and-caption • table-body • table-caption • table-cell • table-column • table-footer • table-header • table-row • title • wrapper