Problem with XForms Controls

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Problem with XForms Controls

Henrik Pettersen
All,

Apologies if this is a repost, but I am not sure if my previous emails reached this list. (There does not seeem to be a way to configure the Objectweb mailing list to email you your own postings).

I am having some trouble getting the rendering of some xforms controls to behave properly. I've been banging my head against this for days, so if anyone has any insights, it would be very much appreciated. Maybe just a nudge in the general direction? <a href="http://orbeon.com/" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">

Problem:
=======
1. Load initial page /expression/test/new
2. Fill in the box on the 'identifier' line, and click on the link
3. Resulting page has buggy ouput, with $xforms-label-value$ being displayed

View:
=====
<?xml version='1.0' encoding='utf-8' ?>
<xhtml:html xmlns=" "  xmlns:aspic="<a href="http://www.cruk.com/aspic/editor/v1" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">http://www.cruk.com/aspic/editor/v1"  xmlns:ev="<a href="http://www.w3.org/2001/xml-events" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">http://www.w3.org/2001/xml-events "  xmlns:f="<a href="http://orbeon.org/oxf/xml/formatting" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">http://orbeon.org/oxf/xml/formatting"  xmlns:xforms="<a href="http://www.w3.org/2002/xforms" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">http://www.w3.org/2002/xforms"  xmlns:xhtml=" <a href="http://www.w3.org/1999/xhtml" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">http://www.w3.org/1999/xhtml"  xmlns:xi="<a href="http://orbeon.org/oxf/xml/xinclude" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">http://orbeon.org/oxf/xml/xinclude"  xmlns:xs="<a href="http://www.w3.org/2001/XMLSchema" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}"> http://www.w3.org/2001/XMLSchema"  xmlns:xsl="<a href="http://www.w3.org/1999/XSL/Transform" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">http://www.w3.org/1999/XSL/Transform"  xmlns:xxforms="<a href="http://orbeon.org/oxf/xml/xforms" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">http://orbeon.org/oxf/xml/xforms "  xsl:version="2.0" >
  <xhtml:head>
    <xhtml:meta content="text/html; charset=UTF-8"  http-equiv="Content-Type" ></xhtml:meta>
  
    <xhtml:title> Expression Editor </xhtml:title>
  
  
  
    <xforms:model>
   
        <xforms:instance id="text">
            <aspic:text>
                <aspic:number>Number</aspic:number>
            </aspic:text>
        </xforms:instance>


   
        <xforms:instance id="expression" >
            <aspic:claim>
                <aspic:id>-1</aspic:id>        
                  <aspic:expression></aspic:expression>           
                <aspic:nextTokens>
                    <aspic:nextToken>
                        <aspic:id>-1</aspic:id>
                        <aspic:syntax>NEG</aspic:syntax>
                    </aspic:nextToken>
                    <aspic:nextToken>
                        <aspic:id>-1</aspic:id>
                        <aspic:syntax>IDN</aspic:syntax>
                    </aspic:nextToken>
                    <aspic:nextToken>
                        <aspic:id>-1</aspic:id>
                        <aspic:syntax>VAR</aspic:syntax>
- Show quoted text -

                    </aspic:nextToken>
                </aspic:nextTokens>
                 <aspic:variables>
                    <aspic:variable>
                        <aspic:id>-1</aspic:id>
                        <aspic:name>MyVariable</aspic:name>
                    </aspic:variable>
                    <aspic:variable>
                        <aspic:id>-1</aspic:id>
                        <aspic:name>VariableB</aspic:name>
                    </aspic:variable>
                 </aspic:variables>
                 <aspic:identifiers>
                     <aspic:identifier>
                         <aspic:id>-1</aspic:id>
                         <aspic:name>aLocalidentifier</aspic:name>
                     </aspic:identifier>
                     <aspic:identifier>
                         <aspic:id>-1</aspic:id>
                         <aspic:name>aCat</aspic:name>
                     </aspic:identifier>
                     <aspic:identifier>
                         <aspic:id>-1</aspic:id>
                         <aspic:name>aDog</aspic:name>
                     </aspic:identifier>
                 </aspic:identifiers>
                <aspic:selectedToken>
                    <aspic:token></aspic:token>  
                    <aspic:identifier></aspic:identifier>        
                    <aspic:variable></aspic:variable>
                    <aspic:number></aspic:number>
                </aspic:selectedToken>
             </aspic:claim>
         </xforms:instance>
        
         <xforms:instance id="errors-instance">
             <errors/>
         </xforms:instance>
         
        <xforms:instance id="error-template">
            <error id="" indexes="" label="" alert=""/>
        </xforms:instance>         
        
        <!-- Xforms bind -->
        <!--xforms:bind nodeset="instance('expression')/aspic:selectedToken">
            <xforms:bind nodeset="aspic:identifier" type="xs:string" constraint="matches(., '^[a-z]([A-Za-z0-9_])*$')" required="true"/>                   
        </xforms:bind-->

        
    
  <xforms:submission     ref="instance('expression')"
                          id="next-token"
                          method="post"
                          action="/expression/test/next"

                          replace="instance"
                          instance="expression"/>                             
                             
     </xforms:model>
   </xhtml:head>
 
    <xhtml:body>
        <div id="expression" >
            <h2>Expression: </h2>
            <xforms:output ref="instance('expression')/aspic:expression" ></xforms:output>           
        </div>
        <div id="next-token" >        
            <h2>Next Tokens:</h2>        
            <table>
           
                <!-- IDENTIFIER -->
                <xforms:repeat id="identifier-repeat" nodeset="instance('expression')/aspic:nextTokens/aspic:nextToken/aspic:syntax[.='IDN']" >

                    <tr>
                        <td>
                            <xforms:submit appearance="xxforms:link" submission="next-token" >
                                <xforms:label>Insert identifier ... </xforms:label>
                                <xforms:send ev:event="identifier-added-event" submission="next-token" ></xforms:send>

                                <xforms:action ev:event="DOMActivate">
                                    <xforms:setvalue ref="instance('expression')/aspic:selectedToken/aspic:token">IDN</xforms:setvalue>
                                    <xforms:setvalue ref="instance('expression')/aspic:expression" value="concat(instance('expression')/aspic:expression, concat(instance('expression')/aspic:selectedToken/aspic:identifier, '('))"/>

                                </xforms:action>                                     
                            </xforms:submit>
                                   
                            <xforms:select1 ref="instance('expression')/aspic:selectedToken/aspic:identifier"
                                            selection="open"
                                            id="identifier-select"
                                            incremental="true"
                                            appearance="xxforms:autocomplete"
                                            xxforms:filter="true">
                                <xforms:help>Please enter a name for you identifier. Note that the name must start with a lowercase letter</xforms:help>
                                <xforms:alert>Must be a string, starting with a lowercase letter</xforms:alert>

                                <xforms:itemset nodeset="instance('expression')/aspic:identifiers/aspic:identifier">
                                    <xforms:label ref="aspic:name"/>
                                    <xforms:value ref="aspic:name"/>
                                </xforms:itemset>
                            </xforms:select1>
                           
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p></p>
                        </td>
                    </tr>                               
                </xforms:repeat>                                                                               
                                               
                <!-- VARIABLE -->
                <xforms:group>
                    <xforms:repeat id="variable-repeat" nodeset="instance('expression')/aspic:nextTokens/aspic:nextToken[/aspic:syntax[.='VAR']" >

                        <tr>
                            <td>
                                <xforms:submit appearance="xxforms:link" submission="next-token" >
                                    <xforms:label>Insert variable ... </xforms:label>
                                    <xforms:send ev:event="variable-added-event" submission="next-token" ></xforms:send>

                                    <xforms:action ev:event="DOMActivate">
                                        <xforms:setvalue ref="instance('expression')/aspic:selectedToken/aspic:token">VAR</xforms:setvalue>
                                        <xforms:setvalue ref="instance('expression')/aspic:expression" value="concat(instance('expression')/aspic:expression, instance('expression')/aspic:selectedToken/aspic:variable)"/>

                                    </xforms:action>                                     
                                </xforms:submit>
                                       
                                <xforms:select1 ref="instance('expression')/aspic:selectedToken/aspic:variable"
                                                selection="open"
                                                id="variable-select"
                                                incremental="true"
                                                appearance="xxforms:autocomplete"
                                                xxforms:filter="true">
                                    <xforms:help>Please enter a name for you variable. Note that the name must start with an uppercase letter</xforms:help>
                                    <xforms:alert>Must be a string, starting with an uppercase letter</xforms:alert>

                                    <xforms:itemset nodeset="instance('expression')/aspic:variables/aspic:variable">
                                        <xforms:label ref="aspic:name"/>
                                        <xforms:value ref="aspic:name"/>
                                    </xforms:itemset>
                                </xforms:select1>
                               
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <p></p>
                            </td>
                        </tr>                               
                    </xforms:repeat>       
                </xforms:group>

               
                <!-- NEGATION -->
                <xforms:repeat id="negation-repeat" nodeset="instance('expression')/aspic:nextTokens/aspic:nextToken/aspic:syntax[.='NEG']" >
                    <tr>
                        <td>
                            <xforms:submit appearance="xxforms:link" submission="next-token" incremental="true">
                                <xforms:action ev:event="DOMActivate">
                                    <xforms:setvalue ref="instance('expression')/aspic:selectedToken/aspic:token">NEG</xforms:setvalue>
                                    <xforms:setvalue ref="instance('expression')/aspic:expression" value="concat(instance('expression')/aspic:expression, '~')"/>                                   
                                </xforms:action>                                     
                                <xforms:label>Negation</xforms:label>              
                                <xforms:help>negation is a way to say 'not'</xforms:help>
                                <xforms:send submission="next-token" ev:event="negation-added-event"/>
                            </xforms:submit>                           
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p></p>
                        </td>
                    </tr>                       
                </xforms:repeat>
               
                <!-- NUMBER -->           
                <xforms:repeat id="number-repeat" nodeset="instance('expression')/aspic:nextTokens/aspic:nextToken/aspic:syntax[.='NUM']" >

                    <tr>
                        <td>
                            <xforms:submit appearance="xxforms:link" submission="next-token" >
                                <xforms:label>Insert floating point number ... </xforms:label>
                                <xforms:send ev:event="variable-added-event" submission="next-token" ></xforms:send>

                                <xforms:action ev:event="DOMActivate">
                                    <xforms:setvalue ref="instance('expression')/aspic:selectedToken/aspic:token">NUM</xforms:setvalue>
                                    <xforms:setvalue ref="instance('expression')/aspic:expression" value="instance('expression')/aspic:selectedToken/aspic:number"/>                                   
                                </xforms:action>                                     
                            </xforms:submit>
                           
                            <xforms:input ref="instance('expression')/aspic:selectedToken/aspic:number">       

                                <xforms:help>Please enter a floating point number between 0 and 1, e.g. '0.25'</xforms:help>
                                <xforms:send submission="next-token" ev:event="token-added-event"/>
                                <xforms:alert>Must be a floating point number between 0 and 1</xforms:alert>
                            </xforms:input>                           
                        </td>
                    </tr>
                    <tr>
                        <td/>
                        <td/>

                    </tr>
                </xforms:repeat>
            </table>
        </div>
    </xhtml:body>
</xhtml:html>


PageFlow:
==========

    <page path-info="/expression/test/new"
          view="oxf:/expression/view/editor.xsl"
          id="expression.test.new"/>
         
    <page path-info="/expression/test/next"
          default-submission="oxf:/test/instance/response.xml"
          id=" expression.test.next"/>


Default-Submission (response.xml):
==========================
<aspic:claim xmlns:aspic="<a href="http://www.cruk.com/aspic/editor/v1" target="_blank" onclick="bluecoat_allow_popup=true;try{ return top.js.OpenExtLink(window,event,this) }finally{bluecoat_allow_popup=false;}">http://www.cruk.com/aspic/editor/v1 ">

    <aspic:id>-1</aspic:id>
    <aspic:expression>anIdentifier(</aspic:expression>

    <aspic:nextTokens>
        <aspic:nextToken>
            <aspic:id>-1</aspic:id>
            <aspic:syntax>IDN</aspic:syntax>
        </aspic:nextToken>
        <aspic:nextToken>
            <aspic:id>-1</aspic:id>
            <aspic:syntax>VAR</aspic:syntax>

        </aspic:nextToken>
        <aspic:nextToken>
            <aspic:id>-1</aspic:id>
            <aspic:syntax>NUM</aspic:syntax>

        </aspic:nextToken>
        <aspic:nextToken>
            <aspic:id>-1</aspic:id>
            <aspic:syntax>NEG</aspic:syntax>
        </aspic:nextToken>
- Show quoted text -
    </aspic:nextTokens>
    <aspic:variables>
        <aspic:variable>
            <aspic:id>-1</aspic:id>
            <aspic:name>MyVariable</aspic:name>
        </aspic:variable>
        <aspic:variable>