14
Extensible Stylesheet Language (XSL) Brian Temple

Extensible Stylesheet Language (XSL)

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Extensible Stylesheet Language (XSL)

Extensible Stylesheet Language(XSL)

Brian Temple

Page 2: Extensible Stylesheet Language (XSL)

about:XSL

• XSL is a language for expressing stylesheets– a language for transforming XML documents– an XML vocabulary for specifying formatting

semantics

Page 3: Extensible Stylesheet Language (XSL)

But, why XSL?

• Unlike HTML, XML element names have no intrinsic presentation semantics

• Builds on prior work of CSS2, DSSSL• Can be extended

Page 4: Extensible Stylesheet Language (XSL)

An Example XML Document<?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>

Page 5: Extensible Stylesheet Language (XSL)

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>

Page 6: Extensible Stylesheet Language (XSL)

Simple XSL Results

Page 7: Extensible Stylesheet Language (XSL)

XSL:CHOOSE<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>

Page 8: Extensible Stylesheet Language (XSL)

XSL:CHOOSE Results

Page 9: Extensible Stylesheet Language (XSL)

Processing a stylesheet

Page 10: Extensible Stylesheet Language (XSL)

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

Page 11: Extensible Stylesheet Language (XSL)

The Area Model

Page 12: Extensible Stylesheet Language (XSL)

A Typical Area Tree

Page 13: Extensible Stylesheet Language (XSL)

Fe Fi FO Fum

• <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>

Page 14: Extensible Stylesheet Language (XSL)

Examples of Formatting Objects• 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

• static-content• table • table-and-caption • table-body • table-caption • table-cell • table-column • table-footer • table-header • table-row • title • wrapper