An Introduction to XSLT - Another Template
(Page 3 of 6 )
We start another template that looks for children of the <article> element. We'll now use another XSL element, the for-each element:
<xsl:for-each select="headline">
<B><xsl:value-of/></B><BR/>
</xsl:for-each>
This template looks for elements that match <headline> and then copies their content, makes them bold and adds a line-break. We then need another for-each template to match any <story> patterns:
<xsl:for-each select="story">
<xsl:value-of/><BR/>
</xsl:for-each>
This time, we don't want the contents made bold, but we can still include a line-break. Now we just close the template and the root element:
</xsl:template>
</xsl:stylesheet>
That's it, as far as the stylesheet goes. Save the file as style.xls in the same folder as your XML file. For reference, the whole stylsheet should look like this:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<Html>
<Head>
<Title>News</Title>
</Head>
<Body>
<CENTER><H1>Todays News</H1></CENTER><BR/>
<xsl:apply-templates select="news/article"/>
</Body>
</Html>
</xsl:template>
<xsl:template match="article">
<xsl:for-each select="headline">
<B><xsl:value-of/></B><BR/>
</xsl:for-each>
<xsl:for-each select="story">
<xsl:value-of/><BR/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Before this will actually work, you need to link the XLST file to the existing XML file, to do this, open the original XML file (news.xml if you're following on from the previous article) and add the following line of code directly below the XML declaration at the top:
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
Now save this file with the name transformedNews.xml and then open it in a browser. You should see a page with the Today's News heading at the top of the page, and the two news stories with their associated headings below this. If you open the XSL file, it will look very similar to a flat XML file, with the declaration and tags in blue and the elements in red. Additionally, XSLT elements will appear in a nice shade of purple.
Next: Discussion of the Output >>
More XML Articles
More By Dan Wellman