45
1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

Embed Size (px)

Citation preview

Page 1: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

1

CP3024 Lecture 9

XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

Page 2: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

2

XML Revision

<?xml version="1.0"?><sweepjoke><harry>Say <quote>Bye Bye </quote>, Sweep </harry>

<sweep> <quote>Bye Bye, Sweep</quote></sweep>

<laughter/></sweepjoke>

Page 3: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

3

Well formed XML

Begins with XML declarationHas one unique root elementNon-empty elements have closing tagsEmpty elements terminatedTags appear in correct orderAttribute values quoted

Page 4: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

4

Valid XML

Valid documents are well formedConform to a DTD

– Correct sequence– Correct nesting– Valid attribute values

Page 5: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

5

Document Type Definition

<?xml version="1.0" standalone="yes"?>

<!DOCTYPE sweepjoke [<!ELEMENT sweepjoke (harry+, sweep, laughter?)>

<!ELEMENT harry (#PCDATA | quote)*><!ELEMENT sweep (#PCDATA | quote)*><!ELEMENT quote (#PCDATA)*><!ELEMENT laughter EMPTY>]>

Page 6: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

6

Validating Parser

Page 7: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

7

Not Well Formed

<sweepjoke>

<harry>Say <quote>Bye Bye </quote>, Sweep </harry>

<sweep><quote>Bye Bye, Sweep</sweep></quote>

<laughter/>

</sweepjoke>

Page 8: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

8

Invalid 1

<sweepjoke>

<quote>Hello</quote>

<harry>Say <quote>Bye Bye </quote>, Sweep </harry>

<sweep><quote>Bye Bye, Sweep</quote></sweep>

<laughter/>

</sweepjoke>

Page 9: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

9

Invalid 2

<sweepjoke>

<sweep><quote>Bye Bye, Sweep</quote></sweep>

<laughter/>

</sweepjoke>

Page 10: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

10

Invalid 3

<sweepjoke>

<harry>Say <quote>Bye Bye </quote>, Sweep </harry>

<sweep><quote>Bye Bye, Sweep</quote></sweep>

<sweep>Hello Sooty</sweep>

<laughter/>

</sweepjoke>

Page 11: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

11

Is This Valid? 1

<sweepjoke>

<harry>Hello Sooty</harry>

<harry>Say <quote>Bye Bye </quote>, Sweep </harry>

<sweep><quote>Bye Bye, Sweep</quote></sweep>

<laughter/>

</sweepjoke>

Page 12: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

12

Is This Valid? 2

<sweepjoke>

<harry>Say <quote>Bye Bye </quote>, Sweep </harry>

<sweep><quote>Bye Bye, Sweep</quote></sweep>

<harry>Hello Sooty</harry>

<laughter/>

</sweepjoke>

Page 13: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

13

Namespaces in XML

An XML namespace is a collection of names– Identified by a URI reference [RFC2396]– Used in XML documents as element types and

attribute names

Page 14: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

14

Namespace Definition

<x xmlns:edi='http://ecommerce.org/schema'>

<!-- the "edi" prefix is bound to 

http://ecommerce.org/schema   for the "x" element and contents 

-->

</x>

Page 15: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

15

Namespace use

<x xmlns:edi='http://ecommerce.org/schema'>  <!-- the 'price' element's namespace is 

http://ecommerce.org/schema -->  

<edi:price units='Euro'>32.18</edi:price>

</x>

Page 16: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

16

Structured Publishing

Taken from an example given by Jon Bosak

Page 17: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

17

XSL

eXtensible Stylesheet LanguageThree parts

– XSLT• Language for transforming XML documents

– XPath• Language for defining parts of an XML document

– XSL Formatting Objects• Vocabulary for formatting XML documents

Page 18: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

18

XSLT

XSL TransformationsTransforms from an XML source tree to an

XML result treeTypically used to transform XML to

XHTML

Page 19: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

19

Transformation Process

Use XPath to define parts of the document that match predefined templates

On match, transform source into resultUnmatched parts of the source copied

unmodified to result

Page 20: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

20

Browser Support

IE 5.0 and 5.5 not 100% compatibleIE 6.0 supports all W3C recommendationsFully supported in Netscape 7.xFully supported in Mozilla 1.3

Page 21: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

21

Demo XML File

<?xml version = "1.0"?>

<moduleList>

<module no="CP3024">

<name>Web Information Systems</name>

<comment>Easy!</comment>

</module>

<module no="CP2027">

<name>Prog in Java</name>

<comment>Hard</comment>

</module>

</moduleList>

Page 22: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

22

Required Output

Page 23: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

23

Untransformed View

Page 24: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

24

HTML Output

<html><head><title>ModuleList<title></head><body><table border="1" bgcolor="cyan">

<thead><tr>

<th>Module Number</th><th>Name</th><th>Information</th>

</tr></thead>

Page 25: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

25

HTML Output

<tbody><tr>

<td>CP3024</td><td>Web Information Systems</td><td>Easy!</td>

</tr><tr>

<td>CP2027</td><td>Prog in Java</td><td>Hard</td>

</tr></tbody></table></body></html>

Page 26: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

26

Style Sheet Declaration

XSL stylesheets are written as XMLFirst line identifies file as XMLSecond line should be:

– <xsl:stylesheet version=“1.0”xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”>

or– <xsl:transform version=“1.0”xmlns:xsl=“http://www.w3.org/1999/XSL/Transform”>

Page 27: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

27

XSL Template

The <xsl:template> element contains rules to apply when a specified node is matched

The match attribute is used to associate the template with an XML element

E.g. <xsl:template match = "/">

Use of / selects root (whole document)Closes with </xsl:template>

Page 28: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

28

Example 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>Module List</title></head><body>

<table border = "1" bgcolor = "cyan">

Page 29: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

29

Example Stylesheet

<thead><tr><th>Module Number</th><th>Name</th><th>Information</th>

</tr></thead>

</table></body></html></xsl:template></xsl:stylesheet>

Page 30: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

30

Output

Page 31: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

31

Applying A Stylesheet

<?xml version = "1.0"?><?xml-stylesheet type = "text/xsl" href="moduleTable.xsl" ?><moduleList> <module no="CP3024"> <name>Web Information Systems</name> <comment>Easy!</comment> </module> <module no="CP2027"> <name>Prog in Java</name> <comment>Hard</comment> </module></moduleList>

Page 32: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

32

XML Tree Representation

n am e com m ent

m od u le

m od u le L ist

Page 33: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

33

XPath

Identifies parts of an XML documentCan select a node

– moduleSelect direct descendant

– moduleList/moduleSelect any descendant

– moduleList//commentSelect attribute

– @no

Page 34: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

34

XSL For-Each

Used to select every node of a specified setE.g <xsl:for-each select = "moduleList/module">

The select attribute contains an Xpath expression

It defines the context for the enclosed expressions

Page 35: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

35

XSL Value-Of

Selects the value of an XML elementAdds it to the outputE.g.

<xsl:value-of select = "name"/>The select attribute contains an Xpath expressionThis determines what is added to the output

Page 36: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

36

Outputting Elements

<tbody><xsl:for-each select = "moduleList/module"><tr>

<td><xsl:value-of select = "@no"/></td><td><xsl:value-of select = "name"/></td><td><xsl:value-of select = "comment"/></td>

</tr></xsl:for-each>

</tbody>

Page 37: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

37

Output

Page 38: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

38

Applying A Filter

Can use for-each statement to select entriesE.g.

<xsl:for-each select = "moduleList/module[@no='CP3024']">

Page 39: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

39

Sorting Output

Can use xsl:sort

<xsl:for-each select = "moduleList/module"> <xsl:sort select = "name"/> <tr> <td><xsl:value-of select = "@no"/></td> <td><xsl:value-of select = "name"/></td> <td><xsl:value-of select = "comment"/></td> </tr></xsl:for-each>

Page 40: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

40

XSL:Sort

Select attribute indicates which attribute to sort on

Page 41: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

41

XSL Formatting Objects

Source: W3C

Page 42: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

42

XSLT Transform

Source: W3C

Page 43: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

43

Formatting

Source: W3C

Page 44: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

44

Final Formatting

Source: W3C

Page 45: 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects

45

Summary

XML revisited– Well formed– Valid

XSL– XSLT– XPath– XSL Formatting Objects