230 likes | 344 Views
Digital Media Technology. Week 6. XSLT. XML Source. XSLT Stylesheet. XML Result. 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.
E N D
Digital Media Technology Week 6
XSLT XML Source XSLT Stylesheet XML Result
<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>
Getting started • Include a template that points to the root element of the 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> ….</body> </letter>
XSLT XML Source <?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 Result
Elements within <xsl:template> • 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>
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=“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>
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.
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> <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>
<xsl:sort> • 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:if> • <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>
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:
Elements within <xsl:template> • <xsl:value-of> • <xsl:text> • <xsl:for-each> • <xsl:sort> • <xsl:if>