Title: XML Stylesheets
1XML Stylesheets
2What Is It?
- Extensible Stylesheet Language (XSL)
- Language for document transformation
- Transformation (XSLT)
- Converting XML to another form
- e.g. Use Xalan to convert to text, XML, HTML,
etc - Formatting objects (XSLFO)
- Layout of XML document
- e.g. Use FOP to convert to PDF, etc
- Defined by W3C
3The Simplest Stylesheet (1 of 2)
01 lt?xml version1.0 encodingUTF-16?gt 02 ltx
slstylesheet xmlnsxslhttp//www.w3.org/1999/XS
L/Transform 03
version1.0gt 04 lt/xslstylesheetgt
4The Simplest Stylesheet (2 of 2)
- Empty XSLT document
- Note This will simply copy the text content of
the input document to the output.
01 lt?xml version1.0 encodingUTF-16?gt 02 ltx
slstylesheet xmlnsxslhttp//www.w3.org/1999/XS
L/Transform 03
version1.0gt 04 lt/xslstylesheetgt
5What Are Its Features?
- Features
- Templates
- Map input patterns to output
- Conditionals
- Loops
- Functions
- Extensions
6Templates
- Transformation rules
- Selects nodes from input document
- Uses XPath expressions
- Specifies output
- Can be text, XML, HTML (xml with html tags)
- Template modes
- Allows multiple templates to have same rules
- Named templates
- Call templates by name
7Simple Template (1 of 4)
- Match document root
- ltxsltemplate match/gt
- ltHTMLgt
- ltBODYgt
- ltxslapply-templates selectchild/gt
- lt/BODYgt
- lt/HTMLgt
- lt/xsltemplategt
8Simple Template (2 of 4)
- Match document root
- ltxsltemplate match/gt
- ltHTMLgt
- ltBODYgt
- ltxslapply-templates selectchild/gt
- lt/BODYgt
- lt/HTMLgt
- lt/xsltemplategt
9Simple Template (3 of 4)
- Match document root
- ltxsltemplate match/gt
- ltHTMLgt
- ltBODYgt
- ltxslapply-templates selectchild/gt
- lt/BODYgt
- lt/HTMLgt
- lt/xsltemplategt
10Simple Template (4 of 4)
- Match document root
- ltxsltemplate match/gt
- ltHTMLgt
- ltBODYgt
- ltxslapply-templates selectchild/gt
- lt/BODYgt
- lt/HTMLgt
- lt/xsltemplategt
11Simple Template (1 of 5)
- Match document root
- ltxsltemplate match/gt
- ltHTMLgt
- ltBODYgt
- ltxslapply-templates selectchild/gt
- lt/BODYgt
- lt/HTMLgt
- lt/xsltemplategt
- ltxsltemplate matchbookgt
- ltH1gt ltxslvalue-of selecttitle/gt lt/H1gt
- lt/xsltemplategt
12Simple Template (2 of 5)
- Match document root
- ltxsltemplate match/gt
- ltHTMLgt
- ltBODYgt
- ltxslapply-templates selectchild/gt
- lt/BODYgt
- lt/HTMLgt
- lt/xsltemplategt
- ltxsltemplate matchbookgt
- ltH1gt ltxslvalue-of selecttitle/gt lt/H1gt
- lt/xsltemplategt
13Simple Template (3 of 5)
- Match document root
- ltxsltemplate match/gt
- ltHTMLgt
- ltBODYgt
- ltxslapply-templates selectchild/gt
- lt/BODYgt
- lt/HTMLgt
- lt/xsltemplategt
- ltxsltemplate matchbookgt
- ltH1gt ltxslvalue-of selecttitle/gt lt/H1gt
- lt/xsltemplategt
14Simple Template (4 of 5)
- Match document root
- ltxsltemplate match/gt
- ltHTMLgt
- ltBODYgt
- ltxslapply-templates selectchild/gt
- lt/BODYgt
- lt/HTMLgt
- lt/xsltemplategt
- ltxsltemplate matchbookgt
- ltH1gt ltxslvalue-of selecttitle/gt lt/H1gt
- lt/xsltemplategt
15Simple Template (5 of 5)
01 ltbook isdn1234-5678-90gt 02 lttitlegtCare
and Feeding of Wombatslt/titlegt 03
ltchapter/gt nn lt/bookgt
01 ltHTMLgt 02 ltBODYgt 03 ltH1gtCare and
Feeding of Wombatslt/H1gt 04 lt/BODYgt 05 lt/HTMLgt
16Conditionals
- If statement
- ltxslif test'expression'gt ... lt/xslifgt
- Switch statement
- ltxslchoosegt
- ltxslwhen test'expression'gt ... lt/xslwhengt
- ltxslotherwisegt ... lt/xslotherwisegt
- lt/xslchoosegt
- Predicates
- foo_at_bar"value"
17Loops
- For statement
- ltxslfor-each select'expression'gt
- ltxslsort select'expression'/gt
-
- lt/xslfor-eachgt
18XPath Functions
- Node-set functions
- e.g. position(), last(), local-name(), etc
- String functions
- e.g. string(), contains(), substring(), etc
- Boolean functions
- e.g. boolean(), not(), etc
- Number functions
- e.g. number(), sum(), round(), etc
19XSLT Functions
- Multiple source documents
- e.g. document(document2.xml)
- Keys
- Number formatting
- Additional functions
- e.g. current(), system-property(), etc
20Example Transformation (0 of 14)
01 ltordergt 02 ltitem codeBK123gt 03
ltnamegtCare and Feeding of Wombatslt/namegt 04
ltprice currencyUSDgt42.00lt/pricegt 05
lt/itemgt 06 lt/ordergt
01 ltHTMLgt 02 ltBODYgt 03 ltTABLE
border1gt 04 ltTRgt ltTHgtItemlt/THgt
ltTHgtPricelt/THgt lt/TRgt 05 ltTRgt 06
ltTDgtBK123 - ltUgtCare and Feeding of
Wombatslt/Ugtlt/TDgt 07 ltTDgt42.00lt/TDgt 08
lt/TRgt 09 lt/TABLEgt 10 lt/BODYgt 11 lt/HTMLgt
21Example Transformation (1 of 14)
01 ltxslstylesheet xmlnsxslhttp//www.w3.org/19
99/XSL/Transform 02
version1.0gt 03 04 ltxsltemplate
match/ordergt 05 ltHTMLgt 06 ltBODYgt 07
ltTABLE border1gt 08 ltTRgt
ltTHgtItemlt/THgt ltTHgtPricelt/THgt lt/TRgt 09
ltxslfor-each selectitemgt 10
ltxslapply-templates/gt 11
lt/xslfor-eachgt 12 lt/TABLEgt 13
lt/BODYgt 14 lt/HTMLgt 15 lt/xsltemplategt
22Example Transformation (2 of 14)
01 ltxslstylesheet xmlnsxslhttp//www.w3.org/19
99/XSL/Transform 02
version1.0gt 03 04 ltxsltemplate
match/ordergt 05 ltHTMLgt 06 ltBODYgt 07
ltTABLE border1gt 08 ltTRgt
ltTHgtItemlt/THgt ltTHgtPricelt/THgt lt/TRgt 09
ltxslfor-each selectitemgt 10
ltxslapply-templates/gt 11
lt/xslfor-eachgt 12 lt/TABLEgt 13
lt/BODYgt 14 lt/HTMLgt 15 lt/xsltemplategt
23Example Transformation (3 of 14)
01 ltxslstylesheet xmlnsxslhttp//www.w3.org/19
99/XSL/Transform 02
version1.0gt 03 04 ltxsltemplate
match/ordergt 05 ltHTMLgt 06 ltBODYgt 07
ltTABLE border1gt 08 ltTRgt
ltTHgtItemlt/THgt ltTHgtPricelt/THgt lt/TRgt 09
ltxslfor-each selectitemgt 10
ltxslapply-templates/gt 11
lt/xslfor-eachgt 12 lt/TABLEgt 13
lt/BODYgt 14 lt/HTMLgt 15 lt/xsltemplategt
24Example Transformation (4 of 14)
01 ltxslstylesheet xmlnsxslhttp//www.w3.org/19
99/XSL/Transform 02
version1.0gt 03 04 ltxsltemplate
match/ordergt 05 ltHTMLgt 06 ltBODYgt 07
ltTABLE border1gt 08 ltTRgt
ltTHgtItemlt/THgt ltTHgtPricelt/THgt lt/TRgt 09
ltxslfor-each selectitemgt 10
ltxslapply-templates/gt 11
lt/xslfor-eachgt 12 lt/TABLEgt 13
lt/BODYgt 14 lt/HTMLgt 15 lt/xsltemplategt
25Example Transformation (5 of 14)
01 ltxslstylesheet xmlnsxslhttp//www.w3.org/19
99/XSL/Transform 02
version1.0gt 03 04 ltxsltemplate
match/ordergt 05 ltHTMLgt 06 ltBODYgt 07
ltTABLE border1gt 08 ltTRgt
ltTHgtItemlt/THgt ltTHgtPricelt/THgt lt/TRgt 09
ltxslfor-each selectitemgt 10
ltxslapply-templates/gt 11
lt/xslfor-eachgt 12 lt/TABLEgt 13
lt/BODYgt 14 lt/HTMLgt 15 lt/xsltemplategt
26Example Transformation (6 of 14)
17 ltxsltemplate matchitemgt 18 ltTRgt 19
ltTDgt 20 ltxslvalue-of
select_at_code/gt - 21 ltUgt ltxslvalue-of
selectname/gt lt/Ugt 22 lt/TDgt 23
ltxslapply-templates selectprice/gt 24
lt/TRgt 25 lt/xsltemplategt
27Example Transformation (7 of 14)
17 ltxsltemplate matchitemgt 18 ltTRgt 19
ltTDgt 20 ltxslvalue-of
select_at_code/gt - 21 ltUgt ltxslvalue-of
selectname/gt lt/Ugt 22 lt/TDgt 23
ltxslapply-templates selectprice/gt 24
lt/TRgt 25 lt/xsltemplategt
28Example Transformation (8 of 14)
17 ltxsltemplate matchitemgt 18 ltTRgt 19
ltTDgt 20 ltxslvalue-of
select_at_code/gt - 21 ltUgt ltxslvalue-of
selectname/gt lt/Ugt 22 lt/TDgt 23
ltxslapply-templates selectprice/gt 24
lt/TRgt 25 lt/xsltemplategt
29Example Transformation (9 of 14)
17 ltxsltemplate matchitemgt 18 ltTRgt 19
ltTDgt 20 ltxslvalue-of
select_at_code/gt - 21 ltUgt ltxslvalue-of
selectname/gt lt/Ugt 22 lt/TDgt 23
ltxslapply-templates selectprice/gt 24
lt/TRgt 25 lt/xsltemplategt
30Example Transformation (10 of 14)
27 ltxsltemplate matchpricegt 28 ltTDgt 29
ltxslchoosegt 30 ltxslwhen
testtext()JPNgt lt/xslwhengt 31
ltxslotherwisegt lt/xslotherwisegt 32
lt/xslchoosegt 33 ltxslvalue-of
selecttext()/gt 34 lt/TDgt 35
lt/xsltemplategt 36 37 lt/xslstylesheetgt
31Example Transformation (11 of 14)
27 ltxsltemplate matchpricegt 28 ltTDgt 29
ltxslchoosegt 30 ltxslwhen
testtext()JPNgt lt/xslwhengt 31
ltxslotherwisegt lt/xslotherwisegt 32
lt/xslchoosegt 33 ltxslvalue-of
selecttext()/gt 34 lt/TDgt 35
lt/xsltemplategt 36 37 lt/xslstylesheetgt
32Example Transformation (12 of 14)
27 ltxsltemplate matchpricegt 28 ltTDgt 29
ltxslchoosegt 30 ltxslwhen
testtext()JPNgt lt/xslwhengt 31
ltxslotherwisegt lt/xslotherwisegt 32
lt/xslchoosegt 33 ltxslvalue-of
selecttext()/gt 34 lt/TDgt 35
lt/xsltemplategt 36 37 lt/xslstylesheetgt
33Example Transformation (13 of 14)
27 ltxsltemplate matchpricegt 28 ltTDgt 29
ltxslchoosegt 30 ltxslwhen
testtext()JPNgt lt/xslwhengt 31
ltxslotherwisegt lt/xslotherwisegt 32
lt/xslchoosegt 33 ltxslvalue-of
selecttext()/gt 34 lt/TDgt 35
lt/xsltemplategt 36 37 lt/xslstylesheetgt
34Example Transformation (14 of 14)
Item Price
BK123 - Care and Feeding of Wombats 42.00
35Rendering XML in Browsers
- Latest browsers (e.g. IE 6.0) have support for
XSLT - Insert xml-stylesheet processing instruction
- lt?xml-stylesheet typetext/xsl
hrefstyle.xsl?gt - Output
Item Price
BK123 - Care and Feeding of Wombats 42.00
36Useful Links
- XPath 1.0 Specification
- http//www.w3.org/TR/xpath
- XSLT 1.0 Specification
- http//www.w3.org/TR/xslt
37XML Stylesheets