Upload
linette-marsha-houston
View
220
Download
0
Embed Size (px)
Citation preview
Digital Media Technology
Week 6
XML Source
XSLT Stylesheet
XML Result
XSLT
Tree diagram of an XSLT stylesheet
<xsl:stylesheet>
</xsl:stylesheet>
<xsl:template match=“collection” >
</xsl:template>
<xsl:template match=“letter” >
</xsl:template>
Example: XML source
<?xml version="1.0" encoding="UTF-8"?><letter> <head>Letter from De Erven F. Bohn to W. Blackwood and sons, January 22nd, 1873</head> <body> <dateline> <place>Haarlem</place> <date>22 January 1873</date> </dateline> <greeting>Dear Sirs!</greeting> <p>We beg to apply to you the kind request for sending us one week before the publication one copy of Bulwer's novel: <title>Kenelm Chillingly, His adventures and opinions</title>, which book you have in the press, for what we are inclined to pay 30 £. When it were possible to send us already now the first volume by the post; it would be yet more agreeable. Mr H.A. Kramers at Rotterdam readily will be our pledge.</p> <salute> your truly</salute> <signed>De Erven F. Bohn</signed> </body></letter>
□ Include a template that points to the root element of the XML source.
Getting started
<?xml version="1.0" encoding="UTF-8"?><letter> <head>Letter from De Erven F. Bohn to W. Blackwood and sons, January 22nd, 1873</head><body>….</body></letter>
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="letter">
</xsl:template> </xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<letter>
…
</letter>
XML Source
XSLT
XML Result
□ Literal text can be added with the <xsl:text>element.e.g.<xsl:text>This sentence will be visible in the result.</xsl:text>
□ HTML tags may be added directlye.g.<i><xsl:text>This text will be italicised<xsl:text></i>
Elements within <xsl:template>
□ Use <xsl:value-of> to select text from the XML source.e.g.<xsl:value-of select=“head”/><xsl:value-of select=“body/dateline”/>
□ Note that the paths in the select-attribute must depart from the element mentioned in the match-attribute of <xsl:template>
Elements within <xsl:template>
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match=“letter"> <html> <head>
<title> <xsl:text>XSLT transformation</xsl:text></title>
</head> <body> <h2>
<xsl:value-of select=“head”></h2>
</body> </html> </xsl:template> </xsl:stylesheet>
XSLT stylesheet
Exercise 1
Example: XML source
<?xml version="1.0" encoding="UTF-8"?><EU> <country> <name> Belgium </name> <capital>Brussels</capital> </country> <country> <name>Cyprus </name> <capital>Nicosia</capital> </country> <country> <name>Denmark </name> <capital>Copenhagen</capital> </country> …</EU>
XSLT stylesheet
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="EU"> <ul><li> <xsl:text>The capital of </xsl:text> <xsl:value-of select="country/name"/> <xsl:text> is </xsl:text> <xsl:value-of select="country/capital"/> <xsl:text>.</xsl:text> </li></ul> </xsl:template> </xsl:stylesheet>
□ <xsl:for-each> needs to be used if all the elements on a certain level need to be shown.
□ This XSLT element takes a select-attribute
□ Note that the paths within <xsl:for-each> must depart from the element that is mentioned mentioned in the select-attribute.
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="EU"> <ul> <xsl:for-each select="country"> <li> <xsl:text>The capital of </xsl:text> <xsl:value-of select="name"/> <xsl:text> is </xsl:text> <xsl:value-of select="capital"/> <xsl:text>.</xsl:text> </li> </xsl:for-each> </ul> </xsl:template> </xsl:stylesheet>
XSLT stylesheet
Exercise 2
□ Use <xsl:sort> to sort a list alphabeticaly or numerically
□ This XSLT element also takes a select-attribute. It refers to the element the XSLT processor must sort by
□ <xsl:sort> must be the direct child of <xsl:for-each> (or <xsl:apply-templates>)
<xsl:sort>
Exercise 3
□ <xsl:if> takes a “test” attribute
□ The instructions within <xsl:if> will only be carried out if the criterion in the test attribute can be evaluated as true
□ Example:
<xsl:if test=“date”><xsl:value=“date”/>
</xsl:if>
<xsl:if>
Exercise 4
□ The items that will be selected within the <xsl:for-each> loop can be filtered by adding a criterion within square brackets, directly after the element name.
□ Operators that can be used to formulate such tests:
= Equal to
!= Not equal to
< Less than
> Greater than
Exercise 5
□ <xsl:value-of>□ <xsl:text>□ <xsl:for-each>□ <xsl:sort>□ <xsl:if>
Elements within <xsl:template>