GEODE-6795: Update and correct Native Client XSD (#499)
* GEODE-6795: Update and correct Native Client XSD
diff --git a/xsds/cpp-cache-1.10-DRAFT.xsd b/xsds/cpp-cache-1.10-DRAFT.xsd
new file mode 100644
index 0000000..38b57d9
--- /dev/null
+++ b/xsds/cpp-cache-1.10-DRAFT.xsd
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+-->
+
+<xsd:schema
+ targetNamespace="http://geode.apache.org/schema/cpp-cache"
+ xmlns:nc="http://geode.apache.org/schema/cpp-cache"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ version="1.0">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ This is the XML Schema for the Geode distributed cache declarative
+ caching XML file. All declarative cache files must include a schema
+ of the following form:
+
+ <client-cache
+ xmlns="http://geode.apache.org/schema/cpp-cache"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://geode.apache.org/schema/cpp-cache
+ http://geode.apache.org/schema/cpp-cache/cpp-cache-1.10.xsd"
+ version="1.10">
+
+The contents of a declarative XML file correspond to APIs found in the
+org.apache.geode.cache and org.apache.geode.cache.client
+packages. A declarative caching XML file is used to populate a Cache
+or a ClientCache when it is created.
+
+The top-level element in this syntax is "client-cache". All elements are
+listed here in alphabetical order.
+
+The following conventions apply to all Geode distributed cache
+declarative caching XML file elements unless indicated otherwise.
+
+- In elements that contain PCDATA, leading and trailing whitespace in
+ the data may be ignored.
+
+- In elements whose value is an "enumerated type", the value is case
+ sensitive.
+
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="client-cache">
+ <xsd:complexType>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="pool">
+ <xsd:complexType>
+ <xsd:choice>
+ <xsd:element maxOccurs="unbounded" name="locator" type="nc:host-port-type" />
+ <xsd:element maxOccurs="unbounded" name="server" type="nc:host-port-type" />
+ </xsd:choice>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ <xsd:attribute name="free-connection-timeout" type="nc:duration-type" />
+ <xsd:attribute name="load-conditioning-interval" type="nc:duration-type" />
+ <xsd:attribute name="min-connections" type="xsd:string" />
+ <xsd:attribute name="max-connections" type="xsd:string" />
+ <xsd:attribute name="retry-attempts" type="xsd:string" />
+ <xsd:attribute name="idle-timeout" type="nc:duration-type" />
+ <xsd:attribute name="ping-interval" type="nc:duration-type" />
+ <xsd:attribute name="read-timeout" type="nc:duration-type" />
+ <xsd:attribute name="server-group" type="xsd:string" />
+ <xsd:attribute name="socket-buffer-size" type="xsd:string" />
+ <xsd:attribute name="subscription-enabled" type="xsd:boolean" />
+ <xsd:attribute name="subscription-message-tracking-timeout" type="nc:duration-type" />
+ <xsd:attribute name="subscription-ack-interval" type="nc:duration-type" />
+ <xsd:attribute name="subscription-redundancy" type="xsd:string" />
+ <xsd:attribute name="statistic-interval" type="nc:duration-type" />
+ <xsd:attribute name="pr-single-hop-enabled" type="xsd:boolean" />
+ <xsd:attribute name="thread-local-connections" type="xsd:boolean" />
+ <xsd:attribute name="multiuser-authentication" type="xsd:boolean" />
+ <xsd:attribute name="update-locator-list-interval" type="nc:duration-type" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="region" type="nc:region-type" />
+ <xsd:element minOccurs="0" name="pdx">
+ <xsd:complexType>
+ <xsd:attribute name="ignore-unread-fields" type="xsd:boolean" />
+ <xsd:attribute name="read-serialized" type="xsd:boolean" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ <xsd:attribute name="version" type="nc:version-type" use="required" fixed="1.10" />
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="region-type">
+ <xsd:sequence>
+ <xsd:element minOccurs="0" name="region-attributes" type="nc:region-attributes-type" />
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="region" type="nc:region-type" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ <xsd:attribute name="refid" type="xsd:string" />
+ </xsd:complexType>
+
+ <xsd:complexType name="region-attributes-type">
+ <xsd:sequence>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="region-time-to-live" type="nc:expiration-type" />
+ <xsd:element name="region-idle-time" type="nc:expiration-type" />
+ <xsd:element name="entry-time-to-live" type="nc:expiration-type" />
+ <xsd:element name="entry-idle-time" type="nc:expiration-type" />
+ <xsd:element name="partition-resolver" type="nc:library-type" />
+ <xsd:element name="cache-loader" type="nc:library-type" />
+ <xsd:element name="cache-listener" type="nc:library-type" />
+ <xsd:element name="cache-writer" type="nc:library-type" />
+ <xsd:element name="persistence-manager">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="nc:library-type">
+ <xsd:sequence>
+ <xsd:element name="properties">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element minOccurs="0" maxOccurs="unbounded" name="property">
+ <xsd:complexType>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ <xsd:attribute name="value" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="caching-enabled" type="xsd:boolean" />
+ <xsd:attribute name="cloning-enabled" type="xsd:boolean" />
+ <xsd:attribute name="scope">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="local" />
+ <xsd:enumeration value="distributed-no-ack" />
+ <xsd:enumeration value="distributed-ack" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="initial-capacity" type="xsd:string" />
+ <xsd:attribute name="load-factor" type="xsd:string" />
+ <xsd:attribute name="concurrency-level" type="xsd:string" />
+ <xsd:attribute name="lru-entries-limit" type="xsd:string" />
+ <xsd:attribute name="disk-policy">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="none" />
+ <xsd:enumeration value="overflows" />
+ <xsd:enumeration value="persist" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="endpoints" type="xsd:string" />
+ <xsd:attribute name="client-notification" type="xsd:boolean" />
+ <xsd:attribute name="pool-name" type="xsd:string" />
+ <xsd:attribute name="concurrency-checks-enabled" type="xsd:boolean" />
+ <xsd:attribute name="id" type="xsd:string" />
+ <xsd:attribute name="refid" type="xsd:string" />
+ </xsd:complexType>
+
+ <xsd:complexType name="expiration-type">
+ <xsd:sequence>
+ <xsd:element name="expiration-attributes">
+ <xsd:complexType>
+ <xsd:attribute name="timeout" type="nc:duration-type" use="required" />
+ <xsd:attribute name="action">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="invalidate" />
+ <xsd:enumeration value="destroy" />
+ <xsd:enumeration value="local-invalidate" />
+ <xsd:enumeration value="local-destroy" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="host-port-type">
+ <xsd:attribute name="host" type="xsd:string" use="required" />
+ <xsd:attribute name="port" type="nc:port-type" use="required" />
+ </xsd:complexType>
+
+ <xsd:simpleType name="port-type">
+ <xsd:restriction base="xsd:int">
+ <xsd:minInclusive value="0" />
+ <xsd:maxInclusive value="65535" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="version-type">
+ <xsd:annotation>
+ <xsd:documentation>
+ Decimal version type.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:pattern value="\.?[0-9]+(\.[0-9]+)*" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="duration-type">
+ <xsd:annotation>
+ <xsd:documentation>
+ Time duration in positive integer and unit.
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:token">
+ <xsd:pattern value="\d+(h|min|s|ms|us|ns)" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:complexType name="library-type">
+ <xsd:attribute name="library-name" type="xsd:string" />
+ <xsd:attribute name="library-function-name" type="xsd:string" use="required" />
+ </xsd:complexType>
+
+</xsd:schema>