[xquery-talk] returning elements without duplicates, based on an XML schema and using an attribute as context node

Michael Kay mike at saxonica.com
Thu Mar 26 18:51:22 PST 2009


 
	I want the XQuery to determine if the @maxOccurs attribute exists in
an <xs:element> tag somewhere in the schema, and its value isn't 1. If this
is true, then, for all elements that have a @ref attribute in the schema
(because we now know there's at least one), the XQuery should get the string
value of the element's @ref attribute (what I wanted $name to be), along
with the value of element's @maxOccurs attribute (what i wanted $max to be),
and lastly the string value of $max (what I wanted $index_max to be). Then
finally, I just wanted to use these three values within an <xf:bind> tag
that was to be returned.


That translates to me as:

if (//xs:element[@maxOccurs[.!="1"]])
then for $e in //xs:element[@ref]
     return <xf:bind
               id="{$e/@ref}-add-trigger"
               nodeset="instance('views')/{$e/@ref}-add-trigger"
 
relevant="instance('save-data')//{$e/@ref}[{$e/@maxOccurs}]"/>
else ()

I can't really see where the distinct-values() comes into it - it doesn't
appear in your English description.

Michael Kay
http://www.saxonica.com/



More information about the talk mailing list