On Mon, 2009-11-16 at 09:23 +0100, Vicent Mas wrote:
> On 2009-11-14 "Sina K. Heshmati" <[email protected]> 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)