forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thorsten Scherler <thors...@apache.org>
Subject [Summary] Recent proposals around v2
Date Tue, 22 Nov 2005 22:05:07 GMT
Hi all,

trying to summarize a wee bit the recent discussion around v2.

forrest:contracts & forrest:properties
**************************************
Structurer
^^^^^^^^^^
1) nuggets (extra data requested by the contract)
Nuggets are now defined in the contract element instead of in the
forrest:properties. As well the former @nugget is now called @dataURI to
reflect better the function of the attribute.
e.g.
<forrest:contract name="nav-main-testing" 
        dataURI="cocoon://index.navigation.xml"/>

2) The properties have lost their parent node. 
e.g.
<forrest:contract name="nav-main-testing" 
  dataURI="cocoon://index.navigation.xml">
  <forrest:property name="nav-main-testing-test1" >x</forrest:property>
  <forrest:property name="nav-main-testing-test2" >
    <foo/>
  </forrest:property>
  <forrest:property name="nav-main-testing-test3"
>xxx</forrest:property>
</forrest:contract>

Contract implementation
^^^^^^^^^^^^^^^^^^^^^^^
1) contracts are now standalone, which means that they need to
match="/".

a) If raw data (dataURI) is requested it matches the first element of
the dataURI. 

b) If no dataURI is requested the dispatcher passes a dummy document to
the transformation containing only one element: forrest:foo.
e.g.
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:param name="nav-main-testing" select="/"/>
  <xsl:template match="/" >
    <content>
      <div id="tabs">
        <xsl:comment>+ |start Tabs new +</xsl:comment>
        <xsl:copy-of 
          select="$nav-main-testing/navigation/tab/ul[@id='nav-main']"/>
        <xsl:comment>+ |end Tabs +</xsl:comment>
      </div>
    </content>
  </xsl:template>
</xsl:stylesheet>

2) the resulting transformation have to go into a container element
named "content".

a) We proposed two new attributes for the "content" element (@xpath and
@structureAware). 
Actually I gave it a second thought and I think it would be better to
only apply @xpath under the new circumstances of path-prefixing hooks.

The attribute @xpath determines that the elements within the content
container should be insert in a given location. In html for example some
function need to be inserted into the /html/head and/or /html/body. 

The location of the /html/body *normally* is defined through a
forrest:hook path (we called it structureAware="true"). So I propose
that 
<content>
...
</content>
stands for structureAware="true" -> the contract will be injected in the
path determined by the forrest:hooks.

When the @xpath it set, the container content will be added to the value
of the @xpath. 
<content xpath="/html/head">
...
</content>
Like element("/html/head").appendChild(newChild).

b) Till now we assumed that all hooks go
into /html/body but this need to be more flexible. I propose to add a
new attribute @hooksXpath to the forrest:view. I propose this attribute
@hooksXpath as required.

<forrest:view type="html" hooksXpath="/html/body">
 <forrest:hook name="htmlBodyHook"/>
</forrest:view>

that will be transformed into 
<html>
 <body>
  <forrest:hook name="htmlBodyHook"/>
 </body>
</html>

c) We need another attribute in hooks @element which would not create
a div but the value of @element:
<forrest:hook element="html">
 <forrest:hook element="body">
  <forrest:hook name="htmlBodyHook"/>
 </forrest:hook>
</forrest:hook>

 that will be transformed into 
 <html>
  <body>
   <forrest:hook name="htmlBodyHook"/>
  </body>
 </html>


salu2
-- 
thorsten

"Together we stand, divided we fall!" 
Hey you (Pink Floyd)


Mime
View raw message