← Back to team overview

zorba-coders team mailing list archive

[Merge] lp:~zorba-coders/zorba/pul-and-xdm-schemas into lp:zorba

 

Ghislain Fourny has proposed merging lp:~zorba-coders/zorba/pul-and-xdm-schemas into lp:zorba.

Requested reviews:
  Federico Cavalieri (fcavalieri)

For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/pul-and-xdm-schemas/+merge/94209

Introducing XDM and PUL schemas.
-- 
https://code.launchpad.net/~zorba-coders/zorba/pul-and-xdm-schemas/+merge/94209
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'schemas/CMakeLists.txt'
--- schemas/CMakeLists.txt	2012-02-02 09:56:52 +0000
+++ schemas/CMakeLists.txt	2012-02-22 16:10:27 +0000
@@ -12,6 +12,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+ADD_SUBDIRECTORY(com)
+ADD_SUBDIRECTORY(org)
+
 # QQQ Note: this file was originally the 1998 version of xml.xsd. It should
 # probably be replaced with a later revision.
 DECLARE_ZORBA_SCHEMA(URI "http://www.w3.org/2001/xml.xsd"; FILE xml.xsd)

=== added directory 'schemas/com'
=== added directory 'schemas/com/28msec'
=== added file 'schemas/com/28msec/CMakeLists.txt'
--- schemas/com/28msec/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ schemas/com/28msec/CMakeLists.txt	2012-02-22 16:10:27 +0000
@@ -0,0 +1,15 @@
+# Copyright 2006-2011 The FLWOR Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ADD_SUBDIRECTORY(www)

=== added directory 'schemas/com/28msec/www'
=== added file 'schemas/com/28msec/www/CMakeLists.txt'
--- schemas/com/28msec/www/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ schemas/com/28msec/www/CMakeLists.txt	2012-02-22 16:10:27 +0000
@@ -0,0 +1,15 @@
+# Copyright 2006-2011 The FLWOR Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ADD_SUBDIRECTORY(schemas)

=== added directory 'schemas/com/28msec/www/schemas'
=== added file 'schemas/com/28msec/www/schemas/CMakeLists.txt'
--- schemas/com/28msec/www/schemas/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ schemas/com/28msec/www/schemas/CMakeLists.txt	2012-02-22 16:10:27 +0000
@@ -0,0 +1,17 @@
+# Copyright 2006-2011 The FLWOR Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+DECLARE_ZORBA_SCHEMA(URI "http://www.28msec.com/schemas/pul"; FILE pul.xsd)
+DECLARE_ZORBA_SCHEMA(URI "http://www.28msec.com/schemas/complete-pul"; FILE complete-pul.xsd)
+DECLARE_ZORBA_SCHEMA(URI "http://www.28msec.com/schemas/xdm"; FILE xdm.xsd)

=== added file 'schemas/com/28msec/www/schemas/complete-pul.xsd'
--- schemas/com/28msec/www/schemas/complete-pul.xsd	1970-01-01 00:00:00 +0000
+++ schemas/com/28msec/www/schemas/complete-pul.xsd	2012-02-22 16:10:27 +0000
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ************************************************************************
+  28msec schema for representing a complete Pending Update List as XML
+  A complete PUL contains the necessary information for reverting changes.
+  ************************************************************************
+--><xs:schema
+    xmlns:xs="http://www.w3.org/2001/XMLSchema";
+    targetNamespace="http://www.28msec.com/schemas/complete-pul";
+    xmlns:pul="http://www.28msec.com/schemas/pul";
+    xmlns:cpul="http://www.28msec.com/schemas/complete-pul";
+    xmlns:xdm="http://www.28msec.com/schemas/xdm";
+    elementFormDefault="qualified">
+
+  <xs:import namespace="http://www.28msec.com/schemas/xdm"; schemaLocation="xdm.xsd"/>
+  <xs:import namespace="http://www.28msec.com/schemas/pul"; schemaLocation="pul.xsd"/>
+
+    <!--
+    ****************
+    The root element
+    ****************
+  -->
+  <xs:element name="complete-pending-update-list">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="insertBefore" type="pul:insert-type"/>
+        <xs:element name="insertAfter" type="pul:insert-type"/>
+        <xs:element name="insertInto" type="pul:insert-type"/>
+        <xs:element name="insertIntoAsFirst" type="pul:insert-type"/>
+        <xs:element name="insertIntoAsLast" type="pul:insert-type"/>
+        <xs:element name="insertAttributes" type="pul:insertAttributes-type"/>
+        <xs:element name="complete-delete" type="cpul:complete-delete-type"/>
+        <xs:element name="complete-replaceNode" type="cpul:complete-replaceNode-type"/>
+        <xs:element name="complete-replaceValue" type="cpul:complete-replaceValue-type"/>
+        <xs:element name="complete-replaceElementContent" type="cpul:complete-replaceElementContent-type"/>
+        <xs:element name="complete-rename" type="cpul:complete-rename-type"/>
+        <xs:element name="put" type="pul:put-type"/>
+        <xs:element name="createCollection" type="pul:createCollection-type"/>
+        <xs:element name="insertNodesAfter" type="pul:insertNodesRelative-type"/>
+        <xs:element name="insertNodesBefore" type="pul:insertNodesRelative-type"/>
+        <xs:element name="insertNodesFirst" type="pul:insertNodesAbsolute-type"/>
+        <xs:element name="insertNodesLast" type="pul:insertNodesAbsolute-type"/>
+        <xs:element name="insertNodes" type="pul:insertNodes-type"/>
+        <xs:element name="deleteNodes" type="pul:deleteNodes-type"/>
+        <xs:element name="complete-deleteCollection" type="cpul:complete-deleteCollection-type"/>
+        <xs:element name="activateIntegrityConstraint" type="pul:activateIntegrityConstraint-type"/>
+        <xs:element name="deActivateIntegrityConstraint" type="pul:deActivateIntegrityConstraint-type"/>
+        <xs:element name="createIndex" type="pul:createIndex-type"/>
+        <xs:element name="deleteIndex" type="pul:deleteIndex-type"/>
+        <xs:element name="refreshIndex" type="pul:refreshIndex-type"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+
+  <!--
+    *****************************************************
+    Definition of completed update primitives
+    *****************************************************
+  -->
+   <xs:complexType name="complete-delete-type">
+     <xs:complexContent>
+        <xs:extension base="pul:delete-type">
+          <xs:sequence>
+            <xs:element name="parent" type="xs:anyURI"/>      
+            <xs:element name="left-sibling" type="xs:anyURI" minOccurs="0"/>
+            <xs:element name="deleted-node" type="xdm:one-node-no-namespace-type"/>          
+          </xs:sequence>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+
+  <xs:complexType name="complete-replaceNode-type">
+    <xs:complexContent>
+      <xs:extension base="pul:replaceNode-type">
+        <xs:sequence>
+          <xs:element name="parent" type="xs:anyURI"/>      
+          <xs:element name="left-sibling" type="xs:anyURI" minOccurs="0"/>
+          <xs:element name="replaced-node" type="xdm:one-node-no-namespace-type"/>          
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="complete-replaceValue-type">
+    <xs:complexContent>
+      <xs:extension base="pul:replaceValue-type">
+        <xs:sequence>
+          <xs:element name="old-string-value" type="xs:string"/>      
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="complete-replaceElementContent-type">
+    <xs:complexContent>
+      <xs:extension base="pul:replaceElementContent-type">
+        <xs:sequence>
+          <xs:element name="replaced-nodes" type="xdm:children-sequence-type"/>          
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="complete-rename-type">
+    <xs:complexContent>
+      <xs:extension base="pul:rename-type">
+        <xs:sequence>
+          <xs:element name="oldName" type="xs:QName"/>          
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="complete-deleteCollection-type">
+    <xs:complexContent>
+      <xs:extension base="pul:deleteCollection-type">
+        <xs:sequence>
+          <xs:element name="deleted-nodes" type="xdm:nodes-sequence-no-namespaces-type"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+</xs:schema>

=== added file 'schemas/com/28msec/www/schemas/pul.xsd'
--- schemas/com/28msec/www/schemas/pul.xsd	1970-01-01 00:00:00 +0000
+++ schemas/com/28msec/www/schemas/pul.xsd	2012-02-22 16:10:27 +0000
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ************************************************************
+  28msec schema for representing a Pending Update List as XML.
+  ************************************************************
+-->
+<xs:schema
+    xmlns:xs="http://www.w3.org/2001/XMLSchema";
+    targetNamespace="http://www.28msec.com/schemas/pul";
+    xmlns:pul="http://www.28msec.com/schemas/pul";
+    xmlns:xdm="http://www.28msec.com/schemas/xdm";
+    xmlns:xqx="http://www.w3.org/2005/XQueryX";
+    elementFormDefault="qualified">
+
+  <xs:import namespace="http://www.28msec.com/schemas/xdm"; schemaLocation="xdm.xsd"/>
+  <xs:import namespace="http://www.w3.org/2005/XQueryX"; schemaLocation="../../../../org/w3/www/2005/XQueryX.xsd"/>
+  
+    <!--
+    ****************
+    The root element
+    ****************
+  -->
+  <xs:element name="pending-update-list">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="insertBefore" type="pul:insert-type"/>
+        <xs:element name="insertAfter" type="pul:insert-type"/>
+        <xs:element name="insertInto" type="pul:insert-type"/>
+        <xs:element name="insertIntoAsFirst" type="pul:insert-type"/>
+        <xs:element name="insertIntoAsLast" type="pul:insert-type"/>
+        <xs:element name="insertAttributes" type="pul:insertAttributes-type"/>
+        <xs:element name="delete" type="pul:delete-type"/>
+        <xs:element name="replaceNode" type="pul:replaceNode-type"/>
+        <xs:element name="replaceValue" type="pul:replaceValue-type"/>
+        <xs:element name="replaceElementContent" type="pul:replaceElementContent-type"/>
+        <xs:element name="rename" type="pul:rename-type"/>
+        <xs:element name="put" type="pul:put-type"/>
+        <xs:element name="createCollection" type="pul:createCollection-type"/>
+        <xs:element name="insertNodesAfter" type="pul:insertNodesRelative-type"/>
+        <xs:element name="insertNodesBefore" type="pul:insertNodesRelative-type"/>
+        <xs:element name="insertNodesFirst" type="pul:insertNodesAbsolute-type"/>
+        <xs:element name="insertNodesLast" type="pul:insertNodesAbsolute-type"/>
+        <xs:element name="insertNodes" type="pul:insertNodes-type"/>
+        <xs:element name="deleteNodes" type="pul:deleteNodes-type"/>
+        <xs:element name="deleteCollection" type="pul:deleteCollection-type"/>
+        <xs:element name="activateIntegrityConstraint" type="pul:activateIntegrityConstraint-type"/>
+        <xs:element name="deActivateIntegrityConstraint" type="pul:deActivateIntegrityConstraint-type"/>
+        <xs:element name="createIndex" type="pul:createIndex-type"/>
+        <xs:element name="deleteIndex" type="pul:deleteIndex-type"/>
+        <xs:element name="refreshIndex" type="pul:refreshIndex-type"/>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+
+  <!--
+    *****************************************************
+    Definition of a PUL and the 11 XQUF update primitives
+    *****************************************************
+  -->
+  <xs:complexType name="insert-type">
+    <xs:sequence>
+      <xs:element name="target" type="xs:anyURI"/>
+      <xs:element name="content" type="xdm:children-sequence-type"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="insertAttributes-type">
+    <xs:sequence>
+      <xs:element name="target" type="xs:anyURI"/>
+      <xs:element name="content" type="xdm:attributes-sequence-type"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="delete-type">
+    <xs:sequence>
+      <xs:element name="target" type="xs:anyURI"/>
+    </xs:sequence>
+  </xs:complexType>
+    <!-- Must check upon delivery that:
+      o if target is an attribute node, all nodes in content are attributes.
+      o if target is a text/PI/comment/element node, all nodes in content are text/PI/comment/element nodes.
+      The definition of pul:children-or-attributes-only-type already makes sure that one of these two cases is met.
+      But one still needs to make sure that it is the right one of the two depending on the target.
+    -->
+  <xs:complexType name="replaceNode-type">
+    <xs:sequence>
+      <xs:element name="target" type="xs:anyURI"/>
+      <xs:element name="replacement" type="xdm:children-or-attributes-sequence-type"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="replaceValue-type">
+    <xs:sequence>
+      <xs:element name="target" type="xs:anyURI"/>
+      <xs:element name="string-value" type="xs:string"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="replaceElementContent-type">
+    <xs:sequence>
+      <xs:element name="target" type="xs:anyURI"/>
+      <xs:element name="text" type="xdm:zero-or-one-text-node-type"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="rename-type">
+    <xs:sequence>
+      <xs:element name="target" type="xs:anyURI"/>
+      <xs:element name="newName" type="xs:QName"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="put-type">
+    <xs:sequence>
+      <xs:element name="node" type="xdm:one-document-or-element-node-type"/>
+      <xs:element name="uri" type="xs:anyURI"/>
+    </xs:sequence>
+  </xs:complexType>
+
+
+<!--
+  ******************************************************
+  Definition of proprietary collection update primitives
+  ******************************************************
+-->
+  <xs:complexType name="createCollection-type">
+    <xs:sequence>
+      <xs:element name="name" type="xs:QName"/>
+      <xs:element name="type" type="xqx:sequenceType" minOccurs="0"/>
+      <xs:element name="annotation" type="xqx:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="nodes" type="xdm:nodes-sequence-no-namespaces-type"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="insertNodesRelative-type">
+    <xs:sequence>
+      <xs:element name="collection" type="xs:QName"/>
+      <xs:element name="target" type="xs:anyURI"/>
+      <xs:element name="nodes" type="xdm:nodes-sequence-no-namespaces-type"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="insertNodesAbsolute-type">
+    <xs:sequence>
+      <xs:element name="collection" type="xs:QName"/>
+      <xs:element name="nodes" type="xdm:nodes-sequence-no-namespaces-type"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="insertNodes-type">
+    <xs:sequence>
+      <xs:element name="collection" type="xs:QName"/>
+      <xs:element name="nodes" type="xdm:nodes-sequence-no-namespaces-type"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="deleteNodes-type">
+    <xs:sequence>
+      <xs:element name="collection" type="xs:QName"/>
+      <xs:element name="target" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="deleteCollection-type">
+    <xs:sequence>
+      <xs:element name="collection" type="xs:QName"/>
+    </xs:sequence>
+  </xs:complexType>
+  
+<!--
+  ****************************************************************
+  Definition of proprietary integrity constraint update primitives
+  ****************************************************************
+-->
+  <xs:complexType name="activateIntegrityConstraint-type">
+    <xs:sequence>
+      <xs:element name="identity-constraint-name" type="xs:QName"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="deActivateIntegrityConstraint-type">
+    <xs:sequence>
+      <xs:element name="identity-constraint-name" type="xs:QName"/>
+    </xs:sequence>
+  </xs:complexType>
+    
+<!--
+  *************************************************
+  Definition of proprietary index update primitives
+  *************************************************
+-->
+  <xs:complexType name="createIndex-type">
+    <xs:sequence>
+      <xs:element name="index-name" type="xs:QName"/>
+      <xs:element name="domain-expression">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element ref="xqx:expr"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="key-expressions">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element ref="xqx:expr" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="annotation" type="xqx:annotation" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="deleteIndex-type">
+    <xs:sequence>
+      <xs:element name="index-name" type="xs:QName"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="refreshIndex-type">
+    <xs:sequence>
+      <xs:element name="index-name" type="xs:QName"/>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>

=== added file 'schemas/com/28msec/www/schemas/xdm.xsd'
--- schemas/com/28msec/www/schemas/xdm.xsd	1970-01-01 00:00:00 +0000
+++ schemas/com/28msec/www/schemas/xdm.xsd	2012-02-22 16:10:27 +0000
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ******************************************************
+  28msec schema for representing an XDM instance as XML.
+  ******************************************************
+-->
+<xs:schema
+    xmlns:xs="http://www.w3.org/2001/XMLSchema";
+    targetNamespace="http://www.28msec.com/schemas/xdm";
+    xmlns:xdm="http://www.28msec.com/schemas/xdm";
+    elementFormDefault="qualified">
+
+  <!--
+    ****************
+    The root element
+    ****************
+  -->
+  <xs:element name="sequence-of-items" type="xdm:sequence-of-items-type"/>
+
+  <!--
+    ************************************************
+    Serialization of an atomic item (type specified)
+    ************************************************
+  -->
+  <xs:element name="atomic-value">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:string">
+          <xs:attribute name="type" type="xs:QName"/>
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+  
+  <!--
+    **********************************************************************************
+    XDM-to-XML Proprietary serialization: the seven kinds of nodes and their accessors
+    For each node kind, the accessors that are always empty are ignored.
+    **********************************************************************************
+  -->
+  <xs:element name="document">
+    <xs:complexType>
+      <xs:sequence>
+        <!--
+          dm:children($n as node()) as node()*
+
+          The dm:children accessor returns the children of a node as a sequence containing
+          zero or more nodes.
+        -->
+        <xs:element name="children" type="xdm:children-sequence-type" minOccurs="0"/>
+      </xs:sequence>
+      <!--
+        dm:base-uri($n as node()) as xs:anyURI?
+        
+        The dm:base-uri accessor returns the base URI of a node as a sequence containing
+        zero or one URI reference. For more information about base URIs, see [XML Base].
+      -->
+      <xs:attribute name="base-uri" type="xs:anyURI" use="optional"/>
+      <!--
+        dm:document-uri($node as node()) as xs:anyURI?
+        
+        The dm:document-uri accessor returns the absolute URI of the resource from which
+        the Document Node was constructed, if the absolute URI is available. If there is
+        no URI available, or if it cannot be made absolute when the Document Node is
+        constructed, or if it is used on a node other than a Document Node, the empty
+        sequence is returned.
+      -->
+      <xs:attribute name="document-uri" type="xs:anyURI" use="optional"/>
+      <!--
+        dm:reference-uri($node as node()) as xs:anyURI?
+        
+        An additional, proprietary accessor reference-uri is used to store Sausalito's
+        UUID references.
+      -->
+      <xs:attribute name="reference-uri" type="xs:anyURI" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="element">
+    <xs:complexType>
+      <xs:sequence>
+        <!--
+          dm:attributes($n as node()) as attribute()*
+          
+          The dm:attributes accessor returns the attributes of a node as a sequence
+          containing zero or more Attribute Nodes. The order of Attribute Nodes is
+          stable but implementation dependent.
+        -->
+        <xs:element name="attributes" type="xdm:attributes-sequence-type" minOccurs="0"/>
+        <xs:element name="children" type="xdm:children-sequence-type" minOccurs="0"/>
+        <!--
+          dm:namespace-nodes($n as node()) as node()*
+          
+          The dm:namespace-nodes accessor returns the dynamic, in-scope namespaces associated
+          with a node as a sequence containing zero or more Namespace Nodes. The order of Namespace
+          Nodes is stable but implementation dependent.
+        -->
+        <xs:element name="namespace-nodes" type="xdm:namespaces-sequence-type" minOccurs="0"/>
+      </xs:sequence>
+      <!--
+        dm:node-name($n as node()) as xs:QName?
+        
+        The dm:node-name accessor returns the name of the node as a sequence of zero or one
+        xs:QNames. Note that the QName value includes an optional prefix as described in 3.3.3
+        QNames and NOTATIONS.
+      -->
+     <xs:attribute name="node-name" type="xs:QName"/>
+      <!--
+        dm:type-name($n as node()) as xs:QName?
+        
+        The dm:type-name accessor returns the name of the schema type of a node as a sequence of
+        zero or one xs:QNames.
+      -->
+      <xs:attribute name="type-name" type="xs:QName"/>
+      <!--
+        dm:is-id($node as node()) as xs:boolean?
+        
+        The dm:is-id accessor returns true if the node is an XML ID. Exactly what constitutes
+        an ID depends in part on how the data model was constructed, see 6.2 Element Nodes
+        and 6.3 Attribute Nodes.
+      -->
+      <xs:attribute name="is-id" type="xs:boolean" default="false"/>
+      <!--
+        dm:is-idrefs($node as node()) as xs:boolean?
+
+        The dm:is-idrefs accessor returns true if the node is an XML IDREF or IDREFS. Exactly
+        what constitutes an IDREF or IDREFS depends in part on how the data model was
+        constructed, see 6.2 Element Nodes and 6.3 Attribute Nodes.
+      -->
+      <xs:attribute name="is-idrefs" type="xs:boolean" default="false"/>
+      <!--
+        dm:nilled($n as node()) as xs:boolean?
+        
+        The dm:nilled accessor returns true if the node is "nilled". [Schema Part 1] introduced
+        the nilled mechanism to signal that an element should be accepted as valid when it has
+        no content even when it has a content type which does not require or even necessarily
+        allow empty content.
+      -->
+      <xs:attribute name="nilled" type="xs:boolean" default="false"/>
+      <xs:attribute name="reference-uri" type="xs:anyURI" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="attribute">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:string">
+          <xs:attribute name="node-name" type="xs:QName"/>
+          <xs:attribute name="type-name" type="xs:QName"/>
+          <xs:attribute name="is-id" type="xs:boolean" default="false"/>
+          <xs:attribute name="is-idrefs" type="xs:boolean" default="false"/>
+          <xs:attribute name="reference-uri" type="xs:anyURI" use="optional"/>
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="namespace">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:string">
+          <xs:attribute name="node-name" type="xs:QName"/>
+          <xs:attribute name="reference-uri" type="xs:anyURI" use="optional"/>
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="processing-instruction">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:string">
+          <xs:attribute name="node-name" type="xs:NCName"/>
+          <xs:attribute name="reference-uri" type="xs:anyURI" use="optional"/>
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="comment">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:string">
+          <xs:attribute name="reference-uri" type="xs:anyURI" use="optional"/>
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="text">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="xs:string">
+          <xs:attribute name="reference-uri" type="xs:anyURI" use="optional"/>
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+
+  <!--
+    *************************************************************************************
+    Types that are sequences of items (restricted on the kinds of nodes that are allowed)
+    *************************************************************************************
+  -->
+  <xs:complexType name="sequence-of-items-type">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element ref="xdm:document"/>
+      <xs:element ref="xdm:element"/>
+      <xs:element ref="xdm:comment"/>
+      <xs:element ref="xdm:text"/>
+      <xs:element ref="xdm:processing-instruction"/>
+      <xs:element ref="xdm:attribute"/>
+      <xs:element ref="xdm:namespace"/>
+      <xs:element ref="xdm:atomic-value"/>
+    </xs:choice>
+  </xs:complexType>
+
+  <xs:complexType name="attributes-sequence-type">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+      <xs:element ref="xdm:attribute"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="children-sequence-type">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element ref="xdm:element"/>
+      <xs:element ref="xdm:comment"/>
+      <xs:element ref="xdm:text"/>
+      <xs:element ref="xdm:processing-instruction"/>
+    </xs:choice>
+  </xs:complexType>
+  <xs:complexType name="namespaces-sequence-type">
+    <xs:sequence>
+      <xs:element ref="xdm:namespace" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="children-or-attributes-sequence-type">
+    <xs:choice>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="xdm:element"/>
+        <xs:element ref="xdm:comment"/>
+        <xs:element ref="xdm:text"/>
+        <xs:element ref="xdm:processing-instruction"/>
+      </xs:choice>
+      <xs:element ref="xdm:attribute" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:choice>
+  </xs:complexType>
+  
+  <xs:complexType name="zero-or-one-text-node-type">
+    <xs:sequence>
+      <xs:element ref="xdm:text" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="one-document-or-element-node-type">
+    <xs:choice>
+      <xs:element ref="xdm:document"/>
+      <xs:element ref="xdm:element"/>
+    </xs:choice>
+  </xs:complexType>
+  
+  <xs:complexType name="nodes-sequence-no-namespaces-type">
+    <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element ref="xdm:document"/>
+      <xs:element ref="xdm:element"/>
+      <xs:element ref="xdm:comment"/>
+      <xs:element ref="xdm:text"/>
+      <xs:element ref="xdm:processing-instruction"/>
+      <xs:element ref="xdm:attribute"/>
+    </xs:choice>
+  </xs:complexType>
+
+  <xs:complexType name="one-node-no-namespace-type">
+    <xs:choice>
+      <xs:element ref="xdm:document"/>
+      <xs:element ref="xdm:element"/>
+      <xs:element ref="xdm:comment"/>
+      <xs:element ref="xdm:text"/>
+      <xs:element ref="xdm:processing-instruction"/>
+      <xs:element ref="xdm:attribute"/>
+    </xs:choice>
+  </xs:complexType>
+</xs:schema>

=== added file 'schemas/com/CMakeLists.txt'
--- schemas/com/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ schemas/com/CMakeLists.txt	2012-02-22 16:10:27 +0000
@@ -0,0 +1,15 @@
+# Copyright 2006-2011 The FLWOR Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ADD_SUBDIRECTORY(28msec)

=== added directory 'schemas/org'
=== added file 'schemas/org/CMakeLists.txt'
--- schemas/org/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ schemas/org/CMakeLists.txt	2012-02-22 16:10:27 +0000
@@ -0,0 +1,15 @@
+# Copyright 2006-2011 The FLWOR Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ADD_SUBDIRECTORY(w3)

=== added directory 'schemas/org/w3'
=== added file 'schemas/org/w3/CMakeLists.txt'
--- schemas/org/w3/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ schemas/org/w3/CMakeLists.txt	2012-02-22 16:10:27 +0000
@@ -0,0 +1,15 @@
+# Copyright 2006-2011 The FLWOR Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ADD_SUBDIRECTORY(www)

=== added directory 'schemas/org/w3/www'
=== added directory 'schemas/org/w3/www/2005'
=== added file 'schemas/org/w3/www/2005/CMakeLists.txt'
--- schemas/org/w3/www/2005/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ schemas/org/w3/www/2005/CMakeLists.txt	2012-02-22 16:10:27 +0000
@@ -0,0 +1,15 @@
+# Copyright 2006-2011 The FLWOR Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+DECLARE_ZORBA_SCHEMA(URI "http://www.w3.org/2005/XQueryX"; FILE XQueryX.xsd)

=== added file 'schemas/org/w3/www/2005/XQueryX.xsd'
--- schemas/org/w3/www/2005/XQueryX.xsd	1970-01-01 00:00:00 +0000
+++ schemas/org/w3/www/2005/XQueryX.xsd	2012-02-22 16:10:27 +0000
@@ -0,0 +1,1962 @@
+<?xml version="1.0"?>
+<!--  ================================================================================  -->
+<!--  NOTES TO READERS OF THIS SCHEMA:                                                  -->
+<!--  The default value for both minOccurs and maxOccurs is "1".                        -->
+<!--  The XQueryX schema has been designed to provide the ability to extend definitions -->
+<!--    of top-level elements in extensions such as Full-Text and the Update Facility.  -->
+<!--    The nature of the modification is to define named complex types and redefine    -->
+<!--    those top-level elements in terms of the named complex types.                   -->
+<!--  ================================================================================  -->
+<!--  Changes from Recommendation (edition 1):                                          -->
+<!--  * Element defs using anon complex types changed to use named types (bug #4924)    -->
+<!--  * In Example 4, replaced xqx:parentheziedExpr with xqx:sequenceExpr (bug #4963)   -->
+<!--  * In XSLT stylesheet, deleted template for xqx:parenthesizedExpr (bug #4963)      -->
+<!--  * Replaced link to grammar applet with correct link (bug #5323)                   -->
+<!--  * In XSLT stylesheet, corrected template for xqx:namespaceDeclaration (bug #5343) -->
+<!--  Changes from Recommendation (edition 2):                                          -->
+<!--  * Added support for new Windowing clause in FLWOR expression                      -->
+<!--  * Added support for new Group By Clause in FLWOR expression                       -->
+<!--  * Added support for new Count Clause in FLWOR expression                          -->
+<!--  * Added support for keyword "outer" on for expression                             -->
+<!--  * Modified structure of FLWOR clause per "simplified FLWOR expressions"           -->
+<!--  * Modified validation syntax per Bugzilla Bug 5472                                -->
+<!--  * Modified function declaration so that external functions can be nondeterminstic -->
+<!--  * Modified variable declaration so external variables can have an initial value   -->
+<!--  * Added support for new try-catch expression                                      -->
+<!--  * Added support for new decimal formatting declaration                            -->
+<!--  * Added support for encoding in the version declaration                           -->
+<!--  * Added support for new context item declaration                                  -->
+<!--  * Added support for computed namespace constructor                                -->
+<!--  * Made changes triggered by Bugzilla Bugs 6309, 6310, and 6311                    -->
+<!--  * Modified errlist syntax per Bugzilla Bug 7053                                   -->
+<!--  * Added support for public/private functions                                      -->
+<!--  * Replaced "outer for" support with support for "allowing empty"                  -->
+<!--  * Added support for higher-order functions                                        -->
+<!--  * Added support for value-based "switch" expression                               -->
+<!--  * Use pattern to prohibit "#)" in pragma contents per Bugzilla Bug 2711           -->
+<!--  * Changed functionItemExpr child element QName to be functionName for consistency -->
+<!--  * Replaced "public", "private", and "[non]deterministic" with %-annotations       -->
+<!--  * Added EQName to permit "URI-literal":NCNAME as alternative to NCName:NCName     -->
+<!--  * Changed type of atomicType to EQName, so it's really atomicOrUnionType          -->
+<!--  ================================================================================  -->
+<!--  Errata applied:                                                                   -->
+<!--    XQX.E1 - Editorial (Bugzilla Bug 4924)                                          -->
+<!--    XQX.E7 - Substantive (Bugzilla Bug 2711)                                        -->
+<!--  ================================================================================  -->
+<!--  Modifications:                                                                    -->
+<!--    2008-07-30 - Add XQuery 1.1 grouping and windowing support                      -->
+<!--    2008-09-18 - Add XQuery 1.1 count and outer-for support, simplified FLWOR       -->
+<!--    2008-09-27 - Add validation type, nondeterministic function declarations,       -->
+<!--                 initial values for external variables, try-catch expression        -->
+<!--    2008-11-25 - Add support for number formatting, Snelson's version declaration   -->
+<!--                 proposal, context item declaration, computed namespace constructor,-->
+<!--                 fixes for validate expression, and change to allow the count       -->
+<!--                 clause to only be an intermediate expression                       -->
+<!--    2009-01-13 - Bugs 6309 and 6310 (fixes to details of certain windowing clauses  -->
+<!--    2009-03-03 - tumblingWindowClause syntax now matches slidingWindowClause syntax -->
+<!--    2009-09-06 - Modified errlist syntax per Bugzilla Bug 7053                      -->
+<!--    2009-10-09 - Added support for private/public functions                         -->
+<!--                 Replace "outer for" with "allowing empty"                          -->
+<!--    2009-10-22 - Add support for higher-order functions & switch expression         -->
+<!--    2010-04-06 - Changed functionItemExpr child QName -> functionName (consistency) -->
+<!--    2010-05-10 - Added %-annotation support for varDecl and functionDecl            -->
+<!--    2010-06-23 - Added support for partial function application                     -->
+<!--    2011-02-02 - Added support for EQNames and atomicOrUnionType                    -->
+<!--    2011-05-04 - Updated structure of catch component of try-catch expression       -->
+<!--    2011-05-04 - Updated validationexpr, mode/type alternatives, type is EQName     -->
+<!--  ================================================================================  -->
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+            xmlns="http://www.w3.org/2005/XQueryX";
+            targetNamespace="http://www.w3.org/2005/XQueryX";
+            elementFormDefault="qualified" attributeFormDefault="qualified">
+
+
+<!-- A few helper declarations                                                          -->
+  <xsd:complexType name="emptyContent"/>
+
+  <xsd:element name="NCName" type="xsd:NCName"/>
+
+  <xsd:complexType name="QName">
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:NCName">
+        <xsd:attribute name="prefix" type="xsd:NCName" use="optional"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="EQName">
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:NCName">
+        <xsd:attribute name="prefix" type="xsd:NCName" use="optional"/>
+        <xsd:attribute name="URI" type="xsd:string" use="optional"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- The base expression class                                                          -->
+  <xsd:complexType name="expr"/>
+
+  <xsd:element name="expr" type="expr" abstract="true"/>
+
+
+<!-- A list of expressions                                                              -->
+  <xsd:complexType name="exprList">
+    <xsd:sequence>
+      <xsd:element ref="expr" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+<!-- A list of expressions or placeholders                                              -->
+<!-- 2010-06-23 - Added support for partial function application                        -->
+  <xsd:complexType name="exprOrPlaceholderList">
+    <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+        <xsd:element ref="expr"/>
+        <xsd:element name="argumentPlaceholder" type="emptyContent"/>
+      </xsd:choice>
+    </xsd:sequence>
+  </xsd:complexType>
+
+<!-- A type to be used by elements that comprise an optional expr                       -->
+  <xsd:complexType name="exprWrapperOptional">
+    <xsd:sequence>
+      <xsd:element ref="expr" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+<!-- Simple wrapper class                                                               -->
+  <xsd:complexType name="exprWrapper">
+    <xsd:sequence>
+      <xsd:element ref="expr"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+<!-- constant expressions. We have 4 different subclasses for this                      -->
+  <xsd:complexType name="constantExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="value" type="xsd:anyType"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="constantExpr" type="constantExpr" abstract="true"
+               substitutionGroup="expr"/>
+
+
+  <xsd:complexType name="integerConstantExpr">
+    <xsd:complexContent>
+      <xsd:restriction base="constantExpr">
+        <xsd:sequence>
+          <xsd:element name="value" type="xsd:integer"/>
+        </xsd:sequence>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="integerConstantExpr" type="integerConstantExpr"
+               substitutionGroup="constantExpr"/>
+
+
+  <xsd:complexType name="decimalConstantExpr">
+    <xsd:complexContent>
+      <xsd:restriction base="constantExpr">
+        <xsd:sequence>
+          <xsd:element name="value" type="xsd:decimal"/>
+        </xsd:sequence>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="decimalConstantExpr" type="decimalConstantExpr"
+               substitutionGroup="constantExpr"/>
+
+
+  <xsd:complexType name="doubleConstantExpr">
+    <xsd:complexContent>
+      <xsd:restriction base="constantExpr">
+        <xsd:sequence>
+          <xsd:element name="value" type="xsd:double"/>
+        </xsd:sequence>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="doubleConstantExpr" type="doubleConstantExpr"
+               substitutionGroup="constantExpr"/>
+
+
+  <xsd:complexType name="stringConstantExpr">
+    <xsd:complexContent>
+      <xsd:restriction base="constantExpr">
+        <xsd:sequence>
+          <xsd:element name="value" type="xsd:string"/>
+        </xsd:sequence>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="stringConstantExpr" type="stringConstantExpr"
+               substitutionGroup="constantExpr"/>
+
+
+<!-- Variables                                                                          -->
+  <xsd:complexType name="varRef">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="name" type="EQName"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="varRef" type="varRef" substitutionGroup="expr"/>
+
+
+<!-- root and context-item expressions                                                  -->
+<!-- rootExpr deleted per Bugzilla Bug #2523                                            -->
+  <xsd:complexType name="contextItemExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr"/>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="contextItemExpr" type="contextItemExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- Pragmas and extension expressions                                                  -->
+<!--   2010-01-01, JM replaced pragmaContents elem def'n with one that has a pattern    -->
+  <xsd:complexType name="pragma">
+    <xsd:sequence>
+      <xsd:element name="pragmaName" type="EQName"/>
+      <xsd:element name="pragmaContents">
+        <xsd:simpleType>
+          <xsd:restriction base="xsd:string">
+            <xsd:pattern value="(([^#]|#+[^\)#])*#*)"/>
+          </xsd:restriction>
+        </xsd:simpleType>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="pragma" type="pragma"/>
+
+
+  <xsd:complexType name="extensionExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element ref="pragma" maxOccurs="unbounded"/>
+          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="extensionExpr" type="extensionExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- Function call expressions                                                          -->
+<!-- 2010-06-23 - Added support for partial function application                        -->
+  <xsd:complexType name="functionCallExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="functionName" type="EQName"/>
+          <xsd:element name="arguments" type="exprOrPlaceholderList" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="functionCallExpr" type="functionCallExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- Constructor functions                                                              -->
+  <xsd:complexType name="constructorFunctionExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="typeName" type="EQName"/>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="constructorFunctionExpr" type="constructorFunctionExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- Sequence expressions                                                               -->
+  <xsd:complexType name="sequenceExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element ref="expr" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="sequenceExpr" type="sequenceExpr" substitutionGroup="expr"/>
+
+
+  <xsd:complexType name="rangeSequenceExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="startExpr" type="exprWrapper"/>
+          <xsd:element name="endExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="rangeSequenceExpr" type="rangeSequenceExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- Builtin operator expressions                                                       -->
+  <xsd:complexType name="operatorExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr"/>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+
+  <xsd:complexType name="unaryOperatorExpr">
+    <xsd:complexContent>
+      <xsd:extension base="operatorExpr">
+        <xsd:sequence>
+          <xsd:element name="operand" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+
+  <xsd:complexType name="binaryOperatorExpr">
+    <xsd:complexContent>
+      <xsd:extension base="operatorExpr">
+        <xsd:sequence>
+          <xsd:element name="firstOperand" type="exprWrapper"/>
+          <xsd:element name="secondOperand" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+
+  <xsd:element name="operatorExpr" type="operatorExpr"
+               abstract="true" substitutionGroup="expr"/>
+
+  <xsd:element name="arithmeticOp" type="operatorExpr"
+               abstract="true" substitutionGroup="operatorExpr"/>
+
+  <xsd:element name="addOp" type="binaryOperatorExpr"
+               substitutionGroup="arithmeticOp"/>
+
+  <xsd:element name="subtractOp" type="binaryOperatorExpr"
+               substitutionGroup="arithmeticOp"/>
+
+  <xsd:element name="multiplyOp" type="binaryOperatorExpr"
+               substitutionGroup="arithmeticOp"/>
+
+  <xsd:element name="divOp" type="binaryOperatorExpr"
+               substitutionGroup="arithmeticOp"/>
+
+  <xsd:element name="idivOp" type="binaryOperatorExpr"
+               substitutionGroup="arithmeticOp"/>
+
+  <xsd:element name="modOp" type="binaryOperatorExpr"
+               substitutionGroup="arithmeticOp"/>
+
+  <xsd:element name="unaryMinusOp" type="unaryOperatorExpr"
+               substitutionGroup="arithmeticOp"/>
+
+  <xsd:element name="unaryPlusOp" type="unaryOperatorExpr"
+               substitutionGroup="arithmeticOp"/>
+
+  <xsd:element name="comparisonOp" type="binaryOperatorExpr" abstract="true"
+               substitutionGroup="operatorExpr"/>
+
+  <xsd:element name="valueComparisonOp" type="binaryOperatorExpr" abstract="true"
+               substitutionGroup="operatorExpr"/>
+
+  <xsd:element name="eqOp" type="binaryOperatorExpr"
+               substitutionGroup="valueComparisonOp"/>
+
+  <xsd:element name="neOp" type="binaryOperatorExpr"
+               substitutionGroup="valueComparisonOp"/>
+
+  <xsd:element name="gtOp" type="binaryOperatorExpr"
+               substitutionGroup="valueComparisonOp"/>
+
+  <xsd:element name="geOp" type="binaryOperatorExpr"
+               substitutionGroup="valueComparisonOp"/>
+
+  <xsd:element name="ltOp" type="binaryOperatorExpr"
+               substitutionGroup="valueComparisonOp"/>
+
+  <xsd:element name="leOp" type="binaryOperatorExpr"
+               substitutionGroup="valueComparisonOp"/>
+
+  <xsd:element name="generalComparisonOp" type="binaryOperatorExpr" abstract="true"
+               substitutionGroup="operatorExpr"/>
+
+  <xsd:element name="equalOp" type="binaryOperatorExpr"
+               substitutionGroup="generalComparisonOp"/>
+
+  <xsd:element name="notEqualOp" type="binaryOperatorExpr"
+               substitutionGroup="generalComparisonOp"/>
+
+  <xsd:element name="lessThanOp" type="binaryOperatorExpr"
+               substitutionGroup="generalComparisonOp"/>
+
+  <xsd:element name="lessThanOrEqualOp" type="binaryOperatorExpr"
+               substitutionGroup="generalComparisonOp"/>
+
+  <xsd:element name="greaterThanOp" type="binaryOperatorExpr"
+               substitutionGroup="generalComparisonOp"/>
+
+  <xsd:element name="greaterThanOrEqualOp" type="binaryOperatorExpr"
+               substitutionGroup="generalComparisonOp"/>
+
+  <xsd:element name="nodeComparisonOp" type="binaryOperatorExpr" abstract="true"
+               substitutionGroup="operatorExpr"/>
+
+  <xsd:element name="isOp" type="binaryOperatorExpr"
+               substitutionGroup="nodeComparisonOp"/>
+
+  <xsd:element name="orderComparisonOp" type="binaryOperatorExpr" abstract="true"
+               substitutionGroup="operatorExpr"/>
+
+  <xsd:element name="nodeBeforeOp" type="binaryOperatorExpr"
+               substitutionGroup="orderComparisonOp"/>
+
+  <xsd:element name="nodeAfterOp" type="binaryOperatorExpr"
+               substitutionGroup="orderComparisonOp"/>
+
+  <xsd:element name="logicalOp" type="binaryOperatorExpr" abstract="true"
+               substitutionGroup="operatorExpr"/>
+
+  <xsd:element name="andOp" type="binaryOperatorExpr"
+               substitutionGroup="logicalOp"/>
+
+  <xsd:element name="orOp" type="binaryOperatorExpr"
+               substitutionGroup="logicalOp"/>
+
+  <xsd:element name="setOp" type="binaryOperatorExpr"
+               abstract="true" substitutionGroup="operatorExpr"/>
+
+  <xsd:element name="unionOp" type="binaryOperatorExpr"
+               substitutionGroup="setOp"/>
+
+  <xsd:element name="intersectOp" type="binaryOperatorExpr"
+               substitutionGroup="setOp"/>
+
+  <xsd:element name="exceptOp" type="binaryOperatorExpr"
+               substitutionGroup="setOp"/>
+
+
+<!-- Basic typenames                                                                    -->
+<!-- By changing the type attribute from QName to EQName, this is now atomicOrUnionType -->
+<!--   However, for backwards compatibility w/XQueryX 1.0, the name had to stay the same-->
+  <xsd:element name="atomicType" type="EQName" substitutionGroup="itemType"/>
+
+
+<!-- Used in castable expression and cast expression                                    -->
+  <xsd:complexType name="singleType">
+    <xsd:sequence>
+      <xsd:element ref="atomicType"/>
+      <xsd:element name="optional" type="emptyContent" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="singleType" type="singleType"/>
+
+
+<!-- Item type schema types and elements                                                -->
+  <xsd:element name="itemType" abstract="true"/>
+
+
+  <xsd:complexType name="emptyItemTypeContent"/>
+
+  <xsd:element name="anyItemType" type="emptyItemTypeContent"
+               substitutionGroup="itemType"/>
+
+
+  <xsd:simpleType name="occurrenceIndicator">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="?"/>
+      <xsd:enumeration value="*"/>
+      <xsd:enumeration value="+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- Sequence type                                                                      -->
+  <xsd:complexType name="sequenceType">
+    <xsd:choice>
+      <xsd:element name="voidSequenceType" type="emptyContent"/>
+      <xsd:sequence>
+        <xsd:element ref="itemType"/>
+        <xsd:element name="occurrenceIndicator" type="occurrenceIndicator"
+                     minOccurs="0"/>
+      </xsd:sequence>
+    </xsd:choice>
+  </xsd:complexType>
+
+  <xsd:element name="sequenceType" type="sequenceType"/>
+
+  <xsd:element name="typeDeclaration" type="sequenceType"/>
+
+
+<!-- Represents a "typed" variable (for clause, let clause etc)                         -->
+  <xsd:complexType name="typedVariableBinding">
+    <xsd:sequence>
+      <xsd:element name="varName" type="EQName"/>
+      <xsd:element ref="typeDeclaration" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="typedVariableBinding" type="typedVariableBinding"/>
+
+
+<!-- Represents an untyped variable for the "at" clause in a for clause                 -->
+  <xsd:element name="positionalVariableBinding" type="EQName"/>
+
+  <xsd:element name="variableBinding" type="EQName"/>
+
+
+<!-- Represents all variable bindings in a for or let clause except typed and           -->
+<!--   positional variable bindings                                                     -->
+  <xsd:element name="forLetClauseItemExtensions" abstract="true"/>
+
+
+<!-- Major syntax productions: FLWOR clause components                                  -->
+<!-- for clause                                                                         -->
+  <xsd:complexType name="forClauseItem">
+    <xsd:sequence>
+      <xsd:element ref="typedVariableBinding"/>
+      <xsd:element name="allowingEmpty" type="emptyContent"
+                   minOccurs="0"/>
+      <xsd:element ref="positionalVariableBinding" minOccurs="0" maxOccurs="1"/>
+      <xsd:element ref="forLetClauseItemExtensions" minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="forExpr" type="exprWrapper"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="forClauseItem" type="forClauseItem"/>
+
+
+  <xsd:complexType name="forClause">
+    <xsd:sequence>
+      <xsd:element ref="forClauseItem" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="forClause" type="forClause"/>
+
+
+<!-- let clause                                                                         -->
+  <xsd:complexType name="letClauseItem">
+    <xsd:sequence>
+      <xsd:choice>
+        <xsd:sequence>
+          <xsd:element ref="typedVariableBinding"/>
+          <xsd:element ref="forLetClauseItemExtensions"
+                       minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+        <xsd:element ref="forLetClauseItemExtensions"
+                     minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:choice>
+      <xsd:element name="letExpr" type="exprWrapper"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="letClauseItem" type="letClauseItem"/>
+
+
+  <xsd:complexType name="letClause">
+    <xsd:sequence>
+      <xsd:element ref="letClauseItem" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="letClause" type="letClause"/>
+
+
+<!-- This is the windowClause (part of FLWOR expression)                                -->
+<!-- It corresponds to the following XQuery grammar                                     -->
+<!-- WindowClause ::= "for" (TumblingWindowClause | SlidingWindowClause)               -->
+  <xsd:complexType name="windowClause">
+    <xsd:choice>
+      <xsd:element ref="tumblingWindowClause"/>
+      <xsd:element ref="slidingWindowClause"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+  <xsd:element name="windowClause" type="windowClause"/>
+
+
+<!-- This is the tumblingWindowClause                                                   -->
+<!-- It corresponds to the following XQuery grammar                                     -->
+<!-- TumblingWindowClause ::= "tumbling" "window" "$" VarName TypeDeclaration?          -->
+<!--                           "in" ExprSingle WindowStartCondition WindowEndCondition? -->
+  <xsd:complexType name="tumblingWindowClause">
+    <xsd:sequence>
+      <xsd:element ref="typedVariableBinding"/>
+      <xsd:element name="bindingSequence" type="exprWrapper"/>
+      <xsd:element ref="windowStartCondition"/>
+      <xsd:element ref="windowEndCondition" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="tumblingWindowClause" type="tumblingWindowClause"/>
+
+
+<!-- This is the slidingWindowClause                                                    -->
+<!-- It corresponds to the following XQuery grammar                                     -->
+<!-- SlidingWindowClause ::= "sliding" "window" "$" VarName TypeDeclaration?            -->
+<!--                         "in" ExprSingle WindowStartCondition WindowEndCondition    -->
+  <xsd:complexType name="slidingWindowClause">
+    <xsd:sequence>
+      <xsd:element ref="typedVariableBinding"/>
+      <xsd:element name="bindingSequence" type="exprWrapper"/>
+      <xsd:element ref="windowStartCondition"/>
+      <xsd:element ref="windowEndCondition"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="slidingWindowClause" type="slidingWindowClause"/>
+
+
+<!-- windowStartCondition                                                               -->
+<!-- Corresponds to the following XQuery grammar                                        -->
+<!-- WindowStartCondition ::= "start" WindowVars "when" ExprSingle                      -->
+  <xsd:complexType name="windowStartCondition">
+    <xsd:sequence>
+      <xsd:element ref="windowVars" minOccurs="0"/>
+      <xsd:element name="winStartExpr" type="exprWrapper"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="windowStartCondition" type="windowStartCondition"/>
+
+
+<!-- windowEndCondition                                                                 -->
+<!-- Corresponds to the following XQuery grammar                                        -->
+<!-- WindowEndCondition         ::=          "only"? "end" WindowVars "when" ExprSingle        -->
+  <xsd:complexType name="windowEndCondition">
+    <xsd:sequence>
+      <xsd:element ref="windowVars" minOccurs="0"/>
+      <xsd:element name="winEndExpr" type="exprWrapper"/>
+    </xsd:sequence>
+    <xsd:attribute name="onlyEnd" type="xsd:boolean" default="false"/>
+  </xsd:complexType>
+
+  <xsd:element name="windowEndCondition" type="windowEndCondition"/>
+
+
+<!-- windowVars                                                                         -->
+<!-- Corresponds to the following XQuery grammar                                        -->
+<!-- WindowVars ::= ("$" \)? PositionalVar? ("previous" "$" PreviousItem)?    -->
+<!--                ("next" "$" NextItem)?                                              -->
+  <xsd:complexType name="windowVars">
+    <xsd:sequence>
+      <xsd:element name="currentItem" type="EQName" minOccurs="0"/>
+      <xsd:element ref="positionalVariableBinding" minOccurs="0"/>
+      <xsd:element name="previousItem" type="EQName" minOccurs="0"/>
+      <xsd:element name="nextItem" type="EQName" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="windowVars" type="windowVars"/>
+
+
+<!-- countClause (part of FLWOR expression)                                             -->
+  <xsd:complexType name="countClause">
+    <xsd:sequence>
+      <xsd:element ref="varRef"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="countClause" type="countClause"/>
+
+
+<!-- whereClause (part of FLWOR expression)                                             -->
+  <xsd:element name="whereClause" type="exprWrapper"/>
+
+
+<!-- groupByClause (part of FLWOR expression)                                           -->
+<!-- Corresponds to the following XQuery syntax                                         -->
+<!-- GroupByClause ::= "group" "by" GroupingSpecList                                    -->
+<!-- GroupingSpecList ::= GroupingSpec ("," GroupingSpec)*                              -->
+  <xsd:complexType name="groupByClause">
+    <xsd:sequence maxOccurs="unbounded">
+      <xsd:element ref="groupingSpec"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="groupByClause" type="groupByClause"/>
+
+
+<!-- Corresponds to the following XQuery syntax                                         -->
+<!-- GroupingSpec ::= "$" VarName ("collation" URILiteral)?                             -->
+  <xsd:complexType name="groupingSpec">
+    <xsd:sequence>
+      <xsd:element name="varName" type="EQName"/>
+      <xsd:element name="collation" type="xsd:string" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="groupingSpec" type="groupingSpec"/>
+
+
+<!-- order by clause                                                                    -->
+  <xsd:simpleType name="emptyOrderingMode">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="empty greatest"/>
+      <xsd:enumeration value="empty least"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="orderingKind">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="ascending"/>
+      <xsd:enumeration value="descending"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+  <xsd:complexType name="orderModifier">
+    <xsd:sequence>
+      <xsd:element name="orderingKind" type="orderingKind" minOccurs="0"/>
+      <xsd:element name="emptyOrderingMode" type="emptyOrderingMode" minOccurs="0"/>
+      <xsd:element name="collation" type="xsd:string" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="orderModifier" type="orderModifier"/>
+
+
+  <xsd:complexType name="orderBySpec">
+    <xsd:sequence>
+      <xsd:element name="orderByExpr" type="exprWrapper"/>
+      <xsd:element ref="orderModifier" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="orderBySpec" type="orderBySpec"/>
+
+
+  <xsd:complexType name="orderByClause">
+    <xsd:sequence>
+      <xsd:element name="stable" type="emptyContent" minOccurs="0"/>
+      <xsd:element ref="orderBySpec" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="orderByClause" type="orderByClause"/>
+
+
+<!-- return clause                                                                      -->
+  <xsd:element name="returnClause" type="exprWrapper"/>
+
+
+<!-- This is the XQuery 1.1 flwor expression                                            -->
+<!-- Corresponds to the following XQuery syntax:                                        -->
+<!-- 1.1 FLWORExpr ::= (ForClause | LetClause | WindowClause)                           -->
+<!--                   (ForClause | LetClause | WindowClause | CountClause |            -->
+<!--                    WhereClause | GroupByClause | OrderByClause)*                   -->
+<!--                   ReturnClause                                                     -->
+  <xsd:complexType name="flworExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:choice>
+            <xsd:element ref="forClause"/>
+            <xsd:element ref="letClause"/>
+            <xsd:element ref="windowClause"/>
+          </xsd:choice>
+          <xsd:sequence>
+            <xsd:choice minOccurs="0" maxOccurs="unbounded">
+              <xsd:element ref="forClause"/>
+              <xsd:element ref="letClause"/>
+              <xsd:element ref="windowClause"/>
+              <xsd:element ref="countClause"/>
+              <xsd:element ref="whereClause"/>
+              <xsd:element ref="groupByClause"/>
+              <xsd:element ref="orderByClause"/>
+            </xsd:choice>
+          <xsd:element ref="returnClause"/>
+        </xsd:sequence>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="flworExpr" type="flworExpr" substitutionGroup="expr"/>
+
+
+<!-- conditional expressions                                                            -->
+  <xsd:complexType name="ifThenElseExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="ifClause" type="exprWrapper"/>
+          <xsd:element name="thenClause" type="exprWrapper"/>
+          <xsd:element name="elseClause" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="ifThenElseExpr" type="ifThenElseExpr" 
+               substitutionGroup="expr"/>
+
+
+<!-- The following clauses describe quantified expressions                              -->
+  <xsd:simpleType name="quantifier">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="some"/>
+      <xsd:enumeration value="every"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+  <xsd:complexType name="quantifiedExprInClause">
+    <xsd:sequence>
+      <xsd:element ref="typedVariableBinding"/>
+      <xsd:element name="sourceExpr" type="exprWrapper"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="quantifiedExprInClause" type="quantifiedExprInClause"/>
+
+
+  <xsd:complexType name="quantifiedExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="quantifier" type="quantifier"/>
+          <xsd:element ref="quantifiedExprInClause" maxOccurs="unbounded"/>
+          <xsd:element name="predicateExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="quantifiedExpr" type="quantifiedExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- handle the switch expression                                                       -->
+<!-- Note: no substitutionGroup as we cannot use this anywhere except within switch     -->
+  <xsd:complexType name="switchExprCaseClause">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="switchCaseExpr" type="exprWrapper" maxOccurs="unbounded"/>
+          <xsd:element name="resultExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="switchExprCaseClause"
+               type="switchExprCaseClause"/>
+
+
+<!-- Note: no substitutionGroup as we cannot use this anywhere except within switch     -->
+  <xsd:complexType name="switchExprDefaultClause">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="resultExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="switchExprDefaultClause"
+               type="switchExprDefaultClause"/>
+
+
+  <xsd:complexType name="switchExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+          <xsd:element ref="switchExprCaseClause" maxOccurs="unbounded"/>
+          <xsd:element ref="switchExprDefaultClause"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="switchExpr" type="switchExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- handle the typeswitch expression                                                   -->
+<!-- Note: no substitutionGroup as we cannot use this anywhere except within typeswitch -->
+  <xsd:complexType name="typeswitchExprCaseClause">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element ref="variableBinding" minOccurs="0"/>
+          <xsd:element ref="sequenceType"/>
+          <xsd:element name="resultExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="typeswitchExprCaseClause"
+               type="typeswitchExprCaseClause"/>
+
+
+<!-- Note: no substitutionGroup as we cannot use this anywhere except within typeswitch -->
+  <xsd:complexType name="typeswitchExprDefaultClause">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element ref="variableBinding" minOccurs="0"/>
+          <xsd:element name="resultExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="typeswitchExprDefaultClause"
+               type="typeswitchExprDefaultClause"/>
+
+
+  <xsd:complexType name="typeswitchExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+          <xsd:element ref="typeswitchExprCaseClause" maxOccurs="unbounded"/>
+          <xsd:element ref="typeswitchExprDefaultClause"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="typeswitchExpr" type="typeswitchExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- TryCatchExpression                                                                 -->
+<!-- Corresponds to the following XQuery syntax                                         -->
+<!-- TryCatchExpression ::= TryClause CatchClause+                                      -->
+<!-- TryClause ::= "{" TryTargetExpr "}"                                                -->
+<!-- TryTargetExpr ::= Expr                                                             -->
+  <xsd:complexType name="tryCatchExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="tryClause" type="exprWrapper"/>
+          <xsd:element ref="catchClause" maxOccurs="unbounded"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="tryCatchExpr" type="tryCatchExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- CatchClause (part of the TryCatchExpression)                                       -->
+<!-- Corresponds to the following XQuery syntax                                         -->
+<!-- CatchClause ::= "catch" CatchErrorList "{" Expr "}"                                -->
+  <xsd:complexType name="catchClause">
+    <xsd:sequence>
+      <xsd:element ref="catchErrorList"/>
+      <xsd:element name="catchExpr" type="exprWrapper"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="catchClause" type="catchClause"/>
+
+
+<!-- CatchErrorList (part of the TryCatchExpression)                                    -->
+<!-- Corresponds to the following XQuery syntax                                         -->
+<!-- CatchErrorList ::= NameTest ( "|" NameTest )*                                      -->
+<!-- (remembering that NameTest is either QName or Wildcard)                            -->
+  <xsd:complexType name="catchErrorList">
+    <xsd:sequence maxOccurs="unbounded">
+      <xsd:choice>
+        <xsd:element ref="nameTest"/>
+        <xsd:element ref="Wildcard"/>
+      </xsd:choice>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="catchErrorList" type="catchErrorList"/>
+
+
+<!-- instance-of expressions                                                            -->
+  <xsd:complexType name="instanceOfExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+          <xsd:element ref="sequenceType"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="instanceOfExpr" type="instanceOfExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- treat-as expressions                                                               -->
+  <xsd:complexType name="treatExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+          <xsd:element ref="sequenceType"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="treatExpr" type="treatExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- castable and cast expressions                                                      -->
+  <xsd:complexType name="castableExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+          <xsd:element ref="singleType"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="castableExpr" type="castableExpr"
+               substitutionGroup="expr"/>
+
+
+  <xsd:complexType name="castExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+          <xsd:element ref="singleType"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="castExpr" type="castExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- Validate expressions                                                               -->
+  <xsd:simpleType name="validationMode">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="lax"/>
+      <xsd:enumeration value="strict"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:complexType name="validateExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:choice>
+            <xsd:element name="validationMode" type="validationMode" minOccurs="0"/>
+            <xsd:element name="typeName" type="EQName" minOccurs="0"/>
+          </xsd:choice>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="validateExpr" type="validateExpr"
+               substitutionGroup="expr"/>
+
+
+<!-- Direct constructors. Only elementConstructor for now                               -->
+<!-- Note the absence of constructors corresponding to                                  -->
+<!-- the directCommentConstructor and the directPIConstructor                           -->
+<!-- productions in the XQuery grammar. This is because they are                        -->
+<!-- trivially identical to the computed variants                                       -->
+
+<!-- attributeConstructor is no longer a subclass of expr                               -->
+  <xsd:complexType name="attributeConstructor">
+    <xsd:sequence>
+      <xsd:element name="attributeName" type="QName"/>
+      <xsd:choice>
+        <xsd:element name="attributeValueExpr" type="exprList"/>
+        <xsd:element name="attributeValue" type="xsd:string"/>
+      </xsd:choice>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:complexType name="namespaceDeclaration">
+    <xsd:sequence>
+      <xsd:element name="prefix" type="xsd:NCName" minOccurs="0"/>
+      <xsd:element name="uri" type="xsd:string"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- element constructors                                                               -->
+  <xsd:complexType name="attributeList">
+    <xsd:sequence>
+      <xsd:choice maxOccurs="unbounded">
+        <xsd:element name="attributeConstructor" type="attributeConstructor"/>
+        <xsd:element name="namespaceDeclaration" type="namespaceDeclaration"/>
+      </xsd:choice>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="attributeList" type="attributeList"/>
+
+
+  <xsd:element name="elementContent" type="exprList"/>
+
+
+  <xsd:complexType name="elementConstructor">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="tagName" type="QName"/>
+          <xsd:element ref="attributeList" minOccurs="0"/>
+          <xsd:element ref="elementContent" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="elementConstructor" type="elementConstructor"
+               substitutionGroup="expr"/>
+
+
+<!-- computed constructors                                                              -->
+<!-- computed element constructor                                                       -->
+  <xsd:complexType name="computedElementConstructor">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:choice>
+            <xsd:element name="tagName" type="EQName"/>
+            <xsd:element name="tagNameExpr" type="exprWrapper"/>
+          </xsd:choice>
+          <xsd:element name="contentExpr" type="exprWrapper" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="computedElementConstructor" type="computedElementConstructor"
+               substitutionGroup="expr"/>
+
+
+<!-- computed attribute constructor                                                     -->
+  <xsd:complexType name="computedAttributeConstructor">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:choice>
+            <xsd:element name="tagName" type="EQName"/>
+            <xsd:element name="tagNameExpr" type="exprWrapper"/>
+          </xsd:choice>
+          <xsd:element name="valueExpr" type="exprWrapper" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="computedAttributeConstructor" type="computedAttributeConstructor"
+               substitutionGroup="expr"/>
+
+
+<!-- computed document constructor                                                      -->
+  <xsd:complexType name="computedDocumentConstructor">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="computedDocumentConstructor" type="computedDocumentConstructor"
+               substitutionGroup="expr"/>
+
+
+<!-- computed text constructor                                                          -->
+  <xsd:complexType name="computedTextConstructor">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="computedTextConstructor" type="computedTextConstructor"
+               substitutionGroup="expr"/>
+
+
+<!-- computed comment constructor                                                       -->
+  <xsd:complexType name="computedCommentConstructor">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="computedCommentConstructor" type="computedCommentConstructor"
+               substitutionGroup="expr"/>
+
+
+<!-- computed namespace constructor                                                     -->
+  <xsd:complexType name="computedNamespaceConstructor">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:choice>
+            <xsd:element name="prefix" type="xsd:NCName"/>
+            <xsd:element name="prefixExpr" type="exprWrapper"/>
+          </xsd:choice>
+          <xsd:element name="URIExpr" type="exprWrapper" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="computedNamespaceConstructor" type="computedNamespaceConstructor"
+               substitutionGroup="expr"/>
+
+
+<!-- computed processing instruction constructor                                        -->
+  <xsd:complexType name="computedPIConstructor">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:choice>
+            <xsd:element name="piTarget" type="xsd:NCName"/>
+            <xsd:element name="piTargetExpr" type="exprWrapper"/>
+          </xsd:choice>
+          <xsd:element name="piValueExpr" type="exprWrapper" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="computedPIConstructor" type="computedPIConstructor"
+               substitutionGroup="expr"/>
+
+
+<!-- ordered and unordered expressions                                                  -->
+  <xsd:complexType name="unorderedExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="unorderedExpr" type="unorderedExpr" substitutionGroup="expr"/>
+
+
+  <xsd:complexType name="orderedExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="argExpr" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="orderedExpr" type="orderedExpr" substitutionGroup="expr"/>
+
+
+<!-- function item expressions                                                          -->
+<!-- literal function item expression                                                   -->
+<!-- 2010-04-06: Jim changed child element QName to be functionName for consistency     -->
+  <xsd:complexType name="literalFunctionItemExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="functionName" type="EQName"/>
+          <xsd:element name="integerConstantExpr" type="integerConstantExpr"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="literalFunctionItemExpr" type="literalFunctionItemExpr" substitutionGroup="expr"/>
+
+
+<!-- inline function item expression                                                    -->
+  <xsd:complexType name="inlineFunctionItemExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element ref="paramList"/>
+          <xsd:element ref="typeDeclaration" minOccurs="0"/>
+          <xsd:element name="functionBody" type="exprWrapper"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="inlineFunctionItemExpr" type="inlineFunctionItemExpr" substitutionGroup="expr"/>
+
+
+<!-- dynamic function invocations                                                       -->
+<!-- 2010-06-23 - Added support for partial function application                        -->
+  <xsd:complexType name="dynamicFunctionInvocationExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:sequence>
+          <xsd:element name="functionItem">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:group ref="filterExpr"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="predicates" type="exprList" minOccurs="0"/>
+          <xsd:element name="arguments" type="exprOrPlaceholderList" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="dynamicFunctionInvocationExpr" type="dynamicFunctionInvocationExpr" substitutionGroup="expr"/>
+
+
+<!-- wildcards                                                                          -->
+  <xsd:complexType name="simpleWildcard">
+    <xsd:choice>
+      <xsd:element name="QName" type="EQName"/>
+      <xsd:element name="star" type="emptyContent"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+<!-- 2011-06-10: Redesigned to allow "URliteral:*"                                                  -->
+<!-- Corresponds to the following XQuery syntax:                                                    -->
+<!--   [44] Wildcard ::= "*"                                                                        -->
+<!--                  | (NCName ":" "*")                                                            -->
+<!--                  | ("*" ":" NCName)                                                            -->
+<!--                  | (URILiteral ":" "*")                                                        -->
+
+  <xsd:complexType name="Wildcard">
+    <xsd:choice minOccurs="0">
+      <xsd:sequence>
+        <xsd:element name="star" type="emptyContent"/>
+        <xsd:element ref="NCName"/>
+      </xsd:sequence>
+      <xsd:sequence>
+        <xsd:element ref="NCName"/>
+        <xsd:element name="star" type="emptyContent"/>
+      </xsd:sequence>
+      <xsd:sequence>
+        <xsd:element name="uri" type="xsd:string"/>
+        <xsd:element name="star" type="emptyContent"/>
+      </xsd:sequence>
+    </xsd:choice>
+  </xsd:complexType>
+
+  <xsd:element name="Wildcard" type="Wildcard"/>
+
+
+<!-- tests (name and/or type)                                                           -->
+  <xsd:element name="schemaAttributeTest" type="EQName"
+               substitutionGroup="kindTest"/>
+
+
+  <xsd:complexType name="attributeTest">
+    <xsd:complexContent>
+      <xsd:extension base="emptyItemTypeContent">
+        <xsd:sequence minOccurs="0">
+          <xsd:element name="attributeName" type="simpleWildcard"/>
+          <xsd:element name="typeName" type="EQName" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="attributeTest" type="attributeTest"
+               substitutionGroup="kindTest"/>
+
+
+  <xsd:element name="anyElementTest" abstract="true"
+               substitutionGroup="kindTest"/>
+
+
+  <xsd:element name="schemaElementTest" type="EQName"
+               substitutionGroup="anyElementTest"/>
+
+
+  <xsd:complexType name="elementTest">
+    <xsd:complexContent>
+      <xsd:extension base="emptyItemTypeContent">
+        <xsd:sequence minOccurs="0">
+          <xsd:element name="elementName" type="simpleWildcard"/>
+          <xsd:sequence minOccurs="0">
+            <xsd:element name="typeName" type="EQName"/>
+            <xsd:element name="nillable" type="emptyContent" minOccurs="0"/>
+          </xsd:sequence>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="elementTest" type="elementTest"
+               substitutionGroup="anyElementTest"/>
+
+
+  <xsd:complexType name="documentTest">
+    <xsd:complexContent>
+      <xsd:extension base="emptyItemTypeContent">
+        <xsd:sequence>
+           <xsd:element ref="anyElementTest" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="documentTest" type="documentTest"
+               substitutionGroup="kindTest"/>
+
+
+  <xsd:complexType name="piTest">
+    <xsd:complexContent>
+      <xsd:extension base="emptyItemTypeContent">
+        <xsd:sequence>
+          <xsd:element name="piTarget" type="xsd:NCName" minOccurs="0"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="piTest" type="piTest" substitutionGroup="kindTest"/>
+
+
+  <xsd:element name="nameTest" type="EQName"/>
+
+  <xsd:element name="kindTest" substitutionGroup="itemType"/>
+
+  <xsd:element name="textTest" type="emptyItemTypeContent"
+               substitutionGroup="kindTest"/>
+
+  <xsd:element name="commentTest" type="emptyItemTypeContent"
+               substitutionGroup="kindTest"/>
+
+  <xsd:element name="namespaceTest" type="emptyItemTypeContent"
+               substitutionGroup="kindTest"/>
+
+  <xsd:element name="anyKindTest" type="emptyItemTypeContent"
+               substitutionGroup="kindTest"/>
+
+
+<!-- functionTest variations -->
+  <xsd:element name="anyFunctionTest" type="emptyItemTypeContent" substitutionGroup="itemType"/>
+
+  <xsd:complexType name="typedFunctionTest">
+    <xsd:complexContent>
+      <xsd:extension base="emptyItemTypeContent">
+        <xsd:sequence>
+          <xsd:element ref="paramTypeList" minOccurs="0"/>
+          <xsd:element ref="sequenceType"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="typedFunctionTest" type="typedFunctionTest" substitutionGroup="itemType"/>
+
+
+  <xsd:complexType name="paramTypeList">
+    <xsd:sequence>
+      <xsd:element ref="sequenceType" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="paramTypeList" type="paramTypeList"/>
+
+
+  <xsd:complexType name="parenthesizedItemType">
+    <xsd:complexContent>
+      <xsd:extension base="emptyItemTypeContent">
+        <xsd:sequence>
+          <xsd:element ref="itemType"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="parenthesizedItemType" type="parenthesizedItemType" substitutionGroup="itemType"/>
+
+
+<!-- XPath axes                                                                         -->
+  <xsd:simpleType name="xpathAxis">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="child"/>
+      <xsd:enumeration value="attribute"/>
+      <xsd:enumeration value="self"/>
+      <xsd:enumeration value="parent"/>
+      <xsd:enumeration value="descendant-or-self"/>
+      <xsd:enumeration value="descendant"/>
+      <xsd:enumeration value="following"/>
+      <xsd:enumeration value="following-sibling"/>
+      <xsd:enumeration value="ancestor"/>
+      <xsd:enumeration value="ancestor-or-self"/>
+      <xsd:enumeration value="preceding"/>
+      <xsd:enumeration value="preceding-sibling"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:element name="xpathAxis" type="xpathAxis"/>
+
+
+<!-- filter expressions                                                                 -->
+<!-- added literalFunctionItemExpr, inlineFunctionItemExpr, and                         -->
+<!--   dynamicFunctionInvocation for higher-order functions                             -->
+  <xsd:group name="filterExpr">
+    <xsd:choice>
+      <xsd:element ref="constantExpr"/>
+      <xsd:element ref="varRef"/>
+      <xsd:element ref="contextItemExpr"/>
+      <xsd:element ref="functionCallExpr"/>
+      <xsd:element ref="sequenceExpr"/>
+      <xsd:element ref="elementConstructor"/>
+      <xsd:element ref="computedElementConstructor"/>
+      <xsd:element ref="computedAttributeConstructor"/>
+      <xsd:element ref="computedDocumentConstructor"/>
+      <xsd:element ref="computedTextConstructor"/>
+      <xsd:element ref="computedCommentConstructor"/>
+      <xsd:element ref="computedNamespaceConstructor"/>
+      <xsd:element ref="computedPIConstructor"/>
+      <xsd:element ref="orderedExpr"/>
+      <xsd:element ref="unorderedExpr"/>
+      <xsd:element ref="literalFunctionItemExpr"/>
+      <xsd:element ref="inlineFunctionItemExpr"/>
+      <xsd:element ref="dynamicFunctionInvocationExpr"/>
+    </xsd:choice>
+  </xsd:group>
+
+
+<!-- step expression                                                                    -->
+<!-- removed nameTest and Wildcard outer choices per Bugzilla Bug #2523                 -->
+<!-- replaced element "predicates" with choice of "predicates" & "dynamicfunctioninv'n" -->
+  <xsd:complexType name="stepExpr">
+    <xsd:sequence>
+      <xsd:choice>
+        <xsd:sequence>
+          <xsd:element ref="xpathAxis"/>
+          <xsd:choice>
+            <xsd:element ref="kindTest"/>
+            <xsd:element ref="nameTest"/>
+            <xsd:element ref="Wildcard"/>
+          </xsd:choice>
+        </xsd:sequence>
+        <xsd:element name="filterExpr">
+          <xsd:complexType>
+            <xsd:sequence>
+              <xsd:group ref="filterExpr"/>
+            </xsd:sequence>
+          </xsd:complexType>
+        </xsd:element>
+      </xsd:choice>
+      <xsd:element name="predicates" type="exprList" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="stepExpr" type="stepExpr"/>
+
+
+<!-- path expression                                                                    -->
+<!-- rewrote pathExpr definition per Bugzilla Bug #2523                                 -->
+  <xsd:complexType name="pathExpr">
+    <xsd:complexContent>
+      <xsd:extension base="expr">
+        <xsd:choice>
+          <xsd:sequence>
+            <xsd:element name="rootExpr" type="emptyContent"/>
+            <xsd:element ref="stepExpr" minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:element ref="stepExpr" maxOccurs="unbounded"/>
+        </xsd:choice>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="pathExpr" type="pathExpr" substitutionGroup="expr"/>
+
+
+<!-- The following constructs deal with the query prolog                                -->
+  <xsd:complexType name="module">
+    <xsd:sequence>
+      <xsd:element ref="versionDecl" minOccurs="0"/>
+      <xsd:choice>
+        <xsd:element ref="mainModule"/>
+        <xsd:element ref="libraryModule"/>
+      </xsd:choice>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="module" type="module"/>
+
+
+  <xsd:complexType name="mainModule">
+    <xsd:sequence>
+      <xsd:element ref="prolog" minOccurs="0"/>
+      <xsd:element name="queryBody" type="exprWrapper"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="mainModule" type="mainModule"/>
+
+
+  <xsd:complexType name="libraryModule">
+    <xsd:sequence>
+      <xsd:element ref="moduleDecl"/>
+      <xsd:element ref="prolog" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="libraryModule" type="libraryModule"/>
+
+
+  <xsd:complexType name="versionDecl">
+    <xsd:sequence>
+      <xsd:element name="version" type="xsd:string" minOccurs="0"/>
+      <xsd:element name="encoding" type="xsd:string" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="versionDecl" type="versionDecl"/>
+
+
+  <xsd:complexType name="prolog">
+    <xsd:sequence>
+            <xsd:element ref="prologPartOneItem" minOccurs="0" maxOccurs="unbounded"/>
+            <xsd:element ref="prologPartTwoItem" minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+        </xsd:complexType>
+
+  <xsd:element name="prolog" type="prolog"/>
+
+
+  <xsd:element name="prologPartOneItem" abstract="true"/>
+
+
+  <xsd:element name="prologPartTwoItem" abstract="true"/>
+
+
+  <xsd:simpleType name="boundarySpaceDecl">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="strip"/>
+      <xsd:enumeration value="preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:element name="boundarySpaceDecl" type="boundarySpaceDecl"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:element name="defaultCollationDecl" type="xsd:string"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:element name="baseUriDecl" type="xsd:string"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:simpleType name="constructionDecl">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="strip"/>
+      <xsd:enumeration value="preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:element name="constructionDecl" type="constructionDecl"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:simpleType name="orderingModeDecl">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="ordered"/>
+      <xsd:enumeration value="unordered"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:element name="orderingModeDecl" type="orderingModeDecl"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:element name="emptyOrderingDecl" type="emptyOrderingMode"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:complexType name="copyNamespacesDecl">
+    <xsd:sequence>
+      <xsd:element name="preserveMode">
+        <xsd:simpleType>
+          <xsd:restriction base="xsd:NMTOKEN">
+            <xsd:enumeration value="preserve"/>
+            <xsd:enumeration value="no-preserve"/>
+          </xsd:restriction>
+        </xsd:simpleType>
+      </xsd:element>
+      <xsd:element name="inheritMode">
+        <xsd:simpleType>
+          <xsd:restriction base="xsd:NMTOKEN">
+            <xsd:enumeration value="inherit"/>
+            <xsd:enumeration value="no-inherit"/>
+          </xsd:restriction>
+        </xsd:simpleType>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="copyNamespacesDecl" type="copyNamespacesDecl"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:simpleType name="defaultNamespaceCategory">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="function"/>
+      <xsd:enumeration value="element"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:complexType name="defaultNamespaceDecl">
+    <xsd:sequence>
+      <xsd:element name="defaultNamespaceCategory" type="defaultNamespaceCategory"/>
+      <xsd:element name="uri" type="xsd:string"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="defaultNamespaceDecl" type="defaultNamespaceDecl"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:complexType name="namespaceDeclType">
+    <xsd:sequence>
+      <xsd:element name="prefix" type="xsd:NCName"/>
+      <xsd:element name="uri" type="xsd:string"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="namespaceDecl" type="namespaceDeclType"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:element name="moduleDecl" type="namespaceDeclType"/>
+
+
+  <xsd:complexType name="decimalFormatDeclType">
+        <xsd:sequence>
+          <xsd:element name="decimalFormatName" type="EQName" minOccurs="0"/>
+          <xsd:element name="decimalFormatParam" minOccurs="0" maxOccurs="unbounded">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="decimalFormatParamName">
+                  <xsd:simpleType>
+                    <xsd:restriction base="xsd:NMTOKEN">
+                      <xsd:enumeration value="decimal-separator"/>
+                      <xsd:enumeration value="grouping-separator"/>
+                      <xsd:enumeration value="infinity"/>
+                      <xsd:enumeration value="minus-sign"/>
+                      <xsd:enumeration value="NaN"/>
+                      <xsd:enumeration value="percent"/>
+                      <xsd:enumeration value="per-mille"/>
+                      <xsd:enumeration value="zero-digit"/>
+                      <xsd:enumeration value="digit"/>
+                      <xsd:enumeration value="pattern-separator"/>
+                    </xsd:restriction>
+                  </xsd:simpleType>
+                </xsd:element>
+                <xsd:element name="decimalFormatParamValue" type="xsd:string"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:sequence>
+        <xsd:attribute name="default" default="false">
+          <xsd:simpleType>
+            <xsd:restriction base="xsd:NMTOKEN">
+              <xsd:enumeration value="true"/>
+              <xsd:enumeration value="false"/>
+            </xsd:restriction>
+          </xsd:simpleType>
+        </xsd:attribute>
+  </xsd:complexType>
+
+  <xsd:element name="decimalFormatDecl" type="decimalFormatDeclType"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:complexType name="schemaImport">
+    <xsd:sequence>
+      <xsd:choice minOccurs="0">
+        <xsd:element name="namespacePrefix" type="xsd:NCName"/>
+        <xsd:element name="defaultElementNamespace" type="emptyContent"/>
+      </xsd:choice>
+      <xsd:element name="targetNamespace" type="xsd:string"/>
+      <xsd:element name="targetLocation" type="xsd:string"
+                   minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="schemaImport" type="schemaImport"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:complexType name="moduleImport">
+    <xsd:sequence>
+      <xsd:element name="namespacePrefix" type="xsd:NCName" minOccurs="0"/>
+      <xsd:element name="targetNamespace" type="xsd:string"/>
+      <xsd:element name="targetLocation" type="xsd:string"
+                   minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="moduleImport" type="moduleImport"
+               substitutionGroup="prologPartOneItem"/>
+
+
+  <xsd:complexType name="contextItemDecl">
+    <xsd:sequence>
+      <xsd:element ref="typeDeclaration" minOccurs="0"/>
+      <xsd:choice>
+        <xsd:element name="varValue" type="exprWrapper"/>
+        <xsd:sequence>
+          <xsd:element name="external">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="varValue" type="exprWrapper" minOccurs="0"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:sequence>
+      </xsd:choice>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="contextItemDecl" type="contextItemDecl"
+               substitutionGroup="prologPartTwoItem"/>
+
+
+<!-- For %-annotations                                                                  -->
+  <xsd:complexType name="annotation">
+    <xsd:sequence>
+      <xsd:element name="annotationName" type="EQName"/>
+      <xsd:element name="arguments" type="exprList" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <xsd:complexType name="varDecl">
+    <xsd:sequence>
+      <xsd:element name="annotation" type="annotation"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="varName" type="EQName"/>
+      <xsd:element ref="typeDeclaration" minOccurs="0"/>
+      <xsd:choice>
+        <xsd:element name="varValue" type="exprWrapper"/>
+        <xsd:sequence>
+          <xsd:element name="external">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="varValue" type="exprWrapper" minOccurs="0"/>
+              </xsd:sequence>
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:sequence>
+      </xsd:choice>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="varDecl" type="varDecl"
+               substitutionGroup="prologPartTwoItem"/>
+
+
+  <xsd:complexType name="optionDecl">
+    <xsd:sequence>
+      <xsd:element name="optionName" type="EQName"/>
+      <xsd:element name="optionContents" type="xsd:string"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="optionDecl" type="optionDecl"
+               substitutionGroup="prologPartTwoItem"/>
+
+
+  <xsd:complexType name="functionDecl">
+    <xsd:sequence>
+      <xsd:element name="annotation" type="annotation"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="functionName" type="EQName"/>
+      <xsd:element ref="paramList"/>
+      <xsd:element ref="typeDeclaration" minOccurs="0"/>
+      <xsd:choice>
+        <xsd:element name="functionBody" type="exprWrapper"/>
+        <xsd:element name="externalDefinition" type="emptyContent"/>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="nondeterministic" use="optional"
+                   type="xsd:boolean" default="false"/>
+    <xsd:attribute name="private" use="optional"
+                   type="xsd:boolean" default="false"/>
+  </xsd:complexType>
+
+  <xsd:element name="functionDecl" type="functionDecl"
+               substitutionGroup="prologPartTwoItem"/>
+
+
+  <xsd:complexType name="param">
+    <xsd:sequence>
+      <xsd:element name="varName" type="EQName"/>
+      <xsd:element ref="typeDeclaration" minOccurs="0"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="param" type="param"/>
+
+
+  <xsd:complexType name="paramList">
+    <xsd:sequence>
+      <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:element name="paramList" type="paramList"/>
+
+
+</xsd:schema>
\ No newline at end of file

=== added file 'schemas/org/w3/www/CMakeLists.txt'
--- schemas/org/w3/www/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ schemas/org/w3/www/CMakeLists.txt	2012-02-22 16:10:27 +0000
@@ -0,0 +1,15 @@
+# Copyright 2006-2011 The FLWOR Foundation.
+# 
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+ADD_SUBDIRECTORY(2005)


Follow ups