- From: Jonathan Robie <jonathan.robie@datadirect.com>
- Date: Thu, 12 Feb 2004 18:52:53 -0500
- To: Michael Rys <mrys@microsoft.com>
- Cc: Michael Kay <mhk@mhk.me.uk>, Jonathan Robie <jonathan.robie@datadirect.com>, XML Query Comments <public-qt-comments@w3.org>
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