blob: 4858b04458009e604a396a29d60cb7dcae806012 [file] [log] [blame]
<?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="5.0">
<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[
************************************************************************************
************************************************************************************
WARNING
THIS IS A PRE-RELEASE VERSION OF THIS FILE, PLEASE CHECK IF THERE IS AN UPDATE ON
http://myfaces.apache.org/tobago/tobago-config-5.0.xsd
************************************************************************************
************************************************************************************
This is the XML schema for the Tobago configuration files version 5.0.
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-5.0.xsd"
version="5.0">
...
</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:annotation>
<xs:documentation>
Name of this instance of the configuration to be referenced in other tobago-config.xml files.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ordering" type="tobago:ordering-type" minOccurs="0">
<xs:annotation>
<xs:documentation>
Can be used to order this instance of the configuration against other tobago-config.xml files.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="theme-config" type="tobago:theme-config-type" minOccurs="0">
<xs:annotation>
<xs:documentation>
Configure the themes to be used.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="create-session-secret" type="xs:boolean" minOccurs="0" default="true">
</xs:element>
<xs:element name="check-session-secret" type="xs:boolean" minOccurs="0" default="true">
</xs:element>
<xs:element name="prevent-frame-attacks" type="xs:boolean" minOccurs="0" default="true">
<xs:annotation>
<xs:documentation>
Sets the HTTP header "X-Frame-Options" to "DENY".
This setting is deprecated but needed for IE11. The current way to configure this is using
the Content Security Policy directive 'frame-ancestors'.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="set-nosniff-header" type="xs:boolean" minOccurs="0" default="true">
<xs:annotation>
<xs:documentation>
Sets the HTTP header "X-Content-Type-Options" to "nosniff".
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="classic-date-time-picker" type="xs:boolean" minOccurs="0" default="false">
<xs:annotation>
<xs:documentation>
Warning: No longer supported.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="content-security-policy" type="tobago:content-security-policy-type" minOccurs="0">
<xs:annotation>
<xs:documentation>
Define rule for CSP.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="sanitizer" type="tobago:sanitizer-type" minOccurs="0">
<xs:annotation>
<xs:documentation>
<![CDATA[
Define a Java class which implements org.apache.myfaces.tobago.sanitizer.Sanitizer
to protect against HTML content of <tc:out escape="true"/> and
<tc:textarea/>.
This is the default:
<sanitizer>
<sanitizer-class>org.apache.myfaces.tobago.sanitizer.JsoupSanitizer</sanitizer-class>
<properties>
<entry key="whitelist">relaxed</entry>
</properties>
</sanitizer>
]]>
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="decode-line-feed" type="xs:boolean" minOccurs="0" default="true">
<xs:annotation>
<xs:documentation>
Use LF instead of CR+LF in textarea while decoding.
HTTP transports usually a line break with CR+LF
(see https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4).
When this property is set to true (by default), the Java bean will get the string only with LF ('\n').
When this property is set to false, there might be a conflict with the length validator,
because you have 2 character for each line break.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="security-annotation" type="tobago:security-annotation-type" minOccurs="0" default="disable">
<xs:annotation>
<xs:documentation>
Defines the behavior of actions in buttons and links, if the MethodExpression
has a security annotation.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="theme-definitions" type="tobago:theme-definitions-type" minOccurs="0">
<xs:annotation>
<xs:documentation>
Configuration of a new theme which may come with this JAR file.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="version"
type="tobago:tobago-config-version-type"
use="required"/>
</xs:complexType>
<xs:simpleType name="security-annotation-type">
<xs:restriction base="xs:token">
<xs:enumeration value="hide"/>
<xs:enumeration value="disable"/>
<xs:enumeration value="ignore"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tobago-config-version-type">
<xs:restriction base="xs:token">
<xs:enumeration value="5.0"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ordering-type">
<xs:sequence>
<xs:element name="after" type="tobago:before-after-type" minOccurs="0">
<xs:annotation>
<xs:documentation>
This configuration instance needs to be applied after the referenced instance.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="before" type="tobago:before-after-type" minOccurs="0">
<xs:annotation>
<xs:documentation>
This configuration instance needs to be applied before the referenced instance.
</xs:documentation>
</xs:annotation>
</xs:element>
</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:annotation>
<xs:documentation>
The default theme, which is used when no theme is selected programmatically.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="supported-theme" type="xs:string" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Other supported theme for this application.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="content-security-policy-type">
<xs:sequence>
<xs:element name="directive" type="tobago:directive-type" maxOccurs="unbounded" minOccurs="0">
<xs:annotation>
<xs:documentation>
CSP directive to be added to the HTTP header.
It is possible to define more than one directive with the same name, to allow
more than one value.
The mode defines, if the SCP headers should be written, not written, or only
reporting headers should be written.
For more information about the directives see
https://www.w3.org/TR/CSP/
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="mode" type="tobago:csp-mode-type" use="required"/>
</xs:complexType>
<xs:complexType name="directive-type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Name of the CSP directive e. g. script-src, style-src, frame-ancestors, child-src, ...
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="sanitizer-type">
<xs:sequence>
<xs:element name="sanitizer-class" type="xs:string"/>
<xs:element name="properties" type="tobago:properties-type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="properties-type">
<xs:sequence>
<xs:element name="entry" type="tobago:entry-type" maxOccurs="unbounded"/>
</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:simpleType name="csp-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="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:annotation>
<xs:documentation>
The technical name of the theme, which e. g. is used in paths.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="display-name" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
The display name of the theme, which may be used in a theme selector.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="fallback" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>
The parent of the theme.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="version" type="xs:string">
<xs:annotation>
<xs:documentation>
The version of the theme. The version string will be encoded into the
resource path, to avoid caching problems. The version can be accessed by
#{tobagoContext.theme.version}.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="resources" type="tobago:resources-type" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
A list of resources this theme is using.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="resources-type">
<xs:annotation>
<xs:documentation>
Resources can be added, or removed (if they are coming from its fallback theme).
To removed the resources, put it inside the "excludes" with the same name it was included
in the parent.
There a two different sets of resources, one for production and one for development.
Use the production flag to set this mode explicitly.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="includes" type="tobago:includes-excludes-type" minOccurs="0"/>
<xs:element name="excludes" type="tobago:includes-excludes-type" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="production" type="xs:boolean" use="required"/>
</xs:complexType>
<xs:complexType name="includes-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="type" type="xs:string"/>
<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:schema>