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

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

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

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