<?xml version="1.0"?>
<!--
! 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.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.zorba-xquery.com/modules/full-text"
xmlns="http://www.zorba-xquery.com/modules/full-text"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<!--======================================================================-->
<xs:element name="compare-options">
<xs:complexType>
<xs:attributeGroup ref="compare-attributes"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="compare-attributes">
<xs:attribute name="case" type="case-type" default="case insensitive"/>
<xs:attribute name="diacritics" type="diacritics-type" default="diacritics insensitive"/>
<xs:attribute name="stemming" type="stemming-type" default="no stemming"/>
</xs:attributeGroup>
<xs:simpleType name="case-type">
<xs:restriction base="xs:string">
<!--
! Tokens are matched regardless of the case of characters.
-->
<xs:enumeration value="case insensitive"/>
<!--
! Tokens are matched only if the case of their characters is the same.
-->
<xs:enumeration value="case sensitive"/>
<!--
! Tokens are matched only if they match without regard to character
! case, but contain only lowercase characters.
-->
<xs:enumeration value="lower"/>
<!--
! Tokens are matched only if they match without regard to character
! case, but contain only uppercase characters.
-->
<xs:enumeration value="upper"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="diacritics-type">
<xs:restriction base="xs:string">
<!--
! Matches tokens with and without diacritics.
-->
<xs:enumeration value="diacritics insensitive"/>
<!--
! Matches tokens only if they contain the same diacritics.
-->
<xs:enumeration value="diacritics sensitive"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="stemming-type">
<xs:restriction base="xs:string">
<!--
! Tokens are not stemmed.
-->
<xs:enumeration value="no stemming"/>
<!--
! Matches may contain tokens that have the same stem.
-->
<xs:enumeration value="stemming"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="boolean-value">
<xs:attribute name="value" type="xs:boolean" use="required"/>
</xs:complexType>
<!--======================================================================-->
<xs:element name="token">
<xs:complexType>
<!-- The language of the token. -->
<xs:attribute name="lang" type="xs:language"/>
<!-- The sentence number. -->
<xs:attribute name="sentence" type="xs:nonNegativeInteger" use="required"/>
<!-- The paragraph number. -->
<xs:attribute name="paragraph" type="xs:nonNegativeInteger" use="required"/>
<!-- The token string value. -->
<xs:attribute name="value" type="xs:string" use="required"/>
<!--
! A reference to the originating node. If the token occurred within an
! element, the reference refers to the text node. If the token occurred
! within an attribute, the reference refers to the attribute node.
-->
<xs:attribute name="node-ref" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
<!--======================================================================-->
<xs:element name="tokenizer-properties">
<xs:complexType>
<xs:all>
<!--
! If true, XML comments separate tokens. (No example can be provided
! here because it is illegal to nest an XML comment inside an XML
! comment.)
-->
<xs:element name="comments-separate-tokens" type="boolean-value"/>
<!--
! If true, XML elements separate tokens. For example,
! <b>B</b>old would be 2 tokens instead of 1.
-->
<xs:element name="elements-separate-tokens" type="boolean-value"/>
<!--
! If true, XML processing instructions separate tokens. For example,
! net<?PI pi?>work would be 2 tokens instead of 1.
-->
<xs:element name="processing-instructions-separate-tokens" type="boolean-value"/>
<!--
! The list of languages that the tokenizer can tokenize.
-->
<xs:element name="supported-languages">
<xs:complexType>
<xs:sequence>
<xs:element name="lang" type="xs:language" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<!--
! The tokenizer's identifying URI.
-->
<xs:attribute name="uri" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
<!--======================================================================-->
</xs:schema>
<!-- vim:set et sw=2 ts=2: -->