From: "Simeon Walker" <[EMAIL PROTECTED]>
> Hi,
> I am having trouble handling ResourceNotFound errors in my
> sub-sitemaps. My main sitemap just deals with aggregation, stylesheet
> selection and transformation to html. The sub-sitemaps define
> the production xml.
>
> If I request a page that does not exist the top level sitemap
> won't handle the error (I think) since there are matches for ** and
> **/ which request content from sub-sitemaps. If the requested file
> does not exist I can see the exception in the logs but no error
> handler is called. I simply get my page/menus etc with blank
> content.
The top sitemap *should* handle the error and IIRC it did, but I had to make
the reference to the stylesheet in the root sitemap be resolved with
context:// .
AFAIK the subsitemap uses the first available parent sitemap handle-errors
resolving relative to its own context.
> I have tried serializing xml from the sub-sitemap error handler
> so that the root sitemap could transform this and produce a readable
> message. But, I am correct in thinking this is not allowed?
You should declare the handle-errors in the sub sitemap and handle them
there, or leave it all to the root sitemap.
> Perhaps I could use the resource-exists action in the sub-sitemaps?
> I can't find an example of this anywhere. I can get it to work in
> the case where the file exists but what happens when it doesn't?
>
> <map:match pattern="**.xml">
> <map:act type="lang-select">
> <map:act type="resource-exists" url="{../1}_{lang}.xml">
> <map:generate src="{../../1}_{../lang}.xml"/>
> </map:act>
> </map:act>
> <map:serialize type="xml"/>
> </map:match>
>
> In this example, how can I send something else back when the
> resource does not exist?
As with all actions, when the action fails, it continues processing outside
of itself.
This is how it could work:
<map:match pattern="**.xml">
<map:act type="lang-select">
<map:act type="resource-exists" url="{../1}_{lang}.xml">
<!--if it doesn't fail, it executes what's in here -->
<map:generate src="{../../1}_{../lang}.xml"/>
<map:serialize type="xml"/>
</map:act>
</map:act>
<!--if it fails, it executes what's here -->
<map:generate src="failerrormessage.xml"/>
<map:serialize type="xml"/>
</map:match>
--
Nicola Ken Barozzi [EMAIL PROTECTED]
- verba volant, scripta manent -
(discussions get forgotten, just code remains)
---------------------------------------------------------------------
---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>
To unsubscribe, e-mail: <[EMAIL PROTECTED]>
For additional commands, e-mail: <[EMAIL PROTECTED]>