TOBAGO-1944: Backport to 2.x: Possibility to exclude resources from parent theme.

(cherry picked from commit 7c828b3434e34a524004cbbc27f8900deddf7f6b)
diff --git a/tobago-core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config-2.3.xsd b/tobago-core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config-2.3.xsd
new file mode 100644
index 0000000..0c00ff2
--- /dev/null
+++ b/tobago-core/src/main/resources/org/apache/myfaces/tobago/config/tobago-config-2.3.xsd
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema
+    targetNamespace="http://myfaces.apache.org/tobago/tobago-config"
+    xmlns:tobago="http://myfaces.apache.org/tobago/tobago-config"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    elementFormDefault="qualified"
+    version="2.3">
+
+  <xs:annotation>
+    <xs:documentation>
+      <![CDATA[
+      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.
+      ]]>
+    </xs:documentation>
+  </xs:annotation>
+
+  <xs:annotation>
+    <xs:documentation>
+      <![CDATA[
+      This is the XML schema for the Tobago configuration files version 2.3.
+
+      Use the following definition:
+
+      <tobago-config
+          xmlns="http://myfaces.apache.org/tobago/tobago-config"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://myfaces.apache.org/tobago/tobago-config http://myfaces.apache.org/tobago/tobago-config-2.3.xsd"
+          version="2.3">
+        ...
+      </tobago-config>
+      ]]>
+    </xs:documentation>
+  </xs:annotation>
+
+  <xs:element name="tobago-config" type="tobago:tobago-config-type"/>
+
+  <xs:complexType name="tobago-config-type">
+    <xs:sequence>
+      <xs:element name="name" type="tobago:name-type" minOccurs="0"/>
+      <xs:element name="ordering" type="tobago:ordering-type" minOccurs="0"/>
+      <xs:element name="theme-config" type="tobago:theme-config-type" minOccurs="0"/>
+      <xs:element name="resource-dir" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="create-session-secret" type="xs:boolean" minOccurs="0" default="true"/>
+      <xs:element name="check-session-secret" type="xs:boolean" minOccurs="0" default="true"/>
+      <xs:element name="prevent-frame-attacks" type="xs:boolean" minOccurs="0" default="true"/>
+      <xs:element name="set-nosniff-header" type="xs:boolean" minOccurs="0" default="true"/>
+      <xs:element name="auto-access-key-from-label" type="xs:boolean" minOccurs="0" default="true"/>
+      <xs:element name="classic-date-time-picker" type="xs:boolean" minOccurs="0" default="false"/>
+      <xs:element name="content-security-policy" type="tobago:content-security-policy-type" minOccurs="0"/>
+      <xs:element name="sanitizer" type="tobago:sanitizer-type" minOccurs="0"/>
+      <xs:element name="renderers" type="tobago:renderers-type" minOccurs="0"/>
+      <xs:element name="theme-definitions" type="tobago:theme-definitions-type" minOccurs="0"/>
+      <xs:element name="mime-types" type="tobago:mime-types-type" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="version"
+                  type="tobago:tobago-config-version-type"
+                  use="required"/>
+  </xs:complexType>
+
+  <xs:simpleType name="tobago-config-version-type">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="2.3"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:complexType name="ordering-type">
+    <xs:sequence>
+      <xs:element name="after" type="tobago:before-after-type" minOccurs="0"/>
+      <xs:element name="before" type="tobago:before-after-type" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="before-after-type">
+    <xs:sequence>
+      <xs:element name="name" type="tobago:name-type" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="theme-config-type">
+    <xs:sequence>
+      <xs:element name="default-theme" type="xs:string"/>
+      <xs:element name="supported-theme" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="content-security-policy-type">
+    <xs:sequence>
+      <xs:element name="directive" type="xs:string" maxOccurs="unbounded" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="mode" type="tobago:scp-mode-type" use="required"/>
+  </xs:complexType>
+
+  <xs:complexType name="sanitizer-type">
+    <xs:sequence>
+      <xs:element name="sanitizer-class" type="xs:string" maxOccurs="1" minOccurs="1"/>
+      <xs:element name="properties" type="tobago:properties-type" maxOccurs="1" minOccurs="0"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:simpleType name="scp-mode-type">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="on"/>
+      <xs:enumeration value="off"/>
+      <xs:enumeration value="report-only"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:complexType name="renderers-type">
+    <xs:sequence>
+      <xs:element name="renderer" type="tobago:renderer-type" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="renderer-type">
+    <xs:sequence>
+      <xs:element name="name" type="xs:string"/>
+      <xs:element name="supported-markup" type="tobago:supported-markup-type"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="supported-markup-type">
+    <xs:sequence>
+      <xs:element name="markup" type="xs:string" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="theme-definitions-type">
+    <xs:sequence>
+      <xs:element name="theme-definition" type="tobago:theme-definition-type" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="theme-definition-type">
+    <xs:sequence>
+      <xs:element name="name" type="xs:string"/>
+      <xs:element name="display-name" type="xs:string" minOccurs="0"/>
+      <xs:element name="resource-path" type="xs:string"/>
+      <xs:element name="fallback" type="xs:string" minOccurs="0"/>
+      <xs:element name="versioned" type="xs:boolean" minOccurs="0" default="false"/>
+      <xs:element name="renderers" type="tobago:renderers-type" minOccurs="0"/>
+      <xs:element name="resources" type="tobago:resources-type" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="resources-type">
+    <xs:sequence>
+      <xs:element name="excludes" type="tobago:excludes-type" minOccurs="0" maxOccurs="1"/>
+      <xs:element name="script" type="tobago:script-type" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="style" type="tobago:style-type" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="production" type="xs:boolean" use="required"/>
+  </xs:complexType>
+
+  <xs:complexType name="excludes-type">
+    <xs:sequence>
+      <xs:element name="script" type="tobago:script-type" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="style" type="tobago:style-type" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="script-type">
+    <xs:attribute name="name" type="xs:string" use="required"/>
+    <xs:attribute name="priority" type="xs:unsignedShort"/>
+  </xs:complexType>
+
+  <xs:complexType name="style-type">
+    <xs:attribute name="name" type="xs:string" use="required"/>
+    <xs:attribute name="priority" type="xs:unsignedShort"/>
+  </xs:complexType>
+
+  <xs:simpleType name="name-type">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+
+  <xs:complexType name="properties-type">
+    <xs:sequence>
+      <xs:element name="entry" type="tobago:entry-type" maxOccurs="unbounded" minOccurs="1"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="entry-type">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute name="key" type="xs:string" use="required"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+
+  <xs:complexType name="mime-types-type">
+    <xs:sequence>
+      <xs:element name="mime-type" type="tobago:mime-type-type" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="mime-type-type">
+    <xs:sequence>
+      <xs:element name="extension" type="xs:string"/>
+      <xs:element name="type" type="xs:string"/>
+    </xs:sequence>
+  </xs:complexType>
+
+</xs:schema>