El mar, 27-09-2005 a las 11:39 +0100, Ross Gardler escribió:
> HANAX wrote:
> > Now more details:
> 
> Can you provide even more details in the form of a path against SVN, 
> attach it to an issue in Jira and I'll try and have a look at what is 
> going on soon.
> 
> >>WARNING:
> >>Further you have to consider that 
> >><xsl:template name="voice-markup-head">
> >>  <xsl:apply-templates select="//document"/>
> >></xsl:template>
> >>will match *any* occurrence of the document element - even if they 
> >>included by another nugget-contract. 
> > 
> > 
> > Now I really don't understand... If I use <xsl:apply-templates 
> > select="//document"/>, I need to process all document nodes. I expected 
> > that I'm working with xdoc source document, didn't I? So I thought taht 
> > every contract has as it's input same xdoc... I thought that I finally have 
> > idea how contracts works but seems that I haven't :(
> 
> I think you do "have it", it's just that Thorsten has introduced another 
> layer of complexity above, so you only "have" part of it ;-)

Hmm, I do not see the complexity. ;-)
in voice.fv:
<forrest:contract name="voice-markup">
  <forrest:properties contract="voice-markup">
    <forrest:property name="voice-markup" nugget="get.body">
      <url>#{$cocoon/parameters/getRequest}.mxml</url>
    </forrest:property>
  </forrest:properties>
</forrest:contract>

in voice-markup.ft
<xsl:template name="voice-markup-head">
  <xsl:param name="voice-markup"/>
  <xsl:copy-of select="$voice-markup"/>
</xsl:template>

OR:
See the attached patch. It is basically the same only that the contract
is now doing exactly what the xsl before does.

Either way the *real* problem that you have is that the last pipe in
views is stripping the namespaces which prevent that the content of the
voice markup is rendered correctly. I did not had time (and will not in
the near future) to fix the strip_namespaces.xsl to let the voice ns
through. Sorry. For your development comment it out and build views
again.

HTH
-- 
thorsten

"Together we stand, divided we fall!" 
Hey you (Pink Floyd)
Index: src/documentation/content/xdocs/voice.fv
===================================================================
--- src/documentation/content/xdocs/voice.fv	(revisión: 291373)
+++ src/documentation/content/xdocs/voice.fv	(copia de trabajo)
@@ -19,7 +19,13 @@
 <forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0";>
   <forrest:view type="xhtml">
     <forrest:css url="default.css"/>
-    <forrest:contract name="voice-markup"/>
+    <forrest:contract name="voice-markup">
+      <forrest:properties contract="voice-markup">
+        <forrest:property name="voice-markup" nugget="get.body">
+          <url>#{$cocoon/parameters/getRequest}.source.rewritten.xml</url>
+        </forrest:property>
+      </forrest:properties>
+    </forrest:contract>
     <forrest:contract name="siteinfo-meta">
       <forrest:properties contract="siteinfo-meta">
         <forrest:property name="siteinfo-meta" nugget="get.build.info">
@@ -38,31 +44,83 @@
           </forrest:contract> 
         </forrest:hook>
               <forrest:hook name="nav-main-hook">
-                <!--forrest:contract name="nav-main"/-->
-              	<!--<forrest:contract name="nav-main-sub"/>-->
+               <!-- <forrest:contract name="nav-main">
+            <forrest:properties contract="nav-main">
+              <forrest:property name="nav-main" nugget="get.navigation">
+                <url>${cocoon.parameters.getRequest}.navigation.xml</url>
+              </forrest:property>
+            </forrest:properties>
+          </forrest:contract>
+          <forrest:contract name="nav-main-sub">
+            <forrest:properties contract="nav-main-sub">
+              <forrest:property name="nav-main-sub" nugget="get.navigation">
+                <url>#{$cocoon/parameters/getRequest}.navigation.xml</url>
+              </forrest:property>
+            </forrest:properties>
+          </forrest:contract>-->
               </forrest:hook>
       </forrest:hook>
       <forrest:hook name="page">
         <forrest:hook name="leftbar">
-          <forrest:contract name="nav-section"/>
-          <forrest:contract name="search-input"/>
+         <!-- <forrest:contract name="nav-section">
+            <forrest:properties contract="nav-section">
+              <forrest:property name="nav-section" nugget="get.navigation">
+                <url>#{$cocoon/parameters/getRequest}.navigation.xml</url>
+              </forrest:property>
+            </forrest:properties>
+          </forrest:contract>
+          <forrest:contract name="search-input">
+            <forrest:properties contract="search-input">
+              <forrest:property name="search-input">
+                <search name="MyProject" domain="mydomain" provider="google"/>
+              </forrest:property>
+            </forrest:properties>
+          </forrest:contract>-->
         </forrest:hook>
                 <!-- You can group elements to a template and call it from any view.
-	                e.g.
-	                <forrest:hook name="export-link">
-	                  <forrest:contract name="content-txt-link"/>
-	                  <forrest:contract name="content-pdf-link"/>
-	                </forrest:hook>
-	                can be called as <forrest:call-template name="export-link"/>
-	                when saved as {project:resources}/templates/export-link.vt.xml 
+                  e.g.
+                  <forrest:hook name="export-link">
+                    <forrest:contract name="content-txt-link"/>
+                    <forrest:contract name="content-pdf-link"/>
+                  </forrest:hook>
+                  can be called as <forrest:call-template name="export-link"/>
+                  when saved as {project:resources}/templates/export-link.vt.xml 
                   
                 <forrest:call-template name="export-link"/>
-	              -->
+                -->
 
         <forrest:hook name="content">
-          <forrest:contract name="content-title"/>
-          <forrest:contract name="content-minitoc"/>
-          <forrest:contract name="content-main"/>
+          <!-- < r291360 
+          <forrest:contract name="content-title"/>-->
+          <forrest:contract name="content-title">
+            <forrest:properties contract="content-title">
+              <forrest:property name="content-title" nugget="get.body">
+                <url>#{$cocoon/parameters/getRequest}.body.xml</url>
+              </forrest:property>
+            </forrest:properties>
+          </forrest:contract>
+          <!-- < r291360 
+          <forrest:contract name="content-minitoc"/>-->
+          <forrest:contract name="content-minitoc">
+            <forrest:properties contract="content-minitoc">
+              <forrest:property name="content-minitoc-toc" nugget="get.toc">
+                <url>#{$cocoon/parameters/getRequest}.toc.xml</url>
+              </forrest:property>
+              <forrest:property name="content-minitoc-conf" >
+                <toc max-depth="2" 
+                min-sections="1" location="page"/>
+              </forrest:property>
+            </forrest:properties>
+          </forrest:contract>
+          <!-- < r291360 
+          <forrest:contract name="content-main"/>-->
+          <forrest:contract name="content-main">
+            <forrest:properties contract="content-main">
+              <forrest:property name="content-main" nugget="get.body">
+                <url>#{$cocoon/parameters/getRequest}.body.xml</url>
+              </forrest:property>
+            </forrest:properties>
+          </forrest:contract>
           <!--
           <forrest:contract name="content-include-html">
             <forrest:properties contract="content-include-html">
@@ -83,7 +141,18 @@
       </forrest:hook>
     </forrest:hook>
     <forrest:hook name="footer">
-      <forrest:contract name="siteinfo-feedback"/>
+      <!-- < r291360 
+      <forrest:contract name="siteinfo-feedback"/>-->
+      <forrest:contract name="siteinfo-feedback">
+        <forrest:properties contract="siteinfo-feedback">
+          <forrest:property name="siteinfo-feedback">
+            <feedback to="[EMAIL PROTECTED]"
+              href="mailto:[EMAIL PROTECTED]&#160;" >
+              Send feedback about the website to:
+            </feedback>
+          </forrest:property>
+        </forrest:properties>
+      </forrest:contract>
       <forrest:contract name="siteinfo-last-published"/>
     </forrest:hook>
   </forrest:view>
Index: templates/voice-markup.ft
===================================================================
--- templates/voice-markup.ft	(revisión: 291373)
+++ templates/voice-markup.ft	(copia de trabajo)
@@ -15,20 +15,124 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<forrest:contract name="voice-markup" type="nugget"
+<forrest:contract name="voice-markup" type="nugget" 
   xmlns:forrest="http://apache.org/forrest/templates/1.0";>
-  <description>
-    This functions will output the voiceXML markup for the document.
-    NOTE: This is a placeholder template only - it is not currently functional.
-  </description>
-  <usage><![CDATA[<forrest:contract name="voice-markup"/>]]></usage>
-  <forrest:template
-  xmlns:forrest="http://apache.org/forrest/templates/1.0";
-  format="xhtml" name="voice-markup" inputFormat="xsl" body="false" head="true">
-    <xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
-		  <xsl:template name="voice-markup-head">
-		    <meta name="voice-generator" content="org.apache.forrest.plugins.output.voice"/>
-		  </xsl:template>
-		</xsl:stylesheet>
-	</forrest:template>
-</forrest:contract>
+  <description> This functions will output the voiceXML markup for the 
+    document. NOTE: This is a placeholder template only - it is not currently 
+    functional. </description>
+  <usage><![CDATA[<forrest:contract name="voice-markup">
+  <forrest:properties contract="voice-markup">
+    <forrest:property name="voice-markup" nugget="get.body">
+      <url>#{$cocoon/parameters/getRequest}.source.rewritten.xml</url>
+    </forrest:property>
+  </forrest:properties>
+</forrest:contract>]]></usage>
+  <forrest:template 
+    xmlns:vxml="http://www.w3.org/2001/vxml"; 
+    xmlns:ev="http://www.w3.org/2001/xml-events"; 
+    xmlns:xv="http://www.voicexml.org/2002/xhtml+voice"; xml:lang="en-US" 
+    format="xhtml" name="voice-markup" inputFormat="xsl" body="false" 
+    head="true">
+    <xsl:stylesheet version="1.1" 
+      xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
+      <xsl:template name="voice-markup-head">
+        <xsl:param name="voice-markup"/>
+        <meta name="voice-generator" 
+          content="org.apache.forrest.plugins.output.voice"/>
+          <xsl:call-template name="voiceNavigation">
+            <xsl:with-param name="root" select="$voice-markup/document/body"/>
+          </xsl:call-template>
+      </xsl:template>
+      <xsl:template name="voiceNavigation">
+        <xsl:param name="root"/>
+        <vxml:form id="main">
+          <vxml:var name="activeSection"/>
+          <vxml:var name="navigateDir"/>
+          <vxml:block>
+            <xsl:for-each select="$root/section[position() > 1]">
+              <vxml:assign expr="true">
+                <xsl:attribute name="name">
+                  <xsl:value-of select="@id"/>
+                </xsl:attribute>
+              </vxml:assign>
+            </xsl:for-each>
+          </vxml:block>
+          <xsl:for-each select="$root/section">
+            <vxml:field>
+              <xsl:attribute name="name">
+                <xsl:value-of select="@id"/>
+              </xsl:attribute>
+              <vxml:grammar src="simpleNav.jsgf"/>
+              <vxml:prompt timeout="2s"> Section <xsl:value-of 
+                select="position()"/>: <xsl:value-of select="title"/>. 
+                <vxml:break/> <xsl:apply-templates/> </vxml:prompt>
+              <vxml:filled>
+                <vxml:assign name="activeSection">
+                  <xsl:attribute name="expr">
+                    <xsl:value-of select="position()"/>
+                  </xsl:attribute>
+                </vxml:assign>
+                <vxml:assign name="navigateDir">
+                  <xsl:attribute name="expr">
+                    <xsl:value-of select="@id"/>
+                  </xsl:attribute>
+                </vxml:assign>
+                <vxml:throw event="navigate.simple"/>
+              </vxml:filled>
+              <vxml:catch event="noinput">
+                <vxml:assign expr="true">
+                  <xsl:attribute name="name">
+                    <xsl:value-of select="@id"/>
+                  </xsl:attribute>
+                </vxml:assign>
+                <vxml:assign name="activeSection">
+                  <xsl:attribute name="expr">
+                    <xsl:value-of select="position()"/>
+                  </xsl:attribute>
+                </vxml:assign>
+                <vxml:assign name="navigateDir" expr="'next'"/>
+                <vxml:throw event="navigate.simple"/>
+              </vxml:catch>
+            </vxml:field>
+          </xsl:for-each>
+          <vxml:field name="navigate_wait_for_good_index">
+            <vxml:grammar type="application/srgs"> #ABNF 1.0; language en-us; 
+              mode voice; root $command; private $number = 1<xsl:for-each 
+              select="$root/section[position() > 1]"> | <xsl:value-of 
+              select="position()+1"/></xsl:for-each>; public $command = $number 
+              {$ = $$}; </vxml:grammar>
+            <vxml:prompt timeout="5s"> Say correct section index. </vxml:prompt>
+            <vxml:filled>
+              <vxml:assign name="navigateDir" 
+                expr="navigate_wait_for_good_index"/>
+              <vxml:throw event="navigate.simple"/>
+            </vxml:filled>
+            <vxml:catch event="help nomatch noinput" count="1"> You can say 
+              index from 1 to <xsl:value-of select="count($root/section)"/> 
+              </vxml:catch>
+            <vxml:catch event="help nomatch noinput" count="2"/>
+          </vxml:field>
+          <vxml:catch event="navigate.simple">
+            <vxml:if cond="navigateDir == 'next'">
+              <vxml:assign name="activeSection" expr="activeSection + 1"/>
+              <vxml:elseif cond="navigateDir == 'back'"/>
+              <vxml:assign name="activeSection" expr="activeSection - 1"/>
+              <vxml:else/>
+              <vxml:assign name="activeSection" expr="navigateDir"/>
+            </vxml:if>
+            <vxml:if> <xsl:attribute name="cond">activeSection &lt;= 0 || 
+              activeSection &gt;<xsl:value-of 
+              select="count($root/section)"/></xsl:attribute> Index <vxml:value 
+              expr="activeSection"/> is out of range. <vxml:clear 
+              namelist="navigate_wait_for_good_index"/> <xsl:for-each 
+              select="$root/section"> <vxml:elseif> <xsl:attribute 
+              name="cond">activeSection == <xsl:value-of 
+              select="position()"/></xsl:attribute> </vxml:elseif> <vxml:clear> 
+              <xsl:attribute name="namelist"> <xsl:value-of select="@id"/> 
+              </xsl:attribute> </vxml:clear> </xsl:for-each> </vxml:if>
+          </vxml:catch>
+        </vxml:form>
+      </xsl:template>
+    </xsl:stylesheet>
+  </forrest:template>
+</forrest:contract>
\ No newline at end of file

Reply via email to