W3C home > Mailing lists > Public > public-qt-comments@w3.org > January 2008

Problems about module in XQuery spec

From: he harrison <harrison076@gmail.com>
Date: Wed, 9 Jan 2008 09:48:30 +0800
Message-ID: <f01ec07e0801081748q16f3e583j68249145375fe5b6@mail.gmail.com>
To: public-qt-comments@w3.org
Hi,
I come up with a problem when reading XQuery1.0 spec., following is my case:

a.xq:

module namespace ma=" http://www.w3.org/TestModules/moduleA";
import schema namespace simple=" http://www.w3.org/XQueryTest/simple " at
"schema_a.xsd";
declare function ma:funcA()
{
   "40" cast as simple:myType
};

b.xq:

declare namespace mb=" http://www.w3.org/TestModules/moduleB ";
import module namespace ma="http://www.w3.org/TestModules/moduleA" at " a.xq
";
import schema namespace simple=" http://www.w3.org/XQueryTest/simple" at
"schema_b.xsd";

declare function mB:funcB()
{
  ma:funcA() instance of simple:myType
};

<result>{mb:funcB()}</result>

schema_a.xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:simple=" http://www.w3.org/XQueryTest/simple "
           targetNamespace="http://www.w3.org/XQueryTest/simple"
           elementFormDefault="qualified" attributeFormDefault="qualified"
>
  <xs:simpleType name = "myType">
     <xs:restriction base = "xs:int">
      <xs:minInclusive value = "1"/>
      <xs:maxInclusive value = "50"/>
    </xs:restriction>
   </xs:simpleType>
</xs:schema>

schema_b.xsd:

<xs:schema xmlns:xs=" http://www.w3.org/2001/XMLSchema "
           xmlns:simple="http://www.w3.org/XQueryTest/simple"
           targetNamespace=" http://www.w3.org/XQueryTest/simple "
           elementFormDefault="qualified" attributeFormDefault="qualified"
>
  <redefine
    schemaLocation="schema_a.xsd">
    <extension base="simple:myType">
        <xs:minInclusive value = "51"/>
        <xs:maxInclusive value = "100"/>
    </extension>
  </redefine>
</xs:schema>

What would be the result of this case?
true? false? runtime error? or implementation define?
Or in another word, would the type in module a.xq should
be redefined by module c.xq's imported schema definition?

This case is related with how to understand the XQuery's "module".

Let me give my understanding:
XSLT's module, in my understanding, should be "included" in
another module to compile, could not be compiled independently,
in other words, it's a "white box", its semantic
depends on where it's included or imported(because its schema type could be
differently redefined in different including or importing module).

While I think XQuery's module is different with XSLT's module, I think
XQuery spec.
allow its module be compiled independently, no matter where the module is
imported,
module's semantic should not be changed, in other words, XQuery's module
is a "black box", wherever module is imported, module's schema type
definition should not be
affected by type redefine mechanism.

The reason why I make such conclusion is from following XQuery spec
statement:
1 "A module import <http://www.w3.org/TR/xquery/#dt-module-import> imports
only functions and variable declarations; it does not import other objects
from the imported modules, such as in-scope schema
definitions<http://www.w3.org/TR/xquery/#dt-issd>or statically
known namespaces <http://www.w3.org/TR/xquery/#dt-static-namespaces>. Module
imports are not transitive°™that is, importing a module provides access only
to function and variable declarations contained directly in the imported
module."

Here XQuery's statement is clearly different with XSLT's statement about
module import.
In XSLT spec, module imports are transitive while XQuery clearly stated that
they
are not, so XQuery's module import must be something different with XSLT's
module import.
My thought is, XQuery's module is a "black box" while XSLT's module is a
"white box"

2 "It is a static error <http://www.w3.org/TR/xquery/#dt-static-error> [
err:XQST0036 <http://www.w3.org/TR/xquery/#ERRXQST0036>] to import a module
if the importing module's in-scope schema
types<http://www.w3.org/TR/xquery/#dt-is-types>do not include
definitions for the schema type names that appear in the
declarations of variables and functions (whether in an argument type or
return type) that are present in the imported module and are referenced in
the importing module."

Here spec. force user to import interface needed schema types, if we
consider XQuery's
module as "white box", then all imported types in "white box" has already
imported, then
this statement seems lead to redundancy, however if we consider XQuery's
module
as a "black box", then this statement is quite nature to understand.

Could you offer me some comment?
Thanks
  Harrison
Received on Wednesday, 9 January 2008 14:38:22 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 27 March 2012 18:14:49 GMT