It works on Saxon.... it's a bug in the eXist XQuery processor.

On Fri, Jul 13, 2012 at 5:55 PM, Ihe Onwuka <[email protected]> wrote:
> I'm running this on eXide, I'll try it on Saxon.
>
> On Fri, Jul 13, 2012 at 5:48 PM, Michael Kay <[email protected]> wrote:
>>
>> On 13/07/2012 17:35, Ihe Onwuka wrote:
>>>
>>> didn't want to tamper with the definition of $models as it is used
>>> elsewhere (you are seeing a cut down version of the code), but having
>>> removed a /* from its definition, that hasn't worked either (I get the
>>> same result reported earlier).
>>
>> Well, there's another mistake then. Removing the /* worked for me.
>>
>> Michael Kay
>> Saxonica
>>>
>>>
>>> On Fri, Jul 13, 2012 at 4:18 PM, Michael Kay <[email protected]> wrote:
>>>>
>>>> Your problem is that the initialization of $models goes down two levels
>>>> below the document node, so it is bound to a sequence of Model elements,
>>>> so
>>>> when you do $models/* you are selecting the children of the Model
>>>> elements,
>>>> but there are no child elements to select. Remove a /* either from the
>>>> definition of $models or from the expression where it is used.
>>>>
>>>> Michael Kay
>>>> Saxonica
>>>>
>>>>
>>>> On 13/07/2012 15:41, Ihe Onwuka wrote:
>>>>>
>>>>> xquery version "1.0";
>>>>>
>>>>>
>>>>> declare namespace b2b ="http://www.b2b.net/plants";;
>>>>> declare namespace xf="http://www.w3.org/2002/xforms";;
>>>>> declare namespace html="http://www.w3.org/1999/xhtml";;
>>>>> declare namespace ev="http://www.w3.org/2001/xml-events";;
>>>>>
>>>>> declare variable $configDir as xs:string :="config";
>>>>>
>>>>> declare variable $models as element()*
>>>>> :=doc(concat($configDir,"/modelNames.xml"))/*/*;
>>>>>
>>>>> declare function local:bindModel($x,$y,$z) {$x};
>>>>>
>>>>> declare function local:capitalise($str)
>>>>> {
>>>>>       concat(upper-case(substring($str,1,1)),substring($str,2))
>>>>> };
>>>>>
>>>>> declare function local:defineModelRoot($model as element())
>>>>> {
>>>>>      element {concat('b2b:',local:capitalise($model/text()))}
>>>>>               {element xf:bind {attribute repeat
>>>>> {local:getBindingFileName($model)}}}
>>>>> };
>>>>>
>>>>> declare function local:getBindingFileName($model as element()) as
>>>>> xs:string
>>>>> {
>>>>>      concat($model/@singular,'Bindings.xml')
>>>>> };
>>>>>       <switch xmlns="http://www.w3.org/2002/xforms";>
>>>>>         {$models/*/<case
>>>>>
>>>>>
>>>>> id='{text()}Case'>{local:bindModel(local:defineModelRoot(.),"",xs:QName('group'))}</case>}
>>>>>       </switch>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> [email protected]
>>>> http://x-query.com/mailman/listinfo/talk
>>>
>>> _______________________________________________
>>> [email protected]
>>> http://x-query.com/mailman/listinfo/talk
>>>
>>
>>
>> _______________________________________________
>> [email protected]
>> http://x-query.com/mailman/listinfo/talk
_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to