forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sjur Moshagen <sju...@mac.com>
Subject Re: i18n/dispatcher: language selection contract
Date Fri, 15 Sep 2006 07:58:52 GMT
Den 15. sep. 2006 kl. 08.14 skrev Sjur Moshagen:

> With the correction you made above, I get the same result as you -  
> it works!
>
> Thanks so far, I will now continue with the next step. I'm certain  
> I will be back with more questions soon:-)

So here it comes:-)

I got the simple version to work, now I would like to extract some  
info based on the requested document. I thus changed the pelt.fv hook  
to this:

           <forrest:hook class="languages">
             <forrest:contract name="language-variants"
               dataURI="cocoon://#{$getRequest}.languages.xml"/>
           </forrest:hook>

Notice the @dataURI I've added.

I *think* I understand what's going on - here's what I believe,  
please verify or correct any misconception:

- the dataURI is looked up separately, and the returned data is  
served as an argument (XML snippet) to the contract, to do whatever  
more is needed

I have found matches for cocoon://**.title.xml, and copied it to my  
local sitemap, and modified it:

In src/documentation/sitemap.xmap:

     <map:pipeline>
       <map:match pattern="**.languages.xml">
         <map:generate src="cocoon://{1}.xml" />
         <map:transform src="{lm:dataModel-xml-document-to- 
languages.xsl}" />
         <map:serialize />
       </map:match>
     </map:pipeline>

This should give me the source document, which is transformed with  
the specified stylesheet. I have the following in:

src/documentation/resources/stylesheets/xslt/xml/document-to- 
languages.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/ 
Transform">
   <!--  Template to generate the document language -->
   <xsl:template match="document">
     <xsl:choose>
       <xsl:when test="@xml:lang">
         <xsl:copy-of select="@xml:lang"/>
       </xsl:when>
       <xsl:otherwise>
         <title>*No* language found</title>
       </xsl:otherwise>
     </xsl:choose>

   </xsl:template>
</xsl:stylesheet>


which I think the locationmap should be able to resolv, based on the  
following snippet in plugins/o.a.f.plugin.internal.dispatcher/ 
locationmap.xml:

         <match pattern="dataModel-xml-document-to-**.xsl">
             <select type="exists">
                 <location
                     src="{properties:resources}stylesheets/xslt/xml/ 
document-to-{1}.xsl"
                     />
                 <location
                     src="{lm:std-dataModel-xml-document-to-{1}.xsl}"
                     />
             </select>
         </match>

With all this, and without changing the contract from what was  
working earlier, I get the following error:

Internal Server Error

Message: null

Description: No details available.

Sender: org.apache.cocoon.servlet.CocoonServlet

Source: Cocoon Servlet

Request URI

index.html
cause

dispatcherError: 500 - Internal server error
The contract "language-variants" has thrown thrown an exception by  
resolving raw data from "cocoon://index.languages.xml".

dispatcherErrorStack:
  org.apache.excalibur.source.SourceException: Cannot get input  
stream for cocoon://index.languages.xml
request-uri

/index.html;jsessionid=3anfa8koll7k8
Apache Cocoon 2.2.0-dev



 From what I can see, it isn't able to resolve the stylesheet OR the  
source document for some reason.



Sjur



Mime
View raw message