Re: invalid binding expression error

e-letter <[email protected]> Sun, 12 Sep 2010 17:54:06 +0100
Newsgroups gmane.comp.web.xforms
Message-ID <[email protected]>
On 12/09/2010, C. M. Sperberg-McQueen <[email protected]> wrote:
>
> On 12 Sep 2010, at 02:05 , e-letter wrote:
>
>> Readers,
>>
>> I am trying to use the xforms (version 1) function of openoffice 3.
>> The native file format is an archive of xml files. I created a basic
>> document in writer and then preceeded to extract the odt file and open
>> the 'content.xml' file using a text editor (because using the writer
>> interface is too cumbersome and obscures my understanding of xforms
>> syntax). Below is the file. The question I have is that writer states
>> that the list menu (element 'select1', equivalent to 'listbox')
>> contains 'an invalid binding expression', but I cannot see where the
>> error is in the xforms elements.
>
> If I understand you correctly, the processor is complaining about
> List Box 1.  (That's the only listbox I see.)  The attribute-value
> specification
>
>      xforms:bind="analysistypes"
>
> points to the bind element with id="analysistypes", i.e.
>
>      <xforms:bind id="analysistypes"
>          nodeset="purpose/@type"
>          type="xsd:string"/>
>
> As far as I can tell, this is an 'outermost binding element' within
> the meaning of section 7.4 Evaluation Context, so its context node
> is the document element of the instance.  Your instance is given by
>
>      <xforms:instance>
>          <purpose>
>              <analysis type="epc">epc england</analysis>
>              <analysis type="epc">epc scotland</analysis>
>          </purpose>
>      </xforms:instance>
>
> Two things strike me about the nodeset expression on your bind element:
> (1) there is no type attribute on the purpose element, so there is
> nothing
> to bind to, and (2) the purpose element in the instance is the document
> element of the instance, and thus the context element for the XPath
> expression.  So the nodeset expression is looking for an element named
> 'purpose', which should be a child of the document element, also
> named 'purpose', and then for a 'type' attribute on that purposeful
> child of a purposeful parent.  So it's not going to select anything.
>
> The XForms spec says clearly, though, that "A binding expression
> attribute
> contains an XPath expression that references zero or more nodes of
> instance
> data."  (Appears in both 1.1 and 1.0.)  So it's not clear to me that
> failure
> to select any nodes is the reason for an "invalid binding expression";
> I would have expected the control just to be marked irrelevant.
>
> But I'm not seeing any other problems.  (The fact that you have two
> models instead of one seemed like a promising source of problems for
> a bit, but if that's the cause of your error I don't currently see
> how.)
>
I was trying an equivalent to a tutorial recommendation to populate a
list menu with another model element. In writer, there is a very small
area to enter list menu items on one line, I think separated by a
comma or similar punctuation. This discouraged me so I thought it
better to populate the list menu items with another model element.

> You might try rephrasing the nodeset value to "/purpose/analysis/@type"
> or "analysis/@type" (if that is what you actually intend) and see if
> that helps at all.
>
The latter worked thank you, but I wanted the user to see the values
(i.e. epc england, epc scotland), not the attributes.

Also, the submit element does not produce the output file. Any advice please?