Subject: Re: multiple output files/getting command-line parameters in XT From: "James Tauber" <jtauber@xxxxxxxxxxx> Date: Wed, 14 Jul 1999 13:03:51 +0800 |
----- Original Message ----- From: Mike Brown <mbrown@xxxxxxxxxxxxx> > James Tauber wrote: > > What I've started to do lately when producing multiple > > HTML files from a single (possibly large) XML document > > is to generate *all* the HTML using XT's extension > > mechanism and making the result tree simply a "status > > document" (often just output to stdout). > > Can you provide a short example of how you're doing this? Sure. I'll provide the full stylesheet soon, but for now... First of all, I have two named templates that call Java via XT's extension mechanism. The first, mkdir, makes a directory with the name passed as the parameter "directory": <xsl:template name="mkdir"> <xsl:param-variable name="directory"/> <P>created directory <xsl:value-of select="$directory"/>:<xsl:value-of select="f:mkdir(f:new(string($directory)))" xmlns:f="http://www.jclark.com/xt/java/java.io.File"/></P> </xsl:template> Notice that this constructs a P element in the result tree with a status message "created directory foobar true/false". The result tree becomes the status message and the real work is done by the side-effect of calling "mkdir" and "write" (below). The second named template I generally use is called "write", defined as: <xsl:template name="write"> <xsl:param-variable name="contents"/> <xsl:param-variable name="file"/> <xsl:value-of select="w:write($contents,string($file))" xmlns:w="http://www.jclark.com/xt/java/com.jclark.xsl.sax.HTMLFileWriter"/> <P>wrote file <xsl:value-of select="$file"/></P> </xsl:template> This writes the given contents to the given file. It also constructs a status message in the result tree. My root template calls templates, one of which creates XMLSOFTWARE's homepage, another of which creates all of the category pages (which are not known in advance as they are derived from the single xml document that XMLSOFTWARE is made from). <xsl:template match="/"> <xsl:call-template name="homepage"/> <xsl:call-template name="category-pages"/> </xsl:template> The start of the template "homepage" looks like this: <xsl:template name="homepage"> <xsl:call-template name="mkdir"> <xsl:param name="directory">xmlsoftware-html</xsl:param> </xsl:call-template> <xsl:call-template name="write"> <xsl:param name="file">xmlsoftware-html/index.html</xsl:param> <xsl:param name="contents"> <HTML> <HEAD> <TITLE>XMLSOFTWARE: The XML Software Site</TITLE> ... You can see that it called "mkdir" and then "write" with all the HTML as the value of "contents". I hope this helps. James Tauber XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: multiple output files/getting c, Sebastian Rahtz | Thread | RE: multiple output files/getting c, Kay Michael |
Re: multiple output files/getting c, James Tauber | Date | Location of XML2DTD program, Miloslav Nic |
Month |