127
Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

Jon Allen

instructional media + magic, inc.

As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003

Introduction to XSLT

Page 2: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

The Abstract…

Looking for a methodology to quickly and effectively create Transformations? Interested in the basics of XSLT and Xpath, and a good way to get started? If so, this workshop is for you! We will be discussing the fundamental concepts of XSLT and Xpath, and the methodologies that have emerged from months of developing stylesheet transformations for the uPortal 2.0 project.

We will discuss the design aspects related to converting structured information in XML into device-dependent markup languages such as HTML, and WML, and the guidelines and best practices evolving from this experience. No prior XSLT experience is necessary.

Page 3: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Overview

• Introduction• uPortal• Basic XPath• Basic XSLT• Markup: XHTML • Cascading Style Sheets• Tools• The Creation Process• Hands-on

Page 4: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

Introduction

Page 5: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Background

• Who: W3C• What: XPath and XSLT Specs.• When: 11/16/1999• Why:A need arose for a

specification to define the syntax and semantics for transforming XML documents.

Page 6: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

References

• “The” definitivereference…• Michael Kay• Wrox Press Inc• ISBN: 1861005067

Page 7: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

References

• Great practicalreference…• Jeni Tennison• Hungry Minds• ISBN: 0764547763

Page 8: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

References

• Practical use oftransformationsin Java code• Eric Burke• O'Reilly & Assoc.• ISBN: 0596001436

Page 9: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

JA-SIG’s uPortal

Page 10: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Use of XSLT in uPortal

• XSLT is used to render the "Structure", "Theme" and "Channels"• Structure is an XML to XML

Transformation of Abstract Layout to Structured Layout (such as Tab and Column)

• Theme is an XML to Markup Language Transformation (XHTML, WAP, etc) which renders the container for headers, navigation, channels, footers, etc.

• Channels have XML to Markup Language Transformations that render content

Page 11: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Structure XSLT

Tab/Col/Row

Tab/Column

Tree/Column

XSLTProcessor

User Layout XML

StructureXSLT

XML

Page 12: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Conceptual Structure

The Structure is XML at this point, the illustrations are representational

Page 13: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Theme XSLT

HTML 4.0Browser

HTML 3.2 PDA

WML Mobile Phone

XSLTProcessor

StructureXML

ThemeXSLT

Page 14: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Theme

Page 15: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Channel XSLT

Channel XML and Stylesheets

Output Streamto Device

Final Output

Page 16: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Final Output

Page 17: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Basic Architecture

FrameworkStructure XSLT

Theme XSLT

Skins - CSS

ChanneChannel XSLTl XSLT

ChanneChannel XSLTl XSLT

ChanneChannel XSLTl XSLT

Page 18: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Channel

• Elementary unit of presentation, defined by the IChannel interface

IChannel

User InteractionExternal Information

Channel Content(Presentation)

Page 19: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

IChannel content must

• Be well-formed XML such as XHTML, RSS, SVG, SMIL, or a SOAP message (HTML is not well formed XML)

• Rendered by an XSL transformation using an XSL stylesheet

Page 20: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Framework Organization

uPortal Framework

User Interaction Presentation

Channel Channel Channel

Page 21: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

User Layout

• User Layout is an abstract structure defining the overall content available to the user

• userLayout is a tree structure consisting of “folders” and “channels”, the later always being the leaf nodes

Page 22: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

User Layout

C ha nn e l C ha nn e l C ha nn e l

C ha nn e l

F o ld er

F o ld er C ha nn e l

F o ld er

C ha nn e l

F o ld er

F o ld er

C ha nn e l C ha nn e l

F o ld er

U ser L ayo u t

Page 23: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Structure Transformation

C ha nn e l C ha nn e l C ha nn e l

C ha nn e l

F o ld er

F o ld er C ha nn e l

F o ld er

C ha nn e l

F o ld er

F o ld er

C ha nn e l C ha nn e l

F o ld er

U ser L ayo u t

Channel Channel Channel Channel

Column Channel

Tab

Channel

Tab

Channel Channel

Tab

User Layout

Column

Page 24: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Theme Transformation

ChannelDictionary.com

Column

ChannelBookmarks

ChannelCartoon

Column

TabJim Smith

Channel

TabFinancial Aid

Channel Channel

TabLibrary

User Layout

Page 25: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Compiling the Presentation

Structuretransformation

Themetransformation

userLayout

structuredLayout

HTML, WML VoiceML...

XSLT

XSLT

setRuntimeData()

renderXML()

Channels

Page 26: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

XML

Stylesheet

XHTML: Web Browser

WML: Cell Phone

HTML: PDA

XSLTProcessor

Content Transformation

Page 27: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Multiple Target Devices

Page 28: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Skins: Cascading Stylesheets

Page 29: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Skin: im+m

Page 30: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Skin: VSAC

Page 31: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Skin: matrix

Page 32: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

User Preferences

• Swappable layout and preference management modules

• Profile management module• Tab-column specific prefs. module• Skin selection

Page 33: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

User Preferences

Page 34: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Publish/Subscribe

• Channel publishing document• Channel parameters

• Default values• Modification permissions• Descriptions

• Publish/Subscribe steps• Step sequence• Instructions, help

• A complex channel with multiple XSL views

Page 35: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

uPortal Base Channel Types

Page 36: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Applet Channel

Page 37: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Image Channel

Page 38: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Inline Frame

Page 39: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Remote Channel

Page 40: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

RSS Channel

Page 41: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Web Proxy Channel

Page 42: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

XSLT Channel

Page 43: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Channel Controls

Page 44: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Channel Review

Page 45: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XHTML

Page 46: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Why XHTML?

• XSLT Stylesheets are XML documents• If you plan to output HTML, it will

reside in the template bodies of the XSLT Stylesheet, and the markup will be output as literal output.

• When the XSLT Stylesheet contains Markup, it has to be well formed

Page 47: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Differences with HTML 4

• Due to the fact that XHTML is an XML application, certain practices that were perfectly legal in HTML 4 must be changed.

• Documents must be well-formed• Well-formedness is a new concept introduced by

[XML]. Essentially this means that all elements must either have closing tags or be written in a special form (as described below), and that all the elements must nest.

• CORRECT: nested elements.<p>here is an emphasized <em>paragraph</em>.</p>

• INCORRECT: overlapping elements<p>here is an emphasized <em>paragraph.</p></em>

Page 48: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Differences with HTML 4

• Element and attribute names must be in lower case• XHTML documents must use lower case

for all HTML element and attribute names. This difference is necessary because XML is case-sensitive e.g. <li> and <LI> are different tags.

Page 49: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Differences with HTML 4

• In HTML 4 certain elements were permitted to omit the end tag; with the elements that followed implying closure. This omission is not permitted in XML-based XHTML. All elements must have an end tag.

• CORRECT: terminated elements<p>here is a paragraph.</p><p>here is another paragraph.</p>

• INCORRECT: unterminated elements<p>here is a paragraph.<p>here is another paragraph.

Page 50: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Differences with HTML 4

• All attribute values must be quoted, even those which appear to be numeric.

• CORRECT: quoted attribute values<table rows="3">

• INCORRECT: unquoted attribute values<table rows=3>

Page 51: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Differences with HTML 4

• XML does not support attribute minimization. Attribute-value pairs must be written in full. Attribute names such as nowrap and checked cannot occur in elements without their value being specified.

• CORRECT: unminimized attributes<td nowrap=“nowrap">

• INCORRECT: minimized attributes<td nowrap>

Page 52: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Differences with HTML 4

• Empty elements must either have an end tag or the start tag must end with />. For instance, <br/> or <hr></hr>.

• CORRECT: terminated empty tags<br/><hr/>

• INCORRECT: unterminated empty tags<br><hr>

Page 53: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

Cascading Style Sheets

Page 54: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

CSS uPortal and Skins

• uPortal uses Cascading Style Sheets to “Skin” the portal and content.

• These CSS files are optimized for a particular structure.

• For consistency channel developers should become familiar with the CSS classes that are defined for a particular structure and apply them to the markup language in their XSLT transformations.

Page 55: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

The CSS Classes

• There is a sample “developer” channel in uPortal that describes and gives examples of the CSS classes for the Tab/Column Theme.

Page 56: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

The CSS Channel

Page 57: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

Basic XPath

Page 58: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Nodes and Node Trees

• When an application wants to operate on an XML document it builds an internal model of what the document looks like.

• This model is known as a document object model or DOM.

• In XPath and XSLT, it's called a node tree.

Page 59: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Types of Nodes

• Root nodes • The top of the node tree

• Element nodes • XML elements

• Attribute nodes• XML attributes

• Text nodes• Textual content in XML elements

• Comment nodes• XML comments

• Processing instruction nodes• XML processing instructions

• Namespace nodes• The in-scope namespaces on an element

R

E EEE

A T

Page 60: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Node Tree Example

<document><para type=“note”> content </para><para type=“warning”> content </para><para type=“warning”> content </para>

</document>

- attr ibute-type: note

- tex t-content

- e lem ent-para

- attr ibute-type: warning

- tex t-content

- e lem ent-para

- attr ibute-type: warning

- tex t-content

- e lem ent-para

- root-docum ent

documentdocument

parapara parapara parapara

warningwarning warningwarningnotenote

contentcontent contentcontentcontentcontent

Page 61: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

XPath Definition

• XPath is a language for addressing parts of an XML document, designed to be used by XSLT.

• Example XPath:

child::para[attribute::type='warning'][position()=2]

• In English: • select the second para child of the

context node that has a type attribute with a value of warning.

Page 62: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

type :no te

p ara

type :w arn ing

p ara

type :w arn ing

p ara

d o cu m e nt

Context node

Axis

Dissecting the Example

child::para[attribute::type='warning'][position()=2]

Axis: child::paraFilter: [attribute::type='warning']Filter: [position()=2]

Page 63: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

type :no te

p ara

type :w arn ing

p ara

type :w arn ing

p ara

d o cu m e nt

Context node

Axis

Dissecting the Example

child::para[attribute::type='warning'][position()=2]

Axis: child::paraFilter: [attribute::type='warning']Filter: [position()=2]

Filtered

Page 64: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

type :no te

p ara

type :w arn ing

p ara

type :w arn ing

p ara

d o cu m e nt

Context node

Axis

Dissecting the Example

child::para[attribute::type='warning'][position()=2]

Axis: child::paraFilter: [attribute::type='warning']Filter: [position()=2]

Filtered Filtered

Page 65: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Selected

type :no te

p ara

type :w arn ing

p ara

type :w arn ing

p ara

d o cu m e nt

Dissecting the Example

child::para[attribute::type='warning'][position()=2]

Axis: child::paraFilter: [attribute::type='warning']Filter: [position()=2]

Context node

Axis

Filtered Filtered

Page 66: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Types of XPaths

• Expressions:Return a value, which might be a node set that is processed or a string that is output. <xsl:when test="@type=‘warning’">

• Patterns:Either match a particular node or don't match that node.

<xsl:template match="para">

Page 67: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

XPath Expressions

• Select Nodes<xsl:for-each select=“child::Z”>

• Conditional<xsl:if test=“position()=2”>

• Calculation<xsl:value-of select=“position()+4">

C

Z Z

C

1 42 3

Page 68: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Node Set Expressions

• The most common way that XSLT uses XPaths is to select node sets. These XPaths usually occur within a select attribute, for example on xsl:for–each or xsl:apply–templates, and are known as location paths.

<xsl:for-each select=“child::para”>

<xsl:apply-templates select="paragraph"/>

Page 69: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Location Paths

• The purpose of location paths is to select node sets from a node tree.

• Location paths can be absolute or relative• Absolute location paths

start from a known locationsuch as the root node

<xsl:for-each select=“/R/N”>

• Relative location paths start from the context node.

<xsl:for-each select=“N”>note: same as “child::N”

R

N NX Y

R

N C ontextYX

N Z

Page 70: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Steps

• A location path is made up of a number of steps.

• Each step takes you from a node to a node set.

• Each step is separated from the one before it with a “/”.

Page 71: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Steps

• Every step is made up of an axis and a node test.• The axis specifies the

direction that thestep is taken in

• The node test specifiesthe kinds of nodes thatshould be collected inthat direction.

• Within a step, the axisand the node test areseparated by a double colon “::”.

“ child :: para ”

Page 72: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Some Shorthand Notation

• If no axis is specified in a step, the default axis is the child axis.• Longhand select=“child::para/child::sentence”• Shorthand select=“para/sentence”

• Another important axis is the attribute axis, which takes you from the context node to the attributes of that node.• Longhand select=“attribute::type”• Shorthand select=“@type”

• Another essential axis is the parent axis. This takes you from the context node to the parent of that node. • Longhand select=“parent::node()/child::xyz”• Shorthand select=“../xyz”

Page 73: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• ancestor :: node()Takes you up the tree to the ancestors of the context node in reverse document order.

22

11

Page 74: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• ancestor-or-self :: node()Takes you up the tree to the ancestors of the context node in reverse document order starting with the context node.

33

22

11

Page 75: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• child :: node()Takes you to the children of the context node in document order. This is the default axis.

2211

Page 76: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• descendant :: node()Takes you to the descendants of the context node. The resulting nodes are in document order.

3311

66554422

Page 77: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• descendant-or-self :: node()Takes you to the descendants of the context node, starting with the context node, in document order.

11

4422

77665533

Page 78: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• following :: node()Takes you to the nodes that occur after the context node in document order, but that are not the context node’s descendants.

4411

3322

Page 79: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• following-sibling :: node()Takes you to the siblings of the context node that occur after the context node in document order.

2211

Page 80: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• parent :: node()Selects a single node – the parent of the context node.

11

Page 81: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• preceding :: node()Takes you to the nodes that occur before the context node in reverse document order, excluding the context node’s ancestors.

33

1122

Page 82: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• preceding-sibling :: node()Takes you to the siblings (children of the same parent) of the context node that occur before it, in reverse document order.

1122

Page 83: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Axes

• self :: node()Takes you to the context node itself.

11

Page 84: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Predicates (filters)

• Predicates are placed in square brackets either:• at the end of a step

select=“para[position()=3]/sentence”

• or at the end of a location pathselect=“para/sentence[position()=3]”

• Predicates act as filters on node sets.• When predicate expressions test

false, the node is filtered out.

Page 85: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Predicates (filters)

• You can have any number of predicates following each other.

select=“para[position()=3][@indent=.5]/sentence”

• The context node list for each predicate contains the nodes that are still in the node set after it's been filtered by the previous predicates.

• Predicates can be used at any point in a location path, but they only apply to the immediately preceding step.

Page 86: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Expressions - Union

• You can combine node sets by creating a union using the “|” operator.

• If there are any nodes that occur in both node sets, the union only holds one copy of them.

• You can use predicates on the result of a union, just as you can on any node set.

Page 87: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Expressions - Operators

• Logical Operators• and, or and not()

• Comparative Operators• =, !=, <, <=, >, >=• Remember to escape: “<“ to &lt;

• Mathematical Operators• +, -, *, div, mod

Page 88: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Example: Locating Nodes

• This XPathexpression selects allthe price elements ofall the cd elements ofthe catalog element:/catalog/cd/price

• This XPath expression selectsall the cd elementsin the document://cd

*note most XPath expressions are written in shorthand

Page 89: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Selecting Unknown Elements• Wildcards ( * ) can be

used to select unknown XML elements.• This XPath expression

selects all the child elements of all the cd elements of the catalog element:/catalog/cd/*

• The following XPath expression selects all the price elements that are grandchild elements of the catalog element:/catalog/*/price

Page 90: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Selecting Unknown Elements

• The following XPath expression selects all price elements which have 2 ancestors:/*/*/price

• The following XPath expression selects all elements in the document://*

Page 91: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Selecting Branches

• The following XPath expression selects the first cd child element of the catalog element:/catalog/cd[1]

• The following XPath expression selects the last cd child element of the catalog element (Note: There is no function named first()):/catalog/cd[last()]

Page 92: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Selecting Branches

• The following XPath expression selects all the cd elements of the catalog element that have a price element:

/catalog/cd[price] • The following XPath

expression selects all the cd elements of the catalog element that have a price element with a value of 10.90:

/catalog/cd[price=10.90]

Page 93: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Selecting Branches

• The following XPath expression selects all the price elements of all the cd elements of the catalog element that have a price element with a value of 10.90:

/catalog/cd[price=10.90]/price

Page 94: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Selecting Several Paths

• The following XPath expression selects all the title and artist elements of the cd element of the catalog element:

/catalog/cd/title | /catalog/cd/artist

• The following XPath expression selects all the title and artist elements in the document:

//title | //artist• The following XPath

expression selects all the title, artist and price elements in the document:

//title | //artist | //price

Page 95: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Selecting Attributes

• This XPath expression selects all attributes named country://@country

• This XPath expression selects all cd elements which have an attribute named country://cd[@country]

• This XPath expression selects all cd elements which have any attribute://cd[@*]

• This XPath expression selects all cd elements which have an attribute named country with a value of 'UK'://cd[@country='UK']

Page 96: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

Basic XSLT

Page 97: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Background

• XSLT is part of a larger initiative within the World Wide Web Consortium (W3C) to define a way of presenting XML documents. This initiative is known as XSL (Extensible Stylesheet Language).

• XSLT is an XML vocabulary that's used to define a transformation between an XML document and a result document, which might be in XML, in HTML, or a text document.

Page 98: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

What is an XSLT Stylesheet?

• The XSLT processor uses a stylesheet to transform an XML document.

• The stylesheet contains instructions for generating a new document based on information in the source document.

• This can involve adding, removing, or rearranging nodes, as well as presenting the nodes in a new way.

Page 99: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

The XSL Processing sequence

source documentsource document

XSL stylesheetXSL stylesheet

XML parserXML parser

applytemplates

applytemplateswrite result

to outputwrite resultto output

Result fileor streamResult fileor stream

result tree

source tree

rules base

Page 100: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Differentiating Stylesheets

• XSLT stylesheets do not perform the same function as Cascading Style Sheets (CSS)

• CSS is used to apply style elements to markup languages to affect formatting in a single pass, top down, fashion.

• XSLT produces a separate result tree and can iterate and perform conditional logic.

• XSLT and CSS are most powerful when used together. More later…

Page 101: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Example of a Stylesheet

• When you work with a stylesheet, three documents are involved:• Source document in XML • Desired output: the result document,

which can be HTML, XML, or text • XSLT stylesheet, which is also an XML

document

Page 102: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

“Hello World!”

XML Document:<?xml version="1.0"?><greeting>Hello, World!</greeting>

Desired Output:<html><head><title>Greeting</title></head><body><p>Hello, World!</p></body></html>

XSLT Stylesheet:<?xml version="1.0"?><xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head><title>Greeting</title></head> <body><p><xsl:value-of select="greeting"/></p></body> </html> </xsl:template></xsl:stylesheet>

rootroot

greetinggreeting

Hello World!Hello World!

Page 103: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Dissecting the XSLT

• XSLT stylesheets are XML Documents<?xml version="1.0"?>

• Standard XSLT heading/Namespace<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

• The template rule to be triggered when a particular part of the source document is being processed. “/” is XPath for “root node” <xsl:template match="/">

Page 104: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Dissecting the XSLT

• Once the rule is triggered the body of the template defines what output to generate. <html>

<head><title>Greeting</title></head>

<body><p><xsl:value-of select="greeting"/></p></body>

</html>

• Most of the template is HTML except the value-of element which is an XSL instruction.

• The XPath in the select statement is asking for the contents of the child of the context node with an element name of greeting.

rootroot

greetinggreeting

Hello World!Hello World!

Page 105: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Dissecting the XSLT

• All that’s left to do is close (finish) the template and the stylesheet. </xsl:template>

</xsl:stylesheet>

Page 106: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Some XSL Top Level Elements• <xsl:decimal-format>

• Declares a decimal format.

• <xsl:import>• Imports another stylesheet into this stylesheet.

• <xsl:key>• provides a way to work with documents that

contain an implicit cross-reference structure

• <xsl:output>• This instruction specifies how you want the result

tree to be output

Page 107: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Some XSL Top Level Elements• <xsl:param>

• Declares a parameter for a stylesheet or template, and specifies a default value for the parameter

• <xsl:template>• Specifies a template rule.

• <xsl:variable>• Declares a variable and binds a value to that

variable.• The difference between the xsl:param and

xsl:variable instructions is that xsl:param defines a default value while xsl:variable defines a fixed value.

• If used as a top level element the scope is global otherwise the scope is local to a specific template

Page 108: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

What Is a Template?

• A template defines what the XSLT processor should do when it processes a particular node in the XML source document.

• The XSLT processor populates the result document by instantiating a sequence of templates.

• Instantiation of a template means that the XSLT processor • Copies any literal data from the template to the

result document • Executes the XSLT instructions in the template

Page 109: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Contents of a Template

• To define a template, you specify the xsl:template instruction.

• In the xsl:template tag, the value of the match attribute is an XPath pattern.

• This pattern matches (identifies) nodes in the source XML document.

• The value of the match attribute is the template rule.

Page 110: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

The Template Body

• The template body defines actions you want the XSLT processor to perform each time it instantiates the template. It contains • XSLT instructions you want the XSLT

processor to follow• Elements that specify literal output you

want the XSLT processor to insert in the result document. For example:

<table align="center" cellpadding="5">

Page 111: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Determining Templates to Instantiate

• When the XSLT processor applies a stylesheet to an XML document, it begins processing with the root node of the XML source document

• Every stylesheet includes default templates

• Whether or not you explicitly define a template rule that matches the root node, the XSLT processor always instantiates a template that matches the root node.

Page 112: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

The Example Handout

Page 113: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Dissected XSLT Stylesheet

Page 114: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Result

Page 115: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Dissecting a sample

• In the sample stylesheet, the template rule in the first template matches the root node:

<xsl:template match="/">

• The XSLT processor instantiates this template to start generating the result document.

• It copies the first few lines from the template to the result document.

Page 116: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Dissecting a sample

• Then the XSLT processor reaches the following XSLT instruction:

<xsl:apply-templates select="/bookstore/book"/> • When the XSLT processor reaches the

select attribute, it creates a list of all source nodes that match the specified pattern.

• In this example, the list contains book elements.

• The processor then processes each node in the list in turn by instantiating its matching template.

Page 117: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Dissecting a sample

• First, the XSLT processor searches for a template that matches the first book element. The template rule in the second template matches the book element:

<xsl:template match="book">

• After instantiating this template for the first book element, the XSLT processor searches for a template that matches the second book element…

Page 118: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Dissecting a sample

• The XSLT processor instantiates the book template again, and then repeats the process for the third book element.

• After three instantiations of the book template, the XSLT processor returns to the first template (the template that matches the root node) and continues with the line after the xsl:apply-templates instruction.

Page 119: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Built-in Templates

• When the XSLT processor cannot find a template that matches a selected node, it uses built-in templates. Every stylesheet includes built-in templates whether or not you explicitly define them.

Page 120: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Built-in Templates

• The following template matches the root node and element nodes and selects all attributes and child nodes for further processing:

<xsl:template match="*|/"><xsl:apply-templates / ></xsl:template>

• The following template matches text and attribute nodes. This template copies the value of the text or attribute node to the result document:

<xsl:template match="@*|text()"><xsl:value-of select="." / ></xsl:template>

Page 121: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Major XSL Instructions

• xsl:apply-imports • xsl:apply-templates • xsl:attribute • xsl:attribute-set • xsl:call-template • xsl:choose • xsl:comment • xsl:copy • xsl:copy-of • xsl:decimal-format • xsl:element • xsl:fallback • xsl:for-each • xsl:if • xsl:import • xsl:include • xsl:key

• xsl:message • xsl:namespace-alias • xsl:number • xsl:otherwise • xsl:output • xsl:param • xsl:preserve-space • xsl:processing-instruction • xsl:sort • xsl:strip-space • xsl:stylesheet • xsl:template • xsl:text • xsl:transform • xsl:value-of • xsl:variable • xsl:when • xsl:with-param

Page 122: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

The Tools

Page 123: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

The Applications…

These are the applications I am familiar with -- this is not an endorsement -- and no testing was done on animals…

XML/XSLT Document Development IDE:• Sonic Stylus Studio• XML Spy• Cooktop (open source)• Komodo (commercial – runs on LINUX)• Emacs (minor mode XSLT-process)

HTML Markup IDE:• Macromedia Dreamweaver MX (XHTML), Adobe GoLive

HTML to XHTML Conversion/Cleanup• HTML Tidy (open source)

Page 124: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

The Creation Process

Page 125: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Creating an XSLT StylesheetStep One – get or develop one of the following:

• A representative XML Document• A DTD (a whole different seminar)• A Schema (a whole different seminar)

Step two – Analyze the data • Think about the best way to present and interact with it.

The data is your friend.

Step three – Develop sample markup• Design mocks for each markup language & device that

you plan to support. Don’t try to paint the canvas without a sketch.

Step four – Convert the markup to XML• The stylesheet will only eat tasty markup. Poorly formed

markup will be regurgitated.

Step five – copy markup into XSLT editor• Match on a root element and start cooking XSLT.

Page 126: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

Hands - on

Page 127: Jon Allen instructional media + magic, inc. As presented at the JA-SIG Winter Conference Bal Harbor, Florida, December 6, 2003 Introduction to XSLT

XS

LT

, X

Path

an

d

uP

ort

al

Hands – on

• Convert RSS “Syndicated Content” XML Documents into HTML using an XSLT Stylesheet.