[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