[FO] Bug in contains()

As currently specified, fn:contains() raises a type error for elements 
of complex type with complex content.  Suppose I have the following element:

<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="file:///c:/temp/foo.xsd">
    <person>Michael Kay</person>
    <person>Jonathan Robie</person>
    <person>Michael Rys</person>
</people>

Which is governed by the following schema:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified">
  <xs:element name="people">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="person"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="person" type="xs:string"/>
</xs:schema>

Now I want to do the following query:

    let $people := doc('people.xml')
    return contains($people, "Rys")

When the query attempts to cast $people to a string, it will try to 
atomize the element using dm:typed-value(), and the following rule applies:

     If the node has a complex type with complex content, raises a
     type error, which may be handled by the host language.

We should see if there are other functions/operators that have this same 
problem.

Jonathan

Received on Thursday, 12 February 2004 18:55:24 UTC