"Vicent Mas" <uve...@gmail.com> said:

> On 2009-11-14 Tim Williams <william...@gmail.com> said:
>> On Sat, Nov 14, 2009 at 7:38 AM, Vicent Mas <uve...@gmail.com> wrote:
>> > On 2009-11-13 Vicent Mas <uve...@gmail.com> said:
>> >> Hi all,

<snipped/>

>> >> I'd like to know how to specify different titles for the HTML head and
>> >> the HTML body. Is ther a direct way for doing it with Forrest? Or have I
>> >> to do some hacking?

>> > I've been playing around with contracts that seem related to the subject
>> > (namely content-title.ft and title.ft) but I cannot figure out how to do
>> > what I want in an easy way.
>> >
>> I haven't poked around with dispatcher in a long time and don't
>> remember the preferred way of modifying contracts, but it looks like
>> your on the right track with the content-title contract.  That
>> contract appears to output a title in two locations (the two
>> forrest:part elements), you're happy with one, but not the other.
>>
>> It's been a while, so this may not be correct, but you might try...

Tim's solution can perfectly cover your requirement.

>> o) Overriding the content-title contract in your local project,
>> removing the undesired output part.
> 
> Overriding this contract is what I'm trying to do. As I said I want 2 
> different
> titles, head-title and body-title. Right now what I'm doing for specifying
> both titles in my xdoc sources is something like
> 
> <head>
>   <title id="body-title">head-title</title>
> </head>
> 
> This is something dirty I know, but it is my only idea right now.
> 
> My main problem is that I don't understand how content-title.ft works:
> 
>           <forrest:part xpath="/html/head">
>             <xsl:comment>+ |start content-title +</xsl:comment>
>             <xsl:copy-of select="$content-title/*"/>
>             <xsl:comment>+ |end content-title +</xsl:comment>
>           </forrest:part>
> 
> How does the contract get the value "$content-title/*"? If I replace this
> value for a string literal then the title element is not included in the head
> of the generated HTML file but in the body. Why?

In this case, $content-title is bound to 'http://.../yourxdoc.title.xml' for 
it's called this way:

<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>

>> o) Finding the right contract to override to output the title in a new
>> location (override that contract, find the right params to pass in,
>> etc.)
>>
> 
> I don't understand what you mean. As I said what I want is 2 different titles.
> I'm happy with the current locations where titles appear in the generated HTML
> files.

What I think Tim meant was is to make head/title available using a new dataURI, 
say *.head.title.xml and call the content-title contract or the one you'll have 
made for head/title using the new dataURI.

Sina