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

Post on 18-Dec-2015

219 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

Transcript

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>

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

4

Valid XML

Valid documents are well formedConform to a DTD

– Correct sequence– Correct nesting– Valid attribute values

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

6

Validating Parser

7

Not Well Formed

<sweepjoke>

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

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

<laughter/>

</sweepjoke>

8

Invalid 1

<sweepjoke>

<quote>Hello</quote>

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

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

<laughter/>

</sweepjoke>

9

Invalid 2

<sweepjoke>

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

<laughter/>

</sweepjoke>

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>

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>

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>

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

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>

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>

16

Structured Publishing

Taken from an example given by Jon Bosak

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

18

XSLT

XSL TransformationsTransforms from an XML source tree to an

XML result treeTypically used to transform XML to

XHTML

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

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

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>

22

Required Output

23

Untransformed View

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>

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>

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

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>

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

29

Example Stylesheet

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

</tr></thead>

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

30

Output

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>

32

XML Tree Representation

n am e com m ent

m od u le

m od u le L ist

33

XPath

Identifies parts of an XML documentCan select a node

– moduleSelect direct descendant

– moduleList/moduleSelect any descendant

– moduleList//commentSelect attribute

– @no

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

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

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>

37

Output

38

Applying A Filter

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

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

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>

40

XSL:Sort

Select attribute indicates which attribute to sort on

41

XSL Formatting Objects

Source: W3C

42

XSLT Transform

Source: W3C

43

Formatting

Source: W3C

44

Final Formatting

Source: W3C

45

Summary

XML revisited– Well formed– Valid

XSL– XSLT– XPath– XSL Formatting Objects

top related