Subject: Re: Implementing an Blogger-style template using XSLT
From: "Terence Kearns" <terence.kearns@xxxxxxxxxxxxxxx>
Date: Tue, 21 Feb 2006 18:18:04 +1100
|
doh!, the thing with a mailing list is you can't ammend you post. Here
is the "finished" version of the template I made for you. That last
one was an old copy from the clipboard.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:MBTemplate="http://www.mydomain.com/Template">
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title><xsl:value-of select="MBTemplate:sitetitle" /></title>
</head>
<body>
<div id="menucontainer"></div>
<div id="container">
<div id="sidebar">
<h2 id="welcomenote">Welcome to My Site</h2>
<xsl:apply-templates select="MBTemplate:submenus" />
</div>
<div id="main">
<xsl:value-of select="MBTemplate:sitetitle" />
<xsl:apply-templates select="MBTemplate:entries" />
</div>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="MBTemplate:submenus">
<xsl:value-of select="MBTemplate:submenuheader" />
<ul class="submenu">
<xsl:apply-templates select="MBTemplate:submenu" />
</ul>
</xsl:template>
<xsl:template match="MBTemplate:submenu">
<li><xsl:value-of select="MBTemplate:submenulink" /></li>
</xsl:template>
</xsl:stylesheet>
On 21/02/06, Terence Kearns <terence.kearns@xxxxxxxxxxxxxxx> wrote:
> Sounds suspiciously like you want us to write your XSLT file for you :D
>
> Okay welll here's a start then (untested). But I'm not gonna do your
> homework for you.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet
> version="1.0"
> xmlns="http://www.w3.org/1999/xhtml"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:MBTemplate="http://www.mydomain.com/Template">
>
> <xsl:template match="/">
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
> <title>Document Title</title>
> </head>
> <body>
> <div id="menucontainer"></div>
> <div id="container">
> <div id="sidebar">
> <h2 id="welcomenote">Welcome to My Site</h2>
> <xsl:apply-templates select="BTemplate:submenus" />
> </div>
> <div id="main">
> <MBTemplate:sitetitle/>
> <xsl:apply-templates select="MBTemplate:entries" />
> </div>
> </div>
> </body>
> </html>
> </xsl:template>
>
> <xsl:template match="BTemplate:submenus">
> <MBTemplate:submenuheader/>
> <ul class="submenu">
> <xsl:apply-templates select="BTemplate:submenu" />
> </ul>
> </xsl:template>
>
> <xsl:template match="BTemplate:submenu">
> <li><MBTemplate:submenulink/></li>
> </xsl:template>
>
> </xsl:stylesheet>
>
> First, you don't currently have a BTemplate:submenus element to match
> on in your source document just like other elements you included in
> your template but I not contained in your source. Either you will have
> to change your source XML to generate the elements you wish to match
> in your templates, or you need to adjust your template references.
>
> Second, I only included a suggested xsl:template for your submenus.
> The rest is up to you! Go check out the XSL tutorials at zvon.org -
> there would be a tonne more references that I'm sure ppl here would be
> happy to provide you.
>
> hint: you will need to define a <xsl:template
> match="MBTemplate:entries"> container
>
>
>
>
>
>
> On 21/02/06, publicreg@xxxxxxxxxxxxxxxx <publicreg@xxxxxxxxxxxxxxxx> wrote:
> > Hi,
> >
> > I'm trying to implement a Blogger-style templating system and would like
> > to get some feedback on whether it's feasible or not. While it's true
that
> > an XSLT file itself would be a template, some of my users are not keen on
> > learning it and I'm trying to strike some middle ground here.
> >
> > The premise is this:
> >
> > The template file would be an extension of XHTML and looks like this:
> >
> > -------------------------
> >
> > <?xml version="1.0" encoding="utf-8" ?>
> > <html xmlns:MBTemplate="http://www.mydomain.com/Template">
> > <head>
> > <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> > <title>Document Title</title>
> > </head>
> > <body>
> > <div id="menucontainer">
> > </div>
> > <div id="container">
> > <div id="sidebar">
> > <h2 id="welcomenote">Welcome to My Site</h2>
> > <MBTemplate:submenus>
> > <MBTemplate:submenu>
> > <MBTemplate:submenuheader />
> > <ul class="submenu">
> > <li><MBTemplate:submenulink
/></li>
> > </ul>
> > </MBTemplate:submenu>
> > </MBTemplate:submenus>
> > </div>
> > <div id="main">
> > <MBTemplate:sitetitle />
> > <MBTemplate:entries>
> > <MBTemplate:entry>
> > <div class="avatar">
> >
<p><MBTemplate:userlink><MBTemplate:avatar /><br
> > /><MBTemplate:username /><br /><MBTemplate:msisdn
> > /></MBTemplate:userlink></p>
> > </div>
> > <div class="entry">
> > <div class="entry2">
> > <div
class="entry-header"><MBTemplate:entry-title /></div>
> > <div
class="entry-contents">
> >
<MBTemplate:entry-contents />
> > </div>
> > <div
> > class="entry-footer"><p><MBTemplate:entry-meta><MBTemplate:entry-date
> > /></MBTemplate:entry-meta></p></div>
> > </div>
> > </div>
> > </MBTemplate:entry>
> > </MBTemplate:entries>
> > </div>
> > </div>
> > </body>
> > </html>
> >
> >
> > -------------------------
> >
> > Then, the data input would come in the form of an XML document that looks
> > like this:
> >
> > --------------------------
> >
> > <?xml version="1.0" encoding="utf-8" ?>
> > <MBData:Output xmlns:MBData="http://www.mydomain.com/MyData">
> > <MBData:Submenu>
> > <MBData:Item href="http://www.google.com">Link
name</MBData:Item>
> > </MBData:Submenu>
> > <MBData:Entries>
> > <MBData:Entry>
> > <MBData:Title>My Title</MBData:Title>
> > <MBData:Content>My article</MBData:Content>
> > <MBData:PostedData>11th Jan
2005</MBData:PostedData>
> > </MBData:Entry>
> > </MBData:Entries>
> > </MBData:Output>
> >
> > --------------------------
> >
> > Finally, I'd have an XSLT file that uses the 2 files and then translates
> > into XHTML code that I can output to the browser.
> >
> > How, folks? Do you think it's feasible to do this? Would appreciate any
> > pointers in the right direction.
> >
> > Thanks!
> > Wong
|