On Mon, 2009-11-16 at 09:23 +0100, Vicent Mas wrote:
> On 2009-11-14 "Sina K. Heshmati" <s...@khakbaz.com> said:
> 
...
> > <forrest:contract name="content-title"
> >    dataURI="cocoon://#{$getRequest}.title.xml"/>
> > 
> > Please note that, the content of *.title.xml is in this form: <title>A
> >  Title</title>
> > ...
> > 
> 
> OK. Now I understand the problem better... but I still cannot fix it. I've 
> done 
> the following:
> 
> 1) I wasn't very happy with the dirty trick of using an id attribute for 
> passing the second title. So I've extended the document-v2.dtd with a new 
> btitle element. I use this element to pass the body title:
> 
> <document>
>       <head><title>Head title</title></head>
>       <body><btitle>Body title</btitle>
> ...

I am not sure whether you really want to do that since you need to
maintain the resulting dtd.

> 
> 2) I've overriden the content-title.ft contract. I've commented out the lines:
>           <!--<forrest:part>
>             <xsl:comment>+ |start content-title +</xsl:comment>
>             <h1 class="content-title">
>               <xsl:value-of select="$content-title/*"/>
>             </h1>

Sian explained that $content-title is from <xsl:param
name="content-title" select="/"/>

Meaning you can pass the content from the structurer and if not it will
use the doc root. 

Another way would be to pass it via a property:

<forrest:contract name="content-title">
  <forrest:property name="content-title">
    <title>my title</title>
  </forrest:property>
</forrest:contract>

You can as well create a complete different pipeline which will return
you the different values dynamically. 

<forrest:contract name="content-title"
dataURI="cocoon://#{$getRequest}.myTitle.xml"/>

Where you then implement a pipeline <match pattern="*.myTitle.xml"/>
which should return <title>myTitle</title>.


>             <xsl:comment>+ |end content-title +</xsl:comment>
>           </forrest:part>-->
> 
> 3) By imitating content-title.ft I've created a new contract, body-title.ft. 
> It should create the body title. I've attached it to this mail.
> 
> 4) Imitating the dispatcher dataModel.xmap (in particular the title.xml 
> pipeline) I've modified my local sitemap and added the following lines:
> 
>     <map:pipeline>
>       <map:match pattern="**.btitle.xml">
>         <map:generate src="cocoon://{1}.xml" />
>         <map:transform src="{lm:dataModel-xml-document-to-btitle.xsl}" />
>         <map:serialize />


Make sure that the above serializer returns xml. Seeing your error below
I think that the default is xhtml. Try <map:serialize type="xml"/>

That should work.

salu2

>       </map:match>
>     </map:pipeline>
> 
> 5) in my local stylesheets directory I've created the file xslt/xml/document-
> to-btitle.xsl. It extracts the content of the btitle element.
> 
> Now I run forrest and get the following error:
> 
> Message: null
> Description: No details available.
> Sender: org.apache.cocoon.servlet.CocoonServlet
> Source: Cocoon Servlet
> cause
> 
> dispatcherError: 500 - Internal server error
> The contract "body-title" has thrown thrown an exception by resolving raw 
> data 
> from "cocoon://index.btitle.xml".
> 
> dispatcherErrorStack:
>  java.io.IOException: Server returned HTTP response code: 503 for URL: 
> http://www.w3.org/TR/html4/loose.dtd
> 
> Request URI
> index.html
> request-uri
> /index.html;jsessionid=3tf3ujcnmsumk
> 
> Could you give me a hand (again) please? I'm reading sitemap documentation, 
> but it is not easy for a newbie. And Google didn't help me.
> 
> Thanks
> 
> Vicent
> 
> PS: sorry for the lengthy mail.
> ::
> 
>       Share what you know, learn what you don't
> 
-- 
Thorsten Scherler <thorsten.at.apache.org>
Open Source Java <consulting, training and solutions>

Sociedad Andaluza para el Desarrollo de la Sociedad 
de la Información, S.A.U. (SADESI)