forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ross Gardler <rgard...@apache.org>
Subject Re: TOC in output plugin
Date Sat, 09 Jul 2005 17:53:00 GMT
HANAX wrote:
> That's true, I really need to start with small steps.
> So here ve are:
> Expecting document in format you described:
>  <document>
>     <header>
>       <title>My Document</title>
>     <header>
>     <body>
>       <section>
>         <title>Section 1</title>
>         ...
>         <section>
>           <title>Section 1.1</title>
>           ...
>         </section>
>         ...
>       </section>
>   
>       <section>
>         <title>Section 2</title>
>         ...
>       </section>
>     </body>
>  </document>
> 
> Now what I need:
> <head> 
>   <title>The title</title>
>   <vxml:form>
>     <vxml:field name="section1">
>        ...
>     </vxml:field>
>     <vxml:field name="section1_1">
>        ...
>     </vxml:field>
>     <vxml:field name="section1_2">
>        ...
>     </vxml:field>
>   </vxml:form>
> </head> 
> 
> How this should be done? Using xsl?

Yes, using XSL

> Currently I have:

>   <map:pipelines>
>     <map:pipeline>
>       <!-- Voice -->
>       <map:match type="regexp" pattern="^(.*?)([^/]*).mxml$">
>         <map:aggregate element="site">
>           <map:part src="cocoon://{1}{2}.xml"/>
>         </map:aggregate>
>         <map:transform src="resources/stylesheets/document2mxml.xsl"/>
>         <map:serialize type="xhtml"/>
>       </map:match>
>     </map:pipeline>
>   </map:pipelines>

You have this in your output.xmap of the plugin, right?

This looks fine, now in your document2mxml.xsl you need

<xsl:template name="voiceNavigation">
   <vxml:form>
   <xsl:for-each select="//section">
        <vxml:field>
  	 <xsl:attribute name="name">
            <xsl:value-of select="title"/>
          </xsl:attribute>
          ...
        </vsml:field>
   </xsl:for-each>
   </vxml:form>
</xsl:tempalte>

To call the template at the relevant point in your stylesheet you need:

<xsl:apply-tempalte name="voiceNavigation"/>

Once we have this basic stuff working we can work with Thorsten getting 
it into a template for views.

NOTE
The map:aggregate is not needed since you are not aggregating any 
documents. Just use <map:generate src="cocoon://{1}{2}.xml"/>, this will 
make the root element of your input to the transformation <document>, so 
you will need to change your XSL accordingly.


> What about serialization? I need output in xhml, what <map:serialize type="xhtml"/>
element really does?

See http://cocoon.apache.org/2.1/userdocs/serializers/xhtml-serializer.html

Ross

Mime
View raw message