1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects.
-
Upload
bethanie-conley -
Category
Documents
-
view
234 -
download
1
Transcript of 1 CP3024 Lecture 9 XML revisited, XSL, XSLT, XPath, XSL Formatting Objects.
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