Cameron McCormack wrote:
Gav:
Ok, will take another look, but initially I assumed you wanted to use
DTDs as you declared them in your code, this is why it is failing as
It can not find the specified DTD.
Right, OK. I just declared them because, from looking at the sample
sitemap.xmap file, I gathered that was the way you had to do it.
The sourcetype resolver can only work if you define the type of
document. To do this you have to use DTD's.
You could work without DTD's but you would have to place your home grown
files in a specific directory so that you can match on location rather
than type.
If you did this you would have to turn validation off (see
forrest.properties)
see below for more...
OK, forget I mentioned DTDs. :-)
There must be some way I can tell Cocoon/Forrest, via the sitemap.xmap
file, that when a file called status.xml is requested, it should be
passed transformed with a particular XSLT file into a document-v20
document, and from there, converted into either HTML or PDF, as would
normally be done. Cocoon is quite complicated, though, and I haven't
yet got my head around it. (Nor do I quite understand the relationship
between Forrest and Cocoon...)
(you don't mention which version of Forrest you are working with, the
below is 0.7, in 0.8-dev this will still work but you should realy use
the locationmap to resolve source locations).
<map:match pattern ="path/to/my/files/**.xml">
<map:generate src="{project:content.xdocs}/path/to/my/sources/{{1}.xml"/>
<map:transform src="myFormat-to-document.xsl"/>
<map:serialize type="xml"/>
</map:match>
Gavin points to some examples in forrest, but these all use the
sourceresolver, and requrie a DTD.
I really would recomend using a DTD it makes things much more flexible
and will prevent time hunting errors in your source files. But the
choice is yorus.
Ross