blob: fc5794f25ec8b624e2c2ec6f90b7767f981bc88f [file] [log] [blame]
<!--
Copyright (c) 2018, 2019 Oracle and/or its affiliates. All rights reserved.
This program and the accompanying materials are made available under the
terms of the Eclipse Public License v. 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0,
or the Eclipse Distribution License v. 1.0 which is available at
http://www.eclipse.org/org/documents/edl-v10.php.
SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-->
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="rs"
xmlns:rs="rs"
elementFormDefault="qualified">
<xsd:element name="main" type="rs:Main"/>
<xsd:complexType name="Main">
<xsd:sequence>
<xsd:element name="numbers" type="rs:Numbers"/>
<xsd:element maxOccurs="2" minOccurs="1" name="strings" type="rs:Strings"/>
<xsd:element nillable="true" name="unsignedByte" type="rs:unsignedByte"/>
<xsd:element nillable="false" name="byteArray" type="rs:byteArray"/>
<xsd:element name="someCollection" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="optionalElement" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element minOccurs="0" name="optionalElementWithSimpleType">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="31"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Numbers">
<xsd:sequence>
<xsd:element name="minInclusive" type="rs:minInclusive"/>
<xsd:element name="maxInclusive" type="rs:maxInclusive"/>
<xsd:element name="minExclusive" type="rs:minExclusive"/>
<xsd:element name="maxExclusive" type="rs:maxExclusive"/>
<xsd:element name="minMaxExclusive" type="rs:minMaxExclusive"/>
<xsd:element maxOccurs="1" minOccurs="1" name="NumberWithHiddenValueAttribute" type="rs:NumberWithHiddenValueAttribute"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="Number">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="NumberWithHiddenValueAttribute">
<xsd:simpleContent>
<xsd:extension base="rs:Number">
<xsd:attribute name="code" type="xsd:string" use="required"/>
<xsd:attribute name = "whatNumber" type="xsd:long" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="Strings">
<xsd:sequence>
<xsd:element name="regexShorthands" type="rs:regexShorthands"/>
<xsd:element name="idType" type="rs:idType"/>
<xsd:element name="genericString" type="rs:minMaxLength"/>
<xsd:element name="maxLength" type="rs:maxLength"/>
<xsd:element name="minLength" type="rs:minLength"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="regexShorthands">
<xsd:restriction base="xsd:string">
<!--\i - Matches any character that may be the first character of an XML name.-->
<xsd:pattern value="\i"/>
<xsd:pattern value="\I"/>
<!--\c - Matches any character that may occur after the first character in an XML name.-->
<xsd:pattern value="\c"/>
<xsd:pattern value="\C"/>
<!--\d - All digits.-->
<xsd:pattern value="\d"/>
<xsd:pattern value="\D"/>
<!--\w - Word character.-->
<!--'This shorthand translates to a pattern with ampersand characters, which causes the Java Matcher behave non-deterministically and malfunction from time to time!'-->
<!--<xsd:pattern value="\w"/>-->
<!--'This shorthand translates to a pattern with ampersand characters, which causes the Java Matcher behave non-deterministically and malfunction from time to time!'-->
<!--<xsd:pattern value="\W"/>-->
<!--\s - Whitespace character.-->
<xsd:pattern value="\s"/>
<xsd:pattern value="\S"/>
<!--\b, \B - Boundary definitions.-->
<!--'This expression is not supported in the current option setting.'-->
<!--<xsd:pattern value="\b"/>-->
<!--'This expression is not supported in the current option setting.'-->
<!--<xsd:pattern value="\B"/>-->
<!--\h - Horizontal whitespace character - Java does not support, changed in Java 8 though.-->
<xsd:pattern value="\h"/>
<xsd:pattern value="\H"/>
<!--\v - Vertical whitespace character - Java translates the shorthand to \cK only, meaning changed in Java 8 though.-->
<!--'This expression is not supported in the current option setting.'-->
<!--<xsd:pattern value="\v"/>-->
<xsd:pattern value="\V"/>
<!--\X - Extended grapheme cluster.-->
<!--'This expression is not supported in the current option setting.'-->
<!--<xsd:pattern value="\X"/>-->
<!--\R - Carriage return.-->
<xsd:pattern value="\R"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="minMaxLength">
<xsd:restriction base="xsd:string">
<xsd:minLength value="0"/>
<xsd:maxLength value="1024"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="maxLength">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1024"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="minLength">
<xsd:restriction base="xsd:string">
<xsd:minLength value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="unsignedByte">
<xsd:restriction base="xsd:unsignedByte">
<xsd:pattern value="[0-9]"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="maxInclusive">
<xsd:restriction base="xsd:long">
<xsd:maxInclusive value="1000"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="minInclusive">
<xsd:restriction base="xsd:long">
<xsd:minInclusive value="1000"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="maxExclusive">
<xsd:restriction base="xsd:long">
<xsd:maxExclusive value="1000"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="minExclusive">
<xsd:restriction base="xsd:long">
<xsd:minExclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="minMaxExclusive">
<xsd:restriction base="xsd:long">
<xsd:minExclusive value="0"/>
<xsd:maxExclusive value="9223372"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="byteArray">
<xsd:restriction base="xsd:hexBinary">
<xsd:maxLength value="18" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="idType">
<xsd:restriction base="xsd:ID">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>