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>