diff --git a/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd b/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd index 38d1935a336339db4214d5f94f581db0ec4e5308..176edbf506e2af15065be90ad3bf221d385cd788 100644 --- a/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd +++ b/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd @@ -19,101 +19,18 @@ <xs:schema xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <xs:include schemaLocation="DFDLGeneralFormatBase.dfdl.xsd" /> + <!-- Intended for inclusion into other schemas. Has no targetNamespace on purpose --> <xs:annotation> <xs:appinfo source="http://www.ogf.org/dfdl/"> - <!-- - This set of properties should never change. It can be added to - if properties are missing, but should not be changed. - - Changes should be introduced by way of defining new formats in - terms of this one, which override definitions. See below in - the file for examples. - --> - <dfdl:defineFormat name="GeneralFormatOriginal"> - <dfdl:format - alignment="1" - alignmentUnits="bytes" - binaryFloatRep="ieee" - binaryNumberCheckPolicy="lax" - binaryNumberRep="binary" - binaryCalendarEpoch="1970-01-01T00:00:00" - bitOrder="mostSignificantBitFirst" - byteOrder="bigEndian" - calendarCenturyStart="53" - calendarCheckPolicy="strict" - calendarDaysInFirstWeek="4" - calendarFirstDayOfWeek="Sunday" - calendarLanguage="en" - calendarObserveDST="yes" - calendarPatternKind="implicit" - calendarTimeZone="" - choiceLengthKind="implicit" - decimalSigned="yes" - documentFinalTerminatorCanBeMissing="no" - emptyValueDelimiterPolicy="both" - encodingErrorPolicy="replace" - encoding="US-ASCII" - escapeSchemeRef="" - fillByte="%#r20;" - floating="no" - ignoreCase="no" - initiatedContent="no" - initiator="" - leadingSkip="0" - lengthKind="implicit" - lengthUnits="bytes" - occursCountKind="implicit" - outputNewLine="%LF;" - representation="text" - separator="" - separatorPosition="infix" - separatorSuppressionPolicy="anyEmpty" - sequenceKind="ordered" - terminator="" - textBidi="no" - textBooleanPadCharacter="%SP;" - textCalendarJustification="left" - textCalendarPadCharacter="%SP;" - textNumberCheckPolicy="lax" - textNumberJustification="right" - textNumberPadCharacter="%SP;" - textNumberPattern="#,##0.###;-#,##0.###" - textNumberRep="standard" - textNumberRounding="explicit" - textNumberRoundingIncrement="0" - textNumberRoundingMode="roundHalfEven" - textOutputMinLength="0" - textPadKind="none" - textStandardBase="10" - textStandardDecimalSeparator="." - textStandardExponentRep="E" - textStandardGroupingSeparator="," - textStandardInfinityRep="Inf" - textStandardNaNRep="NaN" - textStandardZeroRep="0" - textStringJustification="left" - textStringPadCharacter="%SP;" - textTrimKind="none" - trailingSkip="0" - truncateSpecifiedLengthString="no" - utf16Width="fixed" - /> - </dfdl:defineFormat> - <dfdl:defineFormat name="GeneralFormat"> - <dfdl:format ref="GeneralFormatOriginal" /> + <dfdl:format ref="GeneralFormatBase" + emptyElementParsePolicy="treatAsEmpty"/> </dfdl:defineFormat> - - <dfdl:defineFormat name="GeneralFormatPortable"> - <dfdl:format ref="GeneralFormatOriginal" - calendarTimeZone="UTC" - encodingErrorPolicy="error" - /> - </dfdl:defineFormat> - + </xs:appinfo> </xs:annotation> - + </xs:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormatBase.dfdl.xsd b/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormatBase.dfdl.xsd new file mode 100644 index 0000000000000000000000000000000000000000..f22159a361218c0fb2207b8a8e12bfb086881efb --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormatBase.dfdl.xsd @@ -0,0 +1,108 @@ +<?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. +--> + +<xs:schema xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:xs="http://www.w3.org/2001/XMLSchema"> + + <!-- Intended for inclusion into other schemas. Has no targetNamespace on purpose --> + <xs:annotation> + <xs:appinfo source="http://www.ogf.org/dfdl/"> + + <!-- + This set of properties should never change. It can be added to + if properties are missing, but should not be changed. + + Changes should be introduced by way of defining new formats in + terms of this one, which override definitions. See below in + the file for examples. + --> + <dfdl:defineFormat name="GeneralFormatBase"> + <dfdl:format + alignment="1" + alignmentUnits="bytes" + binaryFloatRep="ieee" + binaryNumberCheckPolicy="lax" + binaryNumberRep="binary" + binaryCalendarEpoch="1970-01-01T00:00:00" + bitOrder="mostSignificantBitFirst" + byteOrder="bigEndian" + calendarCenturyStart="53" + calendarCheckPolicy="strict" + calendarDaysInFirstWeek="4" + calendarFirstDayOfWeek="Sunday" + calendarLanguage="en" + calendarObserveDST="yes" + calendarPatternKind="implicit" + calendarTimeZone="" + choiceLengthKind="implicit" + decimalSigned="yes" + documentFinalTerminatorCanBeMissing="no" + emptyValueDelimiterPolicy="both" + encodingErrorPolicy="replace" + encoding="US-ASCII" + escapeSchemeRef="" + fillByte="%#r20;" + floating="no" + ignoreCase="no" + initiatedContent="no" + initiator="" + leadingSkip="0" + lengthKind="implicit" + lengthUnits="bytes" + occursCountKind="implicit" + outputNewLine="%LF;" + representation="text" + separator="" + separatorPosition="infix" + separatorSuppressionPolicy="anyEmpty" + sequenceKind="ordered" + terminator="" + textBidi="no" + textBooleanPadCharacter="%SP;" + textCalendarJustification="left" + textCalendarPadCharacter="%SP;" + textNumberCheckPolicy="lax" + textNumberJustification="right" + textNumberPadCharacter="%SP;" + textNumberPattern="#,##0.###;-#,##0.###" + textNumberRep="standard" + textNumberRounding="explicit" + textNumberRoundingIncrement="0" + textNumberRoundingMode="roundHalfEven" + textOutputMinLength="0" + textPadKind="none" + textStandardBase="10" + textStandardDecimalSeparator="." + textStandardExponentRep="E" + textStandardGroupingSeparator="," + textStandardInfinityRep="Inf" + textStandardNaNRep="NaN" + textStandardZeroRep="" + textStringJustification="left" + textStringPadCharacter="%SP;" + textTrimKind="none" + trailingSkip="0" + truncateSpecifiedLengthString="no" + utf16Width="fixed" + /> + </dfdl:defineFormat> + + </xs:appinfo> + </xs:annotation> + +</xs:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormatPortable.dfdl.xsd b/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormatPortable.dfdl.xsd new file mode 100644 index 0000000000000000000000000000000000000000..183304d91ce270e485784b529a3a9ce8f10daf31 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/DFDLGeneralFormatPortable.dfdl.xsd @@ -0,0 +1,38 @@ +<?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. +--> + +<xs:schema xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:xs="http://www.w3.org/2001/XMLSchema"> + + <xs:include schemaLocation="DFDLGeneralFormatBase.dfdl.xsd" /> + + <!-- Intended for inclusion into other schemas. Has no targetNamespace on purpose --> + <xs:annotation> + <xs:appinfo source="http://www.ogf.org/dfdl/"> + + <dfdl:defineFormat name="GeneralFormat"> + <dfdl:format ref="GeneralFormatBase" + calendarTimeZone="UTC" + encodingErrorPolicy="error" + /> + </dfdl:defineFormat> + + </xs:appinfo> + </xs:annotation> + +</xs:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/DFDL_part1_simpletypes.xsd b/DFDL/attribution/org/apache/daffodil/xsd/DFDL_part1_simpletypes.xsd new file mode 100644 index 0000000000000000000000000000000000000000..8991c147a9e591e9433cb45fbdf6d1bc7d3f4541 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/DFDL_part1_simpletypes.xsd @@ -0,0 +1,713 @@ +<?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://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" + attributeFormDefault="unqualified" elementFormDefault="qualified"> + + <!-- ============================================================= --> + <!-- Base DFDL Data types --> + <!-- ============================================================= --> + + <xsd:simpleType name="DFDLExpression"> + <xsd:annotation> + <xsd:documentation>A subset of XPath 2.0 expressions for use in + properties</xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:pattern value="(\{[^\{].*\})|(\{\})" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="EmptyString"> + <xsd:annotation> + <xsd:documentation>Matches the empty string only. No toleration of + whitespace.</xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:string"> + <xsd:whiteSpace value="preserve" /> + <xsd:length value="0" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DFDLExpressionOrNothing"> + <xsd:annotation> + <xsd:documentation>An expression, or nothing at all.</xsd:documentation> + </xsd:annotation> + <xsd:union memberTypes="dfdl:EmptyString dfdl:DFDLExpression" /> + <!-- + 2012-01-04 mbeckerle - If you change the order of this union, + it stops enforcing the empty string aspect. + Reverse the order and then just empty whitespace will validate. + --> + </xsd:simpleType> + + <xsd:simpleType name="DFDLExpressionOrPatternOrNothing"> + <xsd:annotation> + <xsd:documentation>An expression, a regex, or nothing at all. + </xsd:documentation> + </xsd:annotation> + <xsd:union + memberTypes="dfdl:EmptyString dfdl:DFDLExpression dfdl:DFDLRegularExpression" /> + <!-- + 2012-01-04 mbeckerle - If you change the order of this union, + it stops enforcing the empty string aspect. + Reverse the order and then just empty whitespace will validate. + --> + </xsd:simpleType> + + <xsd:simpleType name="DFDLStringLiteral"> + <xsd:restriction base="xsd:string"> + </xsd:restriction> + </xsd:simpleType> + + <!-- used alone, this type will allow empty string --> + <xsd:simpleType name="ListOfDFDLStringLiteral"> + <xsd:list itemType="xsd:token"/> + </xsd:simpleType> + + <xsd:simpleType name="NonEmptyStringLiteral"> + <xsd:annotation> + <xsd:documentation>Matches a non-empty string only. No toleration of + whitespace in the string.</xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="\S+"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="NonEmptyListOfDFDLStringLiteral"> + <xsd:restriction base="dfdl:ListOfDFDLStringLiteral"> + <xsd:minLength value="1"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="NonEmptyListOfDFDLStringLiteral_nilValue"> + <xsd:restriction base="dfdl:ListOfDFDLStringLiteral"> + <!-- used for dfdl:nilValue. We can give a much clearer diagnostic with a suggestion + on what the user should do instead, ie did they mean to use '%ES;'. So we don't + check this here. --> + <!-- <xsd:minLength value="1"/> --> + </xsd:restriction> + </xsd:simpleType> + + <!-- used alone, this type will allow empty string --> + <xsd:simpleType name="ListOfInteger"> + <xsd:list itemType="xsd:integer"/> + </xsd:simpleType> + + <xsd:simpleType name="NonEmptyListOfInteger"> + <xsd:restriction base="dfdl:ListOfInteger"> + <xsd:minLength value="1"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="NonEmptyListofDFDLStringLiteralOrNonEmptyListOfInteger"> + <xsd:union memberTypes="dfdl:NonEmptyListOfDFDLStringLiteral dfdl:NonEmptyListOfInteger" /> + </xsd:simpleType> + + <xsd:simpleType name="DFDLNonNegativeInteger"> + <xsd:restriction base="xsd:int"> + <xsd:minInclusive value="0" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DFDLRegularExpression"> + <xsd:restriction base="xsd:string"> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="DFDLQName"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:QName" /> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:length value="0" /> + </xsd:restriction> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <!-- ============================================================= --> + <!-- Restrictions of base DFDL Data types --> + <!-- ============================================================= --> + + <!-- A positive integer or 'implicit' for schema specification --> + <xsd:simpleType name="AlignmentType"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="implicit" /> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLNonNegativeInteger"> + <xsd:minInclusive value="1" /> + </xsd:restriction> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <!-- A positive integer or empty string --> + <xsd:simpleType name="BinaryBooleanTrueRepType"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:length value="0"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLNonNegativeInteger"> + <xsd:minInclusive value="0" /> + </xsd:restriction> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:simpleType name="BinaryBooleanFalseRepType"> + <xsd:restriction base="dfdl:DFDLNonNegativeInteger"> + <xsd:minInclusive value="0" /> + </xsd:restriction> + </xsd:simpleType> + + <!-- ========================================================== --> + <!-- DFDL Enumerations --> + <!-- ========================================================= --> + + <xsd:simpleType name="EncodingEnum"> + <xsd:restriction base="xsd:token"> + <!-- IANA charsets or CCIDSs --> + <xsd:pattern value=".{1,60}" /> <!-- at least one character --> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextStringJustificationEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left" /> + <xsd:enumeration value="right" /> + <xsd:enumeration value="center" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextNumberJustificationEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left" /> + <xsd:enumeration value="right" /> + <xsd:enumeration value="center" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextNumberRoundingEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="pattern" /> + <xsd:enumeration value="explicit" /> + </xsd:restriction> + </xsd:simpleType> + + + <xsd:simpleType name="SignCodingValue"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="twosComplement" /> + <xsd:enumeration value="onesComplement" /> + <xsd:enumeration value="signMagnitude" /> + <xsd:enumeration value="unsignedBinary" /> + <xsd:enumeration value="unsignedDecimal" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="RepresentationEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="binary" /> + <xsd:enumeration value="text" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextPadKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none" /> + <xsd:enumeration value="padChar" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextTrimKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none" /> + <xsd:enumeration value="padChar" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="EscapeKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="escapeCharacter" /> + <xsd:enumeration value="escapeBlock" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="GenerateEscapeEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="always" /> + <xsd:enumeration value="whenNeeded" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextBidiTextOrderingEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="implicit" /> + <xsd:enumeration value="visual" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextBidiOrientationEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="LTR" /> + <xsd:enumeration value="RTL" /> + <xsd:enumeration value="contextual_LTR" /> + <xsd:enumeration value="contextual_RTL" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextBidiNumeralShapesEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="nominal" /> + <xsd:enumeration value="national" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextNumberRepEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="standard" /> + <xsd:enumeration value="zoned" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextNumberCheckPolicyEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="strict" /> + <xsd:enumeration value="lax" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="CalendarCheckPolicyEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="strict" /> + <xsd:enumeration value="lax" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextNumberBaseEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="2" /> + <xsd:enumeration value="8" /> + <xsd:enumeration value="10" /> + <xsd:enumeration value="16" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextNumberRoundingModeEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="roundCeiling" /> + <xsd:enumeration value="roundFloor" /> + <xsd:enumeration value="roundDown" /> + <xsd:enumeration value="roundUp" /> + <xsd:enumeration value="roundHalfEven" /> + <xsd:enumeration value="roundHalfDown" /> + <xsd:enumeration value="roundHalfUp" /> + <xsd:enumeration value="roundUnnecessary" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextZonedSignStyleEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="asciiStandard" /> + <xsd:enumeration value="asciiTranslatedEBCDIC" /> + <xsd:enumeration value="asciiCARealiaModified" /> + <xsd:enumeration value="asciiTandemModified" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="BinaryNumberRepEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="packed" /> + <xsd:enumeration value="bcd" /> + <xsd:enumeration value="binary" /> + <xsd:enumeration value="ibm4690Packed"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="BinaryNumberCheckPolicyEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="strict" /> + <xsd:enumeration value="lax" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="BinaryFloatRepEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ieee" /> + <xsd:enumeration value="ibm390Hex" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextBooleanJustificationEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left" /> + <xsd:enumeration value="right" /> + <xsd:enumeration value="center" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TextCalendarJustificationEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="left" /> + <xsd:enumeration value="right" /> + <xsd:enumeration value="center" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="CalendarPatternKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="explicit" /> + <xsd:enumeration value="implicit" /> + </xsd:restriction> + </xsd:simpleType> + + <!-- A pattern is used instead of an enumeration for compactness --> + <xsd:simpleType name="CalendarTimeZoneType"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="(UTC)([+\-]([01]\d|\d)((([:][0-5]\d){1,2})?))?" /> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="xsd:string"> + <xsd:length value="0"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:union> + + </xsd:simpleType> + + <xsd:simpleType name="CalendarLanguageType"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLStringLiteral"> + <!-- A pattern is used instead of an enumeration for compactness --> + <xsd:pattern value="([A-Za-z]{1,8}([-_][A-Za-z0-9]{1,8})*)"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLExpression"/> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:simpleType name="CalendarFirstDayOfWeekEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Monday" /> + <xsd:enumeration value="Tuesday" /> + <xsd:enumeration value="Wednesday" /> + <xsd:enumeration value="Thursday" /> + <xsd:enumeration value="Friday" /> + <xsd:enumeration value="Saturday" /> + <xsd:enumeration value="Sunday" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="BinaryCalendarRepEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="packed" /> + <xsd:enumeration value="bcd" /> + <xsd:enumeration value="binarySeconds" /> + <xsd:enumeration value="binaryMilliseconds" /> + <xsd:enumeration value="ibm4690Packed"/> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="LengthKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="explicit" /> + <xsd:enumeration value="delimited" /> + <xsd:enumeration value="implicit" /> + <xsd:enumeration value="prefixed" /> + <xsd:enumeration value="endOfParent" /> + <xsd:enumeration value="pattern" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="NilKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="literalValue" /> + <xsd:enumeration value="logicalValue" /> + <xsd:enumeration value="literalCharacter" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="NilValueDelimiterPolicyEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none" /> + <xsd:enumeration value="initiator" /> + <xsd:enumeration value="terminator" /> + <xsd:enumeration value="both" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="EmptyValueDelimiterPolicyEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="none" /> + <xsd:enumeration value="initiator" /> + <xsd:enumeration value="terminator" /> + <xsd:enumeration value="both" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="SequenceKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="ordered" /> + <xsd:enumeration value="unordered" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="LengthUnitsEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bits" /> + <xsd:enumeration value="bytes" /> + <xsd:enumeration value="characters" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="AlignmentUnitsEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="bits" /> + <xsd:enumeration value="bytes" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="GenerateQuotesEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="always" /> + <xsd:enumeration value="whenNeeded" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="SeparatorPositionEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="infix" /> + <xsd:enumeration value="prefix" /> + <xsd:enumeration value="postfix" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="SeparatorPolicyEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="required" /> + <xsd:enumeration value="suppressed" /> + <xsd:enumeration value="suppressedAtEndStrict" /> + <xsd:enumeration value="suppressedAtEndLax" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="SeparatorSuppressionPolicyEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="never" /> + <xsd:enumeration value="trailingEmpty" /> + <xsd:enumeration value="trailingEmptyStrict" /> + <xsd:enumeration value="anyEmpty" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="ChoiceLengthKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="implicit" /> + <xsd:enumeration value="explicit" /> + </xsd:restriction> + + </xsd:simpleType> + + <xsd:simpleType name="OccursCountKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="fixed" /> + <xsd:enumeration value="expression" /> + <xsd:enumeration value="parsed" /> + <xsd:enumeration value="stopValue" /> + <xsd:enumeration value="implicit" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="ByteOrderEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="littleEndian" /> + <xsd:enumeration value="bigEndian" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="BitOrderEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="mostSignificantBitFirst" /> + <xsd:enumeration value="leastSignificantBitFirst" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="YesNoEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="yes" /> + <xsd:enumeration value="no" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="UTF16WidthEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="fixed" /> + <xsd:enumeration value="variable" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="EncodingErrorPolicyEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="error" /> + <xsd:enumeration value="replace" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="TestKindEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="expression" /> + <xsd:enumeration value="pattern" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="FailureTypeEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="processingError" /> + <xsd:enumeration value="recoverableError" /> + </xsd:restriction> + </xsd:simpleType> + + <!-- A pattern is used instead of an enumeration for compactness --> + <xsd:simpleType name="BinaryPackedSignCodes"> + <xsd:restriction base="dfdl:DFDLStringLiteral"> + <!-- + A space separated string giving the hex sign nibbles to use for a + positive + value, a negative value, an unsigned value, and zero. + Valid values for positive nibble: A, C, E, F + Valid values for negative nibble: B, D + Valid values for unsigned nibble: F + Valid values for zero sign: A C E F 0 + Example: C D F C (typical S/390 usage) + Example: C D F 0 (handle special case for zero) + --> + <xsd:pattern value="(A|C|E|F) (B|D) (F) (A|C|E|F|0)" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="CalendarDaysInFirstWeek"> + <xsd:restriction base="dfdl:DFDLNonNegativeInteger"> + <xsd:minInclusive value="1" /> + <xsd:maxInclusive value="7" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="CalendarCenturyStart"> + <xsd:restriction base="dfdl:DFDLNonNegativeInteger"> + <xsd:minInclusive value="0" /> + <xsd:maxInclusive value="99" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="EmptyElementParsePolicyEnum"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="treatAsEmpty" /> + <xsd:enumeration value="treatAsAbsent" /> + </xsd:restriction> + </xsd:simpleType> + + <!-- ============================================================= --> + <!-- Simple types with DFDL Expression --> + <!-- ============================================================= --> + + <xsd:simpleType name="ByteOrderEnum_Or_DFDLExpression"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLExpression" /> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="dfdl:ByteOrderEnum" /> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:simpleType name="EncodingEnum_Or_DFDLExpression"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLExpression" /> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="dfdl:EncodingEnum" /> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:simpleType name="BinaryFloatRepEnum_Or_DFDLExpression"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLExpression" /> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="dfdl:BinaryFloatRepEnum" /> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:simpleType name="DFDLStringLiteral_Or_DFDLExpression"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLExpression" /> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLStringLiteral" /> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:simpleType name="ListOfDFDLStringLiteral_Or_DFDLExpression"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLExpression" /> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="dfdl:ListOfDFDLStringLiteral" /> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:simpleType name="DFDLNonNegativeInteger_Or_DFDLExpression"> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLExpression" /> + </xsd:simpleType> + <xsd:simpleType> + <xsd:restriction base="dfdl:DFDLNonNegativeInteger" /> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + +</xsd:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/DFDL_part2_attributes.xsd b/DFDL/attribution/org/apache/daffodil/xsd/DFDL_part2_attributes.xsd new file mode 100644 index 0000000000000000000000000000000000000000..644b54a25f8d6ce3ebd719baae6cac3cb0a6e2dd --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/DFDL_part2_attributes.xsd @@ -0,0 +1,1047 @@ +<?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://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" + attributeFormDefault="unqualified" elementFormDefault="qualified"> + + <xsd:include schemaLocation="DFDL_part1_simpletypes.xsd" /> + + <!-- Add schemaLocation="dafext.xsd" to allow NetBeans XML validation to work --> + <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" schemaLocation="dafext.xsd"/> + <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions"/> + + <!-- ==================================================================== --> + <!-- Basic Attributes and Attribute Groups representing DFDL properties --> + <!-- ==================================================================== --> + + <xsd:attribute name="ref" type="xsd:QName" /> + + <!-- + This attribute group is a way to allow any attribute that is NOT in the + dfdl namespace to be used in elements. This anyAttribute matches non-dfdl + namespace attributes because the targetNamespace in this file is the dfdl + namespace, and the "namespace" attribute is "##other". The + processContexts="lax" says that these non-dfdl namespace attributes will be + validated if a schema for them can be found, but otherwise validation for + them will be skipped. This can be used to allow for DFDL schema authors to + use custom namespace attributes/annotations in their DFDL schemas without + us needing to know about them. + + This means that by default, dfdl namespace attributes will not be allowed + at all. However, if we add dfdl namespace definitions alongside this + attribute group, those dfdl namespace attributes WILL be allowed and + strictly validated using standard XML schema validation rules. This has the + effect of strictly validating dfdl namespace attributes, but being lax + about all other attributes. + --> + <xsd:attributeGroup name="anyOther"> + <xsd:anyAttribute namespace="##other" processContents="lax" /> + </xsd:attributeGroup> + + <!-- + This works the same way as the anyOther attributeGroup defined above, + except it applies to elements instead of attributes (xs:any vs + xs:anyAttribute). See the description above for how this group works to + enable strict validation of dfdl namespace elements and lax validation of + other elements. Note that in addition to specifying ##other (i.e. non-DFDL + namespace) as lax, we must also specify ##local (i.e. no-namespace) as lax. + Only specifying ##other does not match no-namespace elements. + --> + <xsd:group name="anyOther"> + <xsd:choice> + <xsd:any namespace="##other" processContents="lax" /> + <xsd:any namespace="##local" processContents="lax" /> + </xsd:choice> + </xsd:group> + + <xsd:attributeGroup name="BaseAG"> + <xsd:attribute name="ref" type="xsd:QName" /> + <xsd:anyAttribute namespace="http://www.ibm.com/xmlns/dfdl/testData" processContents="lax"/> + </xsd:attributeGroup> + + <!-- 11 Properties Common to Both Content and Framing --> + <xsd:attribute name="byteOrder" + type="dfdl:ByteOrderEnum_Or_DFDLExpression" /> + + <!-- ADDED PER PUBLIC COMMENT ON Sept 2013 DRAFT --> + <xsd:attribute name="bitOrder" type="dfdl:BitOrderEnum"/> + + <xsd:attribute name="encoding" + type="dfdl:EncodingEnum_Or_DFDLExpression" /> + <xsd:attribute name="utf16Width" type="dfdl:UTF16WidthEnum" /> + <xsd:attribute name="ignoreCase" type="dfdl:YesNoEnum" /> + <xsd:attribute name="choiceBranchKey" type="dfdl:ListOfDFDLStringLiteral" /> + <xsd:attribute name="textBidi" type="dfdl:YesNoEnum"/> + + <!-- Added to DFDL --> + <xsd:attribute name="encodingErrorPolicy" type="dfdl:EncodingErrorPolicyEnum"/> + + <xsd:attributeGroup name="CommonAG"> + <xsd:attribute name="byteOrder" + type="dfdl:ByteOrderEnum_Or_DFDLExpression" /> + + <xsd:attribute name="bitOrder" type="dfdl:BitOrderEnum"/> + <xsd:attribute ref="daf:parseUnparsePolicy"/> <!-- backwards compatibility --> + <xsd:attribute ref="dfdlx:parseUnparsePolicy"/> + <xsd:attribute name="emptyElementParsePolicy" type="dfdl:EmptyElementParsePolicyEnum"/> + <xsd:attribute ref="dfdlx:emptyElementParsePolicy"/> <!-- deprecated --> + + <xsd:attribute name="encoding" + type="dfdl:EncodingEnum_Or_DFDLExpression" /> + <xsd:attribute name="utf16Width" type="dfdl:UTF16WidthEnum" /> + <xsd:attribute name="encodingErrorPolicy" type="dfdl:EncodingErrorPolicyEnum"/> + <xsd:attribute name="ignoreCase" type="dfdl:YesNoEnum" /> + <xsd:attribute name="choiceBranchKey" type="dfdl:ListOfDFDLStringLiteral" /> + <xsd:attribute ref="dfdlx:choiceBranchKeyRanges" /> + <xsd:attribute name="textBidi" type="dfdl:YesNoEnum"/> + </xsd:attributeGroup> + + <!-- 12.1 Aligned Data --> + <xsd:attribute name="alignment" type="dfdl:AlignmentType" /> + <xsd:attribute name="alignmentUnits" type="dfdl:AlignmentUnitsEnum" /> + <xsd:attribute name="fillByte" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="leadingSkip" type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute name="trailingSkip" type="dfdl:DFDLNonNegativeInteger" /> + + <xsd:attributeGroup name="AlignmentAG"> + <xsd:attribute name="alignment" type="dfdl:AlignmentType" /> + <xsd:attribute name="alignmentUnits" type="dfdl:AlignmentUnitsEnum" /> + <xsd:attribute name="fillByte" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="leadingSkip" type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute name="trailingSkip" type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute ref="dfdlx:alignmentKind" /> + </xsd:attributeGroup> + + <!-- 12.2 Delimiters and Text Mark up --> + <xsd:attribute name="initiator" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="terminator" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="outputNewLine" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="emptyValueDelimiterPolicy" type="dfdl:EmptyValueDelimiterPolicyEnum" /> + + <xsd:attributeGroup name="MarkupAG"> + <xsd:attribute name="initiator" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="terminator" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="outputNewLine" type="dfdl:DFDLStringLiteral" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="NonGroupMarkupAG"> + <xsd:attribute name="emptyValueDelimiterPolicy" + type="dfdl:EmptyValueDelimiterPolicyEnum" /> + </xsd:attributeGroup> + + <!-- 12.3 Length Properties --> + <xsd:attribute name="lengthKind" type="dfdl:LengthKindEnum" /> + <xsd:attribute name="length" + type="dfdl:DFDLNonNegativeInteger_Or_DFDLExpression" /> + <xsd:attribute name="lengthPattern" type="dfdl:DFDLRegularExpression" /> + <xsd:attribute name="lengthUnits" type="dfdl:LengthUnitsEnum" /> + <xsd:attribute name="prefixIncludesPrefixLength" type="dfdl:YesNoEnum" /> + <xsd:attribute name="prefixLengthType" type="xsd:QName" /> + + <xsd:attributeGroup name="LengthAG"> + <xsd:attribute name="lengthKind" type="dfdl:LengthKindEnum" /> + <xsd:attribute name="length" + type="dfdl:DFDLNonNegativeInteger_Or_DFDLExpression" /> + <xsd:attribute name="lengthPattern" type="dfdl:DFDLRegularExpression" /> + <xsd:attribute name="lengthUnits" type="dfdl:LengthUnitsEnum" /> + <xsd:attribute name="prefixIncludesPrefixLength" type="dfdl:YesNoEnum" /> + <xsd:attribute name="prefixLengthType" type="xsd:QName" /> + </xsd:attributeGroup> + + <!-- 13 Simple Types --> + <xsd:attribute name="representation" type="dfdl:RepresentationEnum" /> + + <xsd:attributeGroup name="RepresentationAG"> + <xsd:attribute name="representation" type="dfdl:RepresentationEnum" /> + </xsd:attributeGroup> + + <!-- 14.4 Simple or complex local element or element reference --> + <xsd:attribute name="floating" type="dfdl:YesNoEnum" /> + + <xsd:attributeGroup name="FloatingAG"> + <xsd:attribute name="floating" type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!--13.2 Properties Common to All Simple Types with Text representation --> + <xsd:attribute name="textPadKind" type="dfdl:TextPadKindEnum" /> + <xsd:attribute name="textTrimKind" type="dfdl:TextTrimKindEnum" /> + <xsd:attribute name="textOutputMinLength" type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute name="escapeSchemeRef" type="xsd:QName" /> + + <xsd:attributeGroup name="SimpleTypesTextAG"> + <xsd:attribute name="textPadKind" type="dfdl:TextPadKindEnum" /> + <xsd:attribute name="textTrimKind" type="dfdl:TextTrimKindEnum" /> + <xsd:attribute name="textOutputMinLength" type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute name="escapeSchemeRef" type="dfdl:DFDLQName" /> + </xsd:attributeGroup> + + <!-- 13.2.1 Escape Scheme --> + <!-- Note that these can never appear in short form --> + <xsd:attributeGroup name="EscapeSchemeAG"> + <xsd:attribute name="escapeKind" type="dfdl:EscapeKindEnum" /> + <xsd:attribute name="escapeCharacter" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="escapeBlockStart" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="escapeBlockEnd" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="escapeEscapeCharacter" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="extraEscapedCharacters" type="dfdl:ListOfDFDLStringLiteral" /> + <xsd:attribute name="generateEscapeBlock" type="dfdl:GenerateEscapeEnum" /> + </xsd:attributeGroup> + + <!-- 13.3 Properties for Bidirectional support for all Simple Types with + Text representation --> + <xsd:attribute name="textBidiTextOrdering" type="dfdl:TextBidiTextOrderingEnum" /> + <xsd:attribute name="textBidiOrientation" type="dfdl:TextBidiOrientationEnum" /> + <xsd:attribute name="textBidiSymmetric" type="dfdl:YesNoEnum" /> + <xsd:attribute name="textBidiTextShaped" type="dfdl:YesNoEnum" /> + <xsd:attribute name="textBidiNumeralShapes" type="dfdl:TextBidiNumeralShapesEnum" /> + + <xsd:attributeGroup name="TextBidiSchemeAG"> + <xsd:attribute name="textBidiTextOrdering" type="dfdl:TextBidiTextOrderingEnum" /> + <xsd:attribute name="textBidiOrientation" type="dfdl:TextBidiOrientationEnum" /> + <xsd:attribute name="textBidiSymmetric" type="dfdl:YesNoEnum" /> + <xsd:attribute name="textBidiTextShaped" type="dfdl:YesNoEnum" /> + <xsd:attribute name="textBidiNumeralShapes" type="dfdl:TextBidiNumeralShapesEnum" /> + </xsd:attributeGroup> + + <!-- 13.4 Properties Specific to Strings with Text representation --> + <xsd:attribute name="textStringJustification" type="dfdl:TextStringJustificationEnum" /> + <xsd:attribute name="textStringPadCharacter" type="dfdl:NonEmptyStringLiteral" /> + <xsd:attribute name="truncateSpecifiedLengthString" + type="dfdl:YesNoEnum" /> + + <xsd:attributeGroup name="StringTextAG"> + <xsd:attribute name="textStringJustification" type="dfdl:TextStringJustificationEnum" /> + <xsd:attribute name="textStringPadCharacter" type="dfdl:NonEmptyStringLiteral" /> + <xsd:attribute name="truncateSpecifiedLengthString" + type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!-- Properties Specific to Number with Text or Binary representation --> + <xsd:attribute name="decimalSigned" type="dfdl:YesNoEnum" /> + + <xsd:attributeGroup name="NumberAG"> + <xsd:attribute name="decimalSigned" type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!-- Properties Specific to Number with Text representation --> + <xsd:attribute name="textNumberRep" type="dfdl:TextNumberRepEnum" /> + <xsd:attribute name="textNumberJustification" type="dfdl:TextNumberJustificationEnum" /> + <xsd:attribute name="textNumberPadCharacter" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="textStandardBase" type="dfdl:TextNumberBaseEnum" /> + + <xsd:attributeGroup name="NumberTextAG"> + <xsd:attribute name="textNumberRep" type="dfdl:TextNumberRepEnum" /> + <xsd:attribute name="textNumberJustification" type="dfdl:TextNumberJustificationEnum" /> + <xsd:attribute name="textNumberPadCharacter" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="textStandardBase" type="dfdl:TextNumberBaseEnum" /> + </xsd:attributeGroup> + + <!-- Text number format attributes --> + <xsd:attribute name="textNumberPattern" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="textStandardGroupingSeparator" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textStandardDecimalSeparator" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textStandardExponentRep" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <!-- deprecated form accepted by IBM DFDL as of 2018-10-30 --> + <xsd:attribute name="textStandardExponentCharacter" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textNumberCheckPolicy" type="dfdl:TextNumberCheckPolicyEnum" /> + <xsd:attribute name="textStandardInfinityRep" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="textStandardNaNRep" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="textNumberRoundingMode" type="dfdl:TextNumberRoundingModeEnum" /> + <xsd:attribute name="textNumberRounding" type="dfdl:TextNumberRoundingEnum" /> + <xsd:attribute name="textNumberRoundingIncrement" type="xsd:double" /> + <xsd:attribute name="textZonedSignStyle" type="dfdl:TextZonedSignStyleEnum" /> + <xsd:attribute name="textStandardZeroRep" type="dfdl:ListOfDFDLStringLiteral" /> + + <xsd:attributeGroup name="TextNumberFormatAG"> + <xsd:attribute name="textNumberPattern" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="textStandardGroupingSeparator" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textStandardDecimalSeparator" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textStandardExponentRep" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <!-- deprecated form accepted by IBM DFDL as of 2018-10-30 --> + <xsd:attribute name="textStandardExponentCharacter" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textNumberCheckPolicy" type="dfdl:TextNumberCheckPolicyEnum" /> + <xsd:attribute name="textStandardInfinityRep" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="textStandardNaNRep" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="textNumberRoundingMode" type="dfdl:TextNumberRoundingModeEnum" /> + <xsd:attribute name="textNumberRounding" type="dfdl:TextNumberRoundingEnum" /> + <xsd:attribute name="textNumberRoundingIncrement" + type="xsd:double" /> + <xsd:attribute name="textZonedSignStyle" type="dfdl:TextZonedSignStyleEnum" /> + <xsd:attribute name="textStandardZeroRep" type="dfdl:ListOfDFDLStringLiteral" /> + </xsd:attributeGroup> + + <!-- 13.6 Properties Specific to Number with Binary representation --> + <xsd:attribute name="binaryNumberRep" type="dfdl:BinaryNumberRepEnum" /> + <xsd:attribute name="binaryDecimalVirtualPoint" type="xsd:int" /> + <xsd:attribute name="binaryPackedSignCodes" type="dfdl:BinaryPackedSignCodes" /> + <xsd:attribute name="binaryNumberCheckPolicy" type="dfdl:BinaryNumberCheckPolicyEnum" /> + + <xsd:attributeGroup name="NumberBinaryAG"> + <xsd:attribute name="binaryNumberRep" type="dfdl:BinaryNumberRepEnum" /> + <xsd:attribute name="binaryDecimalVirtualPoint" type="xsd:int" /> + <xsd:attribute name="binaryPackedSignCodes" type="dfdl:BinaryPackedSignCodes" /> + <xsd:attribute name="binaryNumberCheckPolicy" type="dfdl:BinaryNumberCheckPolicyEnum" /> + </xsd:attributeGroup> + + <!-- 13.7 Float/Double with Binary representation --> + <xsd:attribute name="binaryFloatRep" + type="dfdl:BinaryFloatRepEnum_Or_DFDLExpression" /> + + <xsd:attributeGroup name="FloatBinaryAG"> + <xsd:attribute name="binaryFloatRep" + type="dfdl:BinaryFloatRepEnum_Or_DFDLExpression" /> + </xsd:attributeGroup> + + <!-- 13.8 Properties Specific to Boolean with Text representation --> + <xsd:attribute name="textBooleanTrueRep" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textBooleanFalseRep" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textBooleanJustification" type="dfdl:TextBooleanJustificationEnum" /> + <xsd:attribute name="textBooleanPadCharacter" type="dfdl:DFDLStringLiteral" /> + + <xsd:attributeGroup name="BooleanTextAG"> + <xsd:attribute name="textBooleanTrueRep" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textBooleanFalseRep" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="textBooleanJustification" + type="dfdl:TextBooleanJustificationEnum" /> + <xsd:attribute name="textBooleanPadCharacter" type="dfdl:DFDLStringLiteral" /> + </xsd:attributeGroup> + + <!-- 13.9 Properties Specific to Boolean with Binary representation --> + <xsd:attribute name="binaryBooleanTrueRep" type="dfdl:BinaryBooleanTrueRepType" /> + <xsd:attribute name="binaryBooleanFalseRep" type="dfdl:BinaryBooleanFalseRepType" /> + + <xsd:attributeGroup name="BooleanBinaryAG"> + <xsd:attribute name="binaryBooleanTrueRep" type="dfdl:BinaryBooleanTrueRepType" /> + <xsd:attribute name="binaryBooleanFalseRep" type="dfdl:BinaryBooleanFalseRepType" /> + </xsd:attributeGroup> + + <!-- 13.10 Properties Specific to Calendar Format --> + <xsd:attribute name="calendarPattern" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="calendarPatternKind" type="dfdl:CalendarPatternKindEnum" /> + <xsd:attribute name="calendarCheckPolicy" type="dfdl:CalendarCheckPolicyEnum" /> + <xsd:attribute name="calendarTimeZone" type="dfdl:CalendarTimeZoneType" /> + <xsd:attribute name="calendarObserveDST" type="dfdl:YesNoEnum" /> + <xsd:attribute name="calendarFirstDayOfWeek" type="dfdl:CalendarFirstDayOfWeekEnum" /> + <xsd:attribute name="calendarDaysInFirstWeek" type="dfdl:CalendarDaysInFirstWeek" /> + <xsd:attribute name="calendarCenturyStart" type="dfdl:CalendarCenturyStart" /> + <xsd:attribute name="calendarLanguage" type="dfdl:CalendarLanguageType" /> + + <xsd:attributeGroup name="CalendarFormatAG"> + <xsd:attribute name="calendarPattern" type="dfdl:DFDLStringLiteral" /> + <xsd:attribute name="calendarPatternKind" type="dfdl:CalendarPatternKindEnum" /> + <xsd:attribute name="calendarCheckPolicy" type="dfdl:CalendarCheckPolicyEnum" /> + <xsd:attribute name="calendarTimeZone" type="dfdl:CalendarTimeZoneType" /> + <xsd:attribute name="calendarObserveDST" type="dfdl:YesNoEnum" /> + <xsd:attribute name="calendarFirstDayOfWeek" type="dfdl:CalendarFirstDayOfWeekEnum" /> + <xsd:attribute name="calendarDaysInFirstWeek" type="dfdl:CalendarDaysInFirstWeek" /> + <xsd:attribute name="calendarCenturyStart" type="dfdl:CalendarCenturyStart" /> + <xsd:attribute name="calendarLanguage" type="dfdl:CalendarLanguageType" /> + </xsd:attributeGroup> + + <!-- 13.11 Properties Specific to Calendar with Text Representation --> + <xsd:attribute name="textCalendarJustification" type="dfdl:TextCalendarJustificationEnum" /> + <xsd:attribute name="textCalendarPadCharacter" type="dfdl:DFDLStringLiteral" /> + + <xsd:attributeGroup name="CalendarTextAG"> + <xsd:attribute name="textCalendarJustification" + type="dfdl:TextCalendarJustificationEnum" /> + <xsd:attribute name="textCalendarPadCharacter" type="dfdl:DFDLStringLiteral" /> + </xsd:attributeGroup> + + <!-- 13.12 Properties Specific to Calendar with Binary Representation --> + <xsd:attribute name="binaryCalendarRep" type="dfdl:BinaryCalendarRepEnum" /> + <xsd:attribute name="binaryCalendarEpoch" type="xsd:string" /> + + <xsd:attributeGroup name="CalendarBinaryAG"> + <xsd:attribute name="binaryCalendarRep" type="dfdl:BinaryCalendarRepEnum" /> + <xsd:attribute name="binaryCalendarEpoch" type="xsd:string" /> + </xsd:attributeGroup> + + <!-- 13.13 Properties Specific to Opaque Types (hexBinary) --> + <xsd:attributeGroup name="OpaqueAG"> + </xsd:attributeGroup> + + <!-- 13.14 Properties for Nillable Elements --> + <xsd:attribute name="nilKind" type="dfdl:NilKindEnum" /> + <xsd:attribute name="nilValue" type="dfdl:NonEmptyListOfDFDLStringLiteral_nilValue" /> + <xsd:attribute name="nilValueDelimiterPolicy" type="dfdl:NilValueDelimiterPolicyEnum" /> + + <xsd:attributeGroup name="NillableAG"> + <xsd:attribute name="nilKind" type="dfdl:NilKindEnum" /> + <xsd:attribute name="nilValue" type="dfdl:NonEmptyListOfDFDLStringLiteral_nilValue" /> + <xsd:attribute name="nilValueDelimiterPolicy" type="dfdl:NilValueDelimiterPolicyEnum" /> + </xsd:attributeGroup> + + <!-- 13.15 Properties for Default Value Control --> + <xsd:attribute name="useNilForDefault" type="dfdl:YesNoEnum" /> + + <xsd:attributeGroup name="DefaultValueControlAG"> + <xsd:attribute name="useNilForDefault" type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!-- 14 Sequence Groups --> + <xsd:attribute name="sequenceKind" type="dfdl:SequenceKindEnum" /> + <xsd:attribute name="hiddenGroupRef" type="xsd:QName" /> + + <xsd:attributeGroup name="SequenceAG"> + <xsd:attribute name="sequenceKind" type="dfdl:SequenceKindEnum" /> + <xsd:attribute name="hiddenGroupRef" type="xsd:QName" /> + </xsd:attributeGroup> + + <!-- 14.2 Sequence Groups with Delimiters --> + <xsd:attribute name="separator" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="separatorPosition" type="dfdl:SeparatorPositionEnum" /> + <xsd:attribute name="separatorPolicy" type="dfdl:SeparatorPolicyEnum" /> + <xsd:attribute name="separatorSuppressionPolicy" type="dfdl:SeparatorSuppressionPolicyEnum" /> + + <xsd:attributeGroup name="SeparatorAG"> + <xsd:attribute name="separator" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute name="separatorPosition" type="dfdl:SeparatorPositionEnum" /> + <xsd:attribute name="separatorPolicy" type="dfdl:SeparatorPolicyEnum" /> + <xsd:attribute name="separatorSuppressionPolicy" type="dfdl:SeparatorSuppressionPolicyEnum" /> + </xsd:attributeGroup> + + <xsd:attribute name="initiatedContent" type="dfdl:YesNoEnum" /> + <xsd:attributeGroup name="GroupCommonAG"> + <xsd:attribute name="initiatedContent" type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!-- 15 Choices --> + <xsd:attribute name="choiceLengthKind" type="dfdl:ChoiceLengthKindEnum" /> + <xsd:attribute name="choiceLength" type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute name="choiceDispatchKey" type="dfdl:DFDLExpression" /> + + <xsd:attributeGroup name="ChoiceAG"> + <xsd:attribute name="choiceLengthKind" type="dfdl:ChoiceLengthKindEnum" /> + <xsd:attribute name="choiceLength" type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute name="choiceDispatchKey" type="dfdl:DFDLExpression" /> + </xsd:attributeGroup> + + <!--16 Arrays and Optional Elements: Properties for Repeating and Variable-Occurrence + Data Items --> + <xsd:attribute name="occursCountKind" type="dfdl:OccursCountKindEnum" /> + <xsd:attribute name="occursCount" type="dfdl:DFDLExpression" /> + <xsd:attribute name="occursStopValue" type="dfdl:ListOfDFDLStringLiteral" /> + + <xsd:attributeGroup name="OccursAG"> + <xsd:attribute name="occursCountKind" type="dfdl:OccursCountKindEnum" /> + <xsd:attribute name="occursCount" type="dfdl:DFDLExpression" /> + <xsd:attribute name="occursStopValue" type="dfdl:ListOfDFDLStringLiteral" /> + </xsd:attributeGroup> + + <!-- 19 Calculated Value Properties. --> + <xsd:attribute name="inputValueCalc" type="dfdl:DFDLExpression" /> + <xsd:attribute name="outputValueCalc" type="dfdl:DFDLExpression" /> + + <xsd:attributeGroup name="CalculatedValueAG"> + <xsd:attribute name="inputValueCalc" type="dfdl:DFDLExpression" /> + <xsd:attribute name="outputValueCalc" type="dfdl:DFDLExpression" /> + </xsd:attributeGroup> + + <!-- document only markup properties --> + <xsd:attribute name="documentFinalTerminatorCanBeMissing" + type="dfdl:YesNoEnum" /> + + <xsd:attributeGroup name="DocumentPropertiesAG"> + <xsd:attribute name="documentFinalTerminatorCanBeMissing" + type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + + <!-- ========================================================== --> + <!-- Enumeration of simple name of all DFDL properties that can --> + <!-- appear in element form. --> + <!-- ========================================================== --> + + <xsd:simpleType name="PropertyNameType"> + <xsd:restriction base="xsd:string"> + + <!-- List of properties that are string types --> + <xsd:enumeration value="initiator" /> + <xsd:enumeration value="terminator" /> + <xsd:enumeration value="documentFinalTerminatorCanBeMissing" /> + <xsd:enumeration value="outputNewLine" /> + <xsd:enumeration value="length" /> + <xsd:enumeration value="lengthPattern" /> + <xsd:enumeration value="textStringPadCharacter" /> + <xsd:enumeration value="textNumberPadCharacter" /> + <xsd:enumeration value="textCalendarPadCharacter" /> + <xsd:enumeration value="textBooleanPadCharacter" /> + <xsd:enumeration value="escapeCharacter" /> + <xsd:enumeration value="escapeBlockStart" /> + <xsd:enumeration value="escapeBlockEnd" /> + <xsd:enumeration value="escapeEscapeCharacter" /> + <xsd:enumeration value="extraEscapedCharacters" /> + <xsd:enumeration value="textNumberPattern" /> + <xsd:enumeration value="textStandardGroupingSeparator" /> + <xsd:enumeration value="textStandardDecimalSeparator" /> + <xsd:enumeration value="textStandardExponentRep" /> + <!-- deprecated form accepted by IBM DFDL as of 2018-10-30 --> + <xsd:enumeration value="textStandardExponentCharacter" /> + <xsd:enumeration value="textStandardInfinityRep" /> + <xsd:enumeration value="textStandardNaNRep" /> + <xsd:enumeration value="textStandardZeroRep" /> + <xsd:enumeration value="textBooleanTrueRep" /> + <xsd:enumeration value="textBooleanFalseRep" /> + <xsd:enumeration value="calendarPattern" /> + <xsd:enumeration value="calendarLanguage" /> + <xsd:enumeration value="binaryCalendarEpoch" /> + <xsd:enumeration value="nilValue" /> + <xsd:enumeration value="separator" /> + <xsd:enumeration value="occursStopValue" /> + <xsd:enumeration value="inputValueCalc" /> + <xsd:enumeration value="outputValueCalc" /> + + <!-- Bidirectional Properties for all Simple Types with Text representation --> + <xsd:enumeration value="textBidi" /> + <xsd:enumeration value="textBidiTextOrdering" /> + <xsd:enumeration value="textBidiOrientation" /> + <xsd:enumeration value="textBidiSymmetric" /> + <xsd:enumeration value="textBidiTextShaped" /> + <xsd:enumeration value="textBidiNumeralShapes" /> + + <!-- List of properties with non-string types --> + <xsd:enumeration value="byteOrder" /> + <xsd:enumeration value="bitOrder"/> + <xsd:enumeration value="encoding" /> + <xsd:enumeration value="encodingErrorPolicy"/> + <xsd:enumeration value="emptyElementParsePolicy"/> + <xsd:enumeration value="utf16Width" /> + <xsd:enumeration value="ignoreCase" /> + + <xsd:enumeration value="alignment" /> + <xsd:enumeration value="alignmentUnits" /> + <xsd:enumeration value="fillByte" /> + <xsd:enumeration value="leadingSkip" /> + <xsd:enumeration value="trailingSkip" /> + + <xsd:enumeration value="lengthKind" /> + <xsd:enumeration value="lengthUnits" /> + + <xsd:enumeration value="prefixIncludesPrefixLength" /> + <xsd:enumeration value="prefixLengthType" /> + + <xsd:enumeration value="representation" /> + + <xsd:enumeration value="textPadKind" /> + <xsd:enumeration value="textTrimKind" /> + <xsd:enumeration value="textOutputMinLength" /> + + <xsd:enumeration value="escapeKind" /> + <xsd:enumeration value="generateEscapeBlock" /> + + <xsd:enumeration value="textStringJustification" /> + <xsd:enumeration value="textNumberRep" /> + <xsd:enumeration value="textNumberJustification" /> + + <xsd:enumeration value="textNumberCheckPolicy" /> + <xsd:enumeration value="textStandardBase" /> + <xsd:enumeration value="textNumberRoundingMode" /> + <xsd:enumeration value="textNumberRounding" /> + <xsd:enumeration value="textNumberRoundingIncrement" /> + <xsd:enumeration value="textZonedSignStyle" /> + + <xsd:enumeration value="binaryNumberRep" /> + <xsd:enumeration value="binaryDecimalVirtualPoint" /> + <xsd:enumeration value="binaryNumberCheckPolicy" /> + <xsd:enumeration value="binaryPackedSignCodes" /> + <xsd:enumeration value="binaryFloatRep" /> + + <xsd:enumeration value="textBooleanJustification" /> + + <xsd:enumeration value="binaryBooleanTrueRep" /> + <xsd:enumeration value="binaryBooleanFalseRep" /> + + <xsd:enumeration value="textCalendarJustification" /> + + <xsd:enumeration value="calendarPatternKind" /> + <xsd:enumeration value="calendarCheckPolicy" /> + <xsd:enumeration value="calendarTimeZone" /> + <xsd:enumeration value="calendarObserveDST" /> + <xsd:enumeration value="calendarFirstDayOfWeek" /> + <xsd:enumeration value="calendarDaysInFirstWeek" /> + <xsd:enumeration value="calendarCenturyStart" /> + <xsd:enumeration value="binaryCalendarRep" /> + + <xsd:enumeration value="nilKind" /> + <xsd:enumeration value="nilValueDelimiterPolicy" /> + + <xsd:enumeration value="useNilForDefault" /> + <xsd:enumeration value="emptyValueDelimiterPolicy" /> + + <xsd:enumeration value="sequenceKind" /> + <xsd:enumeration value="hiddenGroupRef" /> + + <xsd:enumeration value="initiatedContent" /> + + <xsd:enumeration value="separatorPosition" /> + <xsd:enumeration value="separatorPolicy" /> + <xsd:enumeration value="separatorSuppressionPolicy" /> + + <xsd:enumeration value="choiceLengthKind" /> + <xsd:enumeration value="choiceLength" /> + <xsd:enumeration value="choiceDispatchKey" /> + <xsd:enumeration value="choiceBranchKey" /> + + <xsd:enumeration value="occursCountKind" /> + <xsd:enumeration value="occursCount" /> + + <xsd:enumeration value="floating" /> + <xsd:enumeration value="truncateSpecifiedLengthString" /> + + <xsd:enumeration value="decimalSigned" /> + </xsd:restriction> + </xsd:simpleType> + + <!-- Qualified Form Attributes (for validating Short-form annotations) --> + + <xsd:attributeGroup name="BaseAGQualified"> + <xsd:attribute form="qualified" name="ref" type="xsd:QName" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="CommonAGQualified"> + <xsd:attribute form="qualified" name="bitOrder" + type="dfdl:BitOrderEnum"/> + <xsd:attribute form="qualified" name="byteOrder" + type="dfdl:ByteOrderEnum_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="encoding" + type="dfdl:EncodingEnum_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="encodingErrorPolicy" + type="dfdl:EncodingErrorPolicyEnum" /> + <xsd:attribute form="qualified" name="emptyElementParsePolicy" + type="dfdl:EmptyElementParsePolicyEnum" /> + <xsd:attribute form="qualified" name="utf16Width" + type="dfdl:UTF16WidthEnum" /> + <xsd:attribute form="qualified" name="ignoreCase" + type="dfdl:YesNoEnum" /> + <xsd:attribute form="qualified" name="choiceBranchKey" + type="dfdl:ListOfDFDLStringLiteral" /> + <xsd:attribute ref="dfdlx:choiceBranchKeyRanges" /> + </xsd:attributeGroup> + + <!-- 12.1 Aligned Data --> + + <xsd:attributeGroup name="AlignmentAGQualified"> + <xsd:attribute form="qualified" name="alignment" + type="dfdl:AlignmentType" /> + <xsd:attribute form="qualified" name="alignmentUnits" + type="dfdl:AlignmentUnitsEnum" /> + <xsd:attribute form="qualified" name="fillByte" + type="dfdl:DFDLStringLiteral" /> + <xsd:attribute form="qualified" name="leadingSkip" + type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute form="qualified" name="trailingSkip" + type="dfdl:DFDLNonNegativeInteger" /> + </xsd:attributeGroup> + + <!-- 12.2 Delimiters and Text Mark up --> + + <xsd:attributeGroup name="MarkupAGQualified"> + <xsd:attribute form="qualified" name="initiator" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="terminator" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="outputNewLine" + type="dfdl:DFDLStringLiteral" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="NonGroupMarkupAGQualified"> + <xsd:attribute form="qualified" name="emptyValueDelimiterPolicy" + type="dfdl:EmptyValueDelimiterPolicyEnum" /> + </xsd:attributeGroup> + + <!-- 12.3 Length Properties --> + + <xsd:attributeGroup name="LengthAGQualified"> + <xsd:attribute form="qualified" name="lengthKind" + type="dfdl:LengthKindEnum" /> + <xsd:attribute form="qualified" name="length" + type="dfdl:DFDLNonNegativeInteger_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="lengthPattern" + type="dfdl:DFDLRegularExpression" /> + <xsd:attribute form="qualified" name="lengthUnits" + type="dfdl:LengthUnitsEnum" /> + <xsd:attribute form="qualified" name="prefixIncludesPrefixLength" + type="dfdl:YesNoEnum" /> + <xsd:attribute form="qualified" name="prefixLengthType" + type="xsd:QName" /> + </xsd:attributeGroup> + + <!-- 13 Simple Types --> + + <xsd:attributeGroup name="RepresentationAGQualified"> + <xsd:attribute form="qualified" name="representation" + type="dfdl:RepresentationEnum" /> + </xsd:attributeGroup> + + <!-- 14.4 Simple or complex local element or element reference --> + + <xsd:attributeGroup name="FloatingAGQualified"> + <xsd:attribute form="qualified" name="floating" type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!--13.2 Properties Common to All Simple Types with Text representation --> + + <xsd:attributeGroup name="SimpleTypesTextAGQualified"> + <xsd:attribute form="qualified" name="textPadKind" + type="dfdl:TextPadKindEnum" /> + <xsd:attribute form="qualified" name="textTrimKind" + type="dfdl:TextTrimKindEnum" /> + <xsd:attribute form="qualified" name="textOutputMinLength" + type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute form="qualified" name="escapeSchemeRef" + type="dfdl:DFDLQName" /> + </xsd:attributeGroup> + + <!-- 13.2.1 Escape Scheme --> + <!-- Note that these can never appear in short form --> + <xsd:attributeGroup name="EscapeSchemeAGQualified"> + <xsd:attribute form="qualified" name="escapeKind" + type="dfdl:EscapeKindEnum" /> + <xsd:attribute form="qualified" name="escapeCharacter" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="escapeBlockStart" + type="dfdl:DFDLStringLiteral" /> + <xsd:attribute form="qualified" name="escapeBlockEnd" + type="dfdl:DFDLStringLiteral" /> + <xsd:attribute form="qualified" name="escapeEscapeCharacter" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="extraEscapedCharacters" + type="dfdl:ListOfDFDLStringLiteral" /> + <xsd:attribute form="qualified" name="generateEscapeBlock" + type="dfdl:GenerateEscapeEnum" /> + </xsd:attributeGroup> + + <!-- 13.3 Properties for Bidirectional support for all Simple Types with + Text representation --> + + <xsd:attributeGroup name="TextBidiSchemeAGQualified"> + <xsd:attribute form="qualified" name="textBidiTextOrdering" + type="dfdl:TextBidiTextOrderingEnum" /> + <xsd:attribute form="qualified" name="textBidiOrientation" + type="dfdl:TextBidiOrientationEnum" /> + <xsd:attribute form="qualified" name="textBidiSymmetric" + type="dfdl:YesNoEnum" /> + <xsd:attribute form="qualified" name="textBidiTextShaped" + type="dfdl:YesNoEnum" /> + <xsd:attribute form="qualified" name="textBidiNumeralShapes" + type="dfdl:TextBidiNumeralShapesEnum" /> + <xsd:attribute form="qualified" name="textBidi" + type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!-- 13.4 Properties Specific to Strings with Text representation --> + + <xsd:attributeGroup name="StringTextAGQualified"> + <xsd:attribute form="qualified" name="textStringJustification" + type="dfdl:TextStringJustificationEnum" /> + <xsd:attribute form="qualified" name="textStringPadCharacter" + type="dfdl:NonEmptyStringLiteral" /> + <xsd:attribute form="qualified" name="truncateSpecifiedLengthString" + type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!-- Properties Specific to Number with Text or Binary representation --> + + <xsd:attributeGroup name="NumberAGQualified"> + <xsd:attribute form="qualified" name="decimalSigned" + type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!-- Properties Specific to Number with Text representation --> + + <xsd:attributeGroup name="NumberTextAGQualified"> + <xsd:attribute form="qualified" name="textNumberRep" + type="dfdl:TextNumberRepEnum" /> + <xsd:attribute form="qualified" name="textNumberJustification" + type="dfdl:TextNumberJustificationEnum" /> + <xsd:attribute form="qualified" name="textNumberPadCharacter" + type="dfdl:DFDLStringLiteral" /> + <xsd:attribute form="qualified" name="textStandardBase" + type="dfdl:TextNumberBaseEnum" /> + </xsd:attributeGroup> + + <!-- Text number format attributes --> + + <xsd:attributeGroup name="TextNumberFormatAGQualified"> + <xsd:attribute form="qualified" name="textNumberPattern" + type="dfdl:DFDLStringLiteral" /> + <xsd:attribute form="qualified" name="textStandardGroupingSeparator" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="textStandardDecimalSeparator" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="textStandardExponentRep" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <!-- deprecated form still accepted by IBM DFDL as of 2018-10-30 --> + <xsd:attribute form="qualified" name="textStandardExponentCharacter" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="textNumberCheckPolicy" + type="dfdl:TextNumberCheckPolicyEnum" /> + <xsd:attribute form="qualified" name="textStandardInfinityRep" + type="dfdl:DFDLStringLiteral" /> + <xsd:attribute form="qualified" name="textStandardNaNRep" + type="dfdl:DFDLStringLiteral" /> + <xsd:attribute form="qualified" name="textNumberRoundingMode" + type="dfdl:TextNumberRoundingModeEnum" /> + <xsd:attribute form="qualified" name="textNumberRounding" + type="dfdl:TextNumberRoundingEnum" /> + <xsd:attribute form="qualified" name="textNumberRoundingIncrement" + type="xsd:double" /> + <xsd:attribute form="qualified" name="textZonedSignStyle" + type="dfdl:TextZonedSignStyleEnum" /> + <xsd:attribute form="qualified" name="textStandardZeroRep" + type="dfdl:ListOfDFDLStringLiteral" /> + </xsd:attributeGroup> + + <!-- 13.6 Properties Specific to Number with Binary representation --> + + <xsd:attributeGroup name="NumberBinaryAGQualified"> + <xsd:attribute form="qualified" name="binaryNumberRep" + type="dfdl:BinaryNumberRepEnum" /> + <xsd:attribute form="qualified" name="binaryDecimalVirtualPoint" + type="xsd:int" /> + <xsd:attribute form="qualified" name="binaryPackedSignCodes" + type="dfdl:BinaryPackedSignCodes" /> + <xsd:attribute form="qualified" name="binaryNumberCheckPolicy" + type="dfdl:BinaryNumberCheckPolicyEnum" /> + </xsd:attributeGroup> + + <!-- 13.7 Float/Double with Binary representation --> + + <xsd:attributeGroup name="FloatBinaryAGQualified"> + <xsd:attribute form="qualified" name="binaryFloatRep" + type="dfdl:BinaryFloatRepEnum_Or_DFDLExpression" /> + </xsd:attributeGroup> + + <!-- 13.8 Properties Specific to Boolean with Text representation --> + + <xsd:attributeGroup name="BooleanTextAGQualified"> + <xsd:attribute form="qualified" name="textBooleanTrueRep" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="textBooleanFalseRep" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="textBooleanJustification" + type="dfdl:TextBooleanJustificationEnum" /> + <xsd:attribute form="qualified" name="textBooleanPadCharacter" + type="dfdl:DFDLStringLiteral" /> + </xsd:attributeGroup> + + <!-- 13.9 Properties Specific to Boolean with Binary representation --> + + <xsd:attributeGroup name="BooleanBinaryAGQualified"> + <xsd:attribute form="qualified" name="binaryBooleanTrueRep" + type="dfdl:BinaryBooleanTrueRepType" /> + <xsd:attribute form="qualified" name="binaryBooleanFalseRep" + type="dfdl:BinaryBooleanFalseRepType" /> + </xsd:attributeGroup> + + <!-- 13.10 Properties Specific to Calendar Format --> + + <xsd:attributeGroup name="CalendarFormatAGQualified"> + <xsd:attribute form="qualified" name="calendarPattern" + type="dfdl:DFDLStringLiteral" /> + <xsd:attribute form="qualified" name="calendarPatternKind" + type="dfdl:CalendarPatternKindEnum" /> + <xsd:attribute form="qualified" name="calendarCheckPolicy" + type="dfdl:CalendarCheckPolicyEnum" /> + <xsd:attribute form="qualified" name="calendarTimeZone" + type="dfdl:CalendarTimeZoneType" /> + <xsd:attribute form="qualified" name="calendarObserveDST" + type="dfdl:YesNoEnum" /> + <xsd:attribute form="qualified" name="calendarFirstDayOfWeek" + type="dfdl:CalendarFirstDayOfWeekEnum" /> + <xsd:attribute form="qualified" name="calendarDaysInFirstWeek" + type="dfdl:CalendarDaysInFirstWeek" /> + <xsd:attribute form="qualified" name="calendarCenturyStart" + type="dfdl:CalendarCenturyStart" /> + <xsd:attribute form="qualified" name="calendarLanguage" + type="dfdl:CalendarLanguageType" /> + </xsd:attributeGroup> + + <!-- 13.11 Properties Specific to Calendar with Text Representation --> + + <xsd:attributeGroup name="CalendarTextAGQualified"> + <xsd:attribute form="qualified" name="textCalendarJustification" + type="dfdl:TextCalendarJustificationEnum" /> + <xsd:attribute form="qualified" name="textCalendarPadCharacter" + type="dfdl:DFDLStringLiteral" /> + </xsd:attributeGroup> + + <!-- 13.12 Properties Specific to Calendar with Binary Representation --> + + <xsd:attributeGroup name="CalendarBinaryAGQualified"> + <xsd:attribute form="qualified" name="binaryCalendarRep" + type="dfdl:BinaryCalendarRepEnum" /> + <xsd:attribute form="qualified" name="binaryCalendarEpoch" + type="xsd:string" /> + </xsd:attributeGroup> + + <!-- 13.13 Properties Specific to Opaque Types (hexBinary) --> + <xsd:attributeGroup name="OpaqueAGQualified"> + </xsd:attributeGroup> + + <!-- 13.14 Properties for Nillable Elements --> + + <xsd:attributeGroup name="NillableAGQualified"> + <xsd:attribute form="qualified" name="nilKind" + type="dfdl:NilKindEnum" /> + <xsd:attribute form="qualified" name="nilValue" + type="dfdl:NonEmptyListOfDFDLStringLiteral_nilValue" /> + <xsd:attribute form="qualified" name="nilValueDelimiterPolicy" + type="dfdl:NilValueDelimiterPolicyEnum" /> + </xsd:attributeGroup> + + <!-- 13.15 Properties for Default Value Control --> + + <xsd:attributeGroup name="DefaultValueControlAGQualified"> + <xsd:attribute form="qualified" name="useNilForDefault" + type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!-- 14 Sequence Groups --> + + <xsd:attributeGroup name="SequenceAGQualified"> + <xsd:attribute form="qualified" name="sequenceKind" + type="dfdl:SequenceKindEnum" /> + <xsd:attribute form="qualified" name="hiddenGroupRef" + type="xsd:QName" /> + </xsd:attributeGroup> + + <!-- 14.2 Sequence Groups with Delimiters --> + + <xsd:attributeGroup name="SeparatorAGQualified"> + <xsd:attribute form="qualified" name="separator" + type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute form="qualified" name="separatorPosition" + type="dfdl:SeparatorPositionEnum" /> + <xsd:attribute form="qualified" name="separatorPolicy" + type="dfdl:SeparatorPolicyEnum" /> + <xsd:attribute form="qualified" name="separatorSuppressionPolicy" + type="dfdl:SeparatorSuppressionPolicyEnum" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="GroupCommonAGQualified"> + <xsd:attribute form="qualified" name="initiatedContent" + type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <!-- 15 Choices --> + + <xsd:attributeGroup name="ChoiceAGQualified"> + <xsd:attribute form="qualified" name="choiceLengthKind" + type="dfdl:ChoiceLengthKindEnum" /> + <xsd:attribute form="qualified" name="choiceLength" + type="dfdl:DFDLNonNegativeInteger" /> + <xsd:attribute form="qualified" name="choiceDispatchKey" + type="dfdl:DFDLExpression" /> + </xsd:attributeGroup> + + <!--16 Arrays and Optional Elements: Properties for Repeating and Variable-Occurrence + Data Items --> + + <xsd:attributeGroup name="OccursAGQualified"> + <xsd:attribute form="qualified" name="occursCountKind" + type="dfdl:OccursCountKindEnum" /> + <xsd:attribute form="qualified" name="occursCount" + type="dfdl:DFDLExpression" /> + <xsd:attribute form="qualified" name="occursStopValue" + type="dfdl:ListOfDFDLStringLiteral" /> + </xsd:attributeGroup> + + <!-- 19 Calculated Value Properties. --> + + <xsd:attributeGroup name="CalculatedValueAGQualified"> + <xsd:attribute form="qualified" name="inputValueCalc" + type="dfdl:DFDLExpression" /> + <xsd:attribute form="qualified" name="outputValueCalc" + type="dfdl:DFDLExpression" /> + </xsd:attributeGroup> + + <!-- document only markup properties --> + + <xsd:attributeGroup name="DocumentPropertiesAGQualified"> + <xsd:attribute form="qualified" + name="documentFinalTerminatorCanBeMissing" type="dfdl:YesNoEnum" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="ElementAGQualified"> + <xsd:attributeGroup ref="dfdl:SimpleTypeAGQualified" /> + <xsd:attributeGroup ref="dfdl:FloatingAGQualified" /> + <xsd:attributeGroup ref="dfdl:NillableAGQualified" /> + <xsd:attributeGroup ref="dfdl:DefaultValueControlAGQualified" /> + <xsd:attributeGroup ref="dfdl:OccursAGQualified" /> + <xsd:attributeGroup ref="dfdl:CalculatedValueAGQualified" /> + <xsd:attributeGroup ref="dfdlx:RuntimePropertiesAGQualified" /> + </xsd:attributeGroup> + + <!-- dfdl:group takes the union of dfdl:sequence and dfdl:choice properties --> + <xsd:attributeGroup name="GroupAGQualified"> + <xsd:attributeGroup ref="dfdl:GroupCommonAGQualified" /> + <xsd:attributeGroup ref="dfdl:SequenceAGQualified" /> + <xsd:attributeGroup ref="dfdlx:ExtLayeringAGQualified" /> + <xsd:attributeGroup ref="dfdl:ChoiceAGQualified" /> + <xsd:attributeGroup ref="dfdl:SeparatorAGQualified" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="SimpleTypeAGQualified"> + <xsd:attributeGroup ref="dfdl:RepresentationAGQualified" /> + <xsd:attributeGroup ref="dfdl:NonGroupMarkupAGQualified" /> + <xsd:attributeGroup ref="dfdl:LengthAGQualified" /> + <xsd:attributeGroup ref="dfdl:SimpleTypesTextAGQualified" /> + <xsd:attributeGroup ref="dfdl:StringTextAGQualified" /> + <xsd:attributeGroup ref="dfdl:NumberAGQualified" /> + <xsd:attributeGroup ref="dfdl:NumberTextAGQualified" /> + <xsd:attributeGroup ref="dfdl:TextNumberFormatAGQualified" /> + <xsd:attributeGroup ref="dfdl:NumberBinaryAGQualified" /> + <xsd:attributeGroup ref="dfdl:FloatBinaryAGQualified" /> + <xsd:attributeGroup ref="dfdl:TextBidiSchemeAGQualified" /> + <xsd:attributeGroup ref="dfdl:CalendarTextAGQualified" /> + <xsd:attributeGroup ref="dfdl:CalendarBinaryAGQualified" /> + <xsd:attributeGroup ref="dfdl:CalendarFormatAGQualified" /> + <xsd:attributeGroup ref="dfdl:BooleanTextAGQualified" /> + <xsd:attributeGroup ref="dfdl:BooleanBinaryAGQualified" /> + <xsd:attributeGroup ref="dfdlx:SimpleTypeValueCalcAGQualified" /> + <xsd:attributeGroup ref="dfdlx:ObjectKindAGQualified" /> + </xsd:attributeGroup> + +</xsd:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/DFDL_part3_model.xsd b/DFDL/attribution/org/apache/daffodil/xsd/DFDL_part3_model.xsd new file mode 100644 index 0000000000000000000000000000000000000000..ad59d7595ba2a1660d5109454f7a57fba2356346 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/DFDL_part3_model.xsd @@ -0,0 +1,370 @@ +<?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://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" + xmlns:dafint="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int" + attributeFormDefault="unqualified" elementFormDefault="qualified"> + + <xsd:include schemaLocation="DFDL_part2_attributes.xsd"/> + + <!-- Add schemaLocation="dafint.xsd" to allow NetBeans XML validation to work --> + <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int" schemaLocation="dafint.xsd"/> + <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"/> + <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions"/> + + + <!-- all the dfdl: elements that can appear inside an xs:appinfo element --> + <xsd:group name="DFDLAppInfoGroup"> + <xsd:choice> + <xsd:element ref="dfdl:assert" /> + <xsd:element ref="dfdl:choice" /> + <xsd:element ref="dfdl:defineEscapeScheme" /> + <xsd:element ref="dfdl:defineFormat" /> + <xsd:element ref="dfdl:defineVariable" /> + <xsd:element ref="dfdl:discriminator" /> + <xsd:element ref="dfdl:element" /> + <xsd:element ref="dfdl:enumeration" /> + <xsd:element ref="dfdl:format" /> + <xsd:element ref="dfdl:group" /> + <xsd:element ref="dfdl:newVariableInstance" /> + <xsd:element ref="dfdl:sequence" /> + <xsd:element ref="dfdl:setVariable" /> + <xsd:element ref="dfdl:simpleType" /> + </xsd:choice> + </xsd:group> + + <!-- ======================================================== --> + <!-- DFDL Format definition types --> + <!-- ======================================================== --> + + <!-- 7.2 dfdl:defineFormat --> + <xsd:element name="defineFormat" type="dfdl:DFDLDefineFormat" /> + <xsd:complexType name="DFDLDefineFormat"> + <xsd:sequence> + <xsd:element maxOccurs="unbounded" minOccurs="0" + ref="dfdl:format" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:NCName" use='required'/> + <xsd:attributeGroup ref="dafint:daffodilAG"/> + </xsd:complexType> + + <xsd:element name="format" type="dfdl:DFDLFormat" /> + <xsd:complexType name="DFDLFormat"> + <xsd:complexContent> + <xsd:extension base="dfdl:DFDLBaseType"> + <xsd:sequence /> + <xsd:attributeGroup ref="dfdl:FormatAG" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <!-- 7.5 dfdl:defineEscapeScheme --> + <xsd:element name="defineEscapeScheme" type="dfdl:DFDLDefineEscapeScheme" /> + + <xsd:complexType name="DFDLDefineEscapeScheme"> + <xsd:sequence> + <xsd:element ref="dfdl:escapeScheme" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:NCName" use='required'/> + <xsd:attributeGroup ref="dafint:daffodilAG"/> + </xsd:complexType> + + <xsd:element name="escapeScheme" type="dfdl:DFDLEscapeScheme" /> + + <xsd:complexType name="DFDLEscapeScheme"> + <xsd:complexContent> + <xsd:extension base="dfdl:DFDLType"> + <xsd:sequence /> + <xsd:attributeGroup ref="dfdl:EscapeSchemeAG" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <!-- ================================================================= --> + <!-- Element form for properties --> + <!-- ================================================================= --> + + <xsd:element name="property" type="dfdl:PropertyType" /> + + <xsd:complexType name="PropertyType"> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute name="name" use='required'> + <xsd:simpleType> + <xsd:union memberTypes="dfdl:PropertyNameType dfdlx:PropertyNameType" /> + </xsd:simpleType> + </xsd:attribute> + <xsd:attributeGroup ref="dafint:daffodilAG"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <!-- ================================================================= --> + <!-- Elements, types and attribute groups to specify DFDL Variables --> + <!-- ================================================================= --> + + <xsd:complexType name="DFDLVariableType"> + <xsd:simpleContent> + <xsd:extension base="dfdl:DFDLStringLiteral_Or_DFDLExpression"> + <xsd:attributeGroup ref="dafint:daffodilAG"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:attributeGroup name="DefineVariableAG"> + <xsd:attribute name="name" type="xsd:NCName" use='required'/> + <xsd:attribute name="predefined" type="xsd:boolean" /> + <xsd:attribute name="type" type="xsd:QName" /> + <xsd:attribute name="external" type="xsd:boolean" /> + <xsd:attribute name="defaultValue" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + <xsd:attribute ref="dfdlx:direction" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="SetVariableAG"> + <xsd:attribute name="ref" type="xsd:QName" use='required'/> + <xsd:attribute name="value" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="NewVariableInstanceAG"> + <xsd:attribute name="ref" type="xsd:QName" use='required'/> + <xsd:attribute name="defaultValue" + type="dfdl:DFDLStringLiteral_Or_DFDLExpression" /> + </xsd:attributeGroup> + + <xsd:element name="defineVariable"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="dfdl:DFDLVariableType"> + <xsd:attributeGroup ref="dfdl:DefineVariableAG" /> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="newVariableInstance"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="dfdl:DFDLVariableType"> + <xsd:attributeGroup ref="dfdl:NewVariableInstanceAG" /> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="setVariable"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="dfdl:DFDLVariableType"> + <xsd:attributeGroup ref="dfdl:SetVariableAG" /> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + + <!-- ================================================================================ --> + <!-- Elements, types and attribute groups to specify DFDL Assert and Discriminator --> + <!-- ================================================================================ --> + + <!-- The type that models element value as DFDL expression --> + <xsd:attributeGroup name="TestConditionAG"> + <xsd:attribute name="test" type="dfdl:DFDLExpression" /> + <xsd:attribute name="testKind" type="dfdl:TestKindEnum" /> + <xsd:attribute name="testPattern" type="dfdl:DFDLRegularExpression" /> + <xsd:attribute name="message" type="xsd:string" /> + <xsd:attribute name="failureType" type="dfdl:FailureTypeEnum" /> + </xsd:attributeGroup> + + <xsd:complexType name="TestCondition"> + <xsd:simpleContent> + <xsd:extension base="dfdl:DFDLExpressionOrPatternOrNothing"> <!-- changed to accept regex --> + <xsd:attributeGroup ref="dfdl:TestConditionAG" /> + <xsd:attributeGroup ref="dafint:daffodilAG" /> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + + <xsd:element name="assert"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="dfdl:TestCondition"> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="discriminator"> + <xsd:complexType> + <xsd:simpleContent> + <xsd:extension base="dfdl:TestCondition"> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + </xsd:element> + + <!-- ============================================================ --> + <!-- Specialized annotations element definitions --> + <!-- ============================================================ --> + + <xsd:element name="element" type="dfdl:DFDLElementType" /> + <xsd:element name="sequence" type="dfdl:DFDLSequenceType" /> + <xsd:element name="choice" type="dfdl:DFDLChoiceType" /> + <xsd:element name="group" type="dfdl:DFDLGroupType" /> + <xsd:element name="simpleType" type="dfdl:DFDLSimpleType" /> + <xsd:element name="enumeration" type="dfdl:DFDLEnumerationType" /> + + <!-- ============================================================= --> + <!-- Specialized annotations types --> + <!-- ============================================================= --> + + <xsd:complexType abstract="true" name="DFDLType"> + <xsd:sequence> + <xsd:element maxOccurs="unbounded" minOccurs="0" + ref="dfdl:property" /> + <xsd:element maxOccurs="unbounded" minOccurs="0" + ref="daf:property" /> + </xsd:sequence> + <xsd:attributeGroup ref="dafint:daffodilAG"/> + </xsd:complexType> + + <xsd:complexType abstract="true" name="DFDLBaseType"> + <xsd:complexContent> + <xsd:extension base="dfdl:DFDLType"> + <xsd:sequence /> + <xsd:attributeGroup ref="dfdl:BaseAG" /> + <xsd:attributeGroup ref="dfdl:CommonAG" /> + <xsd:attributeGroup ref="dfdl:AlignmentAG" /> + <xsd:attributeGroup ref="dfdl:MarkupAG" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="DFDLElementType"> + <xsd:complexContent> + <xsd:extension base="dfdl:DFDLBaseType"> + <xsd:sequence /> + <xsd:attributeGroup ref="dfdl:ElementAG" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="DFDLSequenceType"> + <xsd:complexContent> + <xsd:extension base="dfdl:DFDLBaseType"> + <xsd:sequence /> + <xsd:attributeGroup ref="dfdl:GroupCommonAG" /> + <xsd:attributeGroup ref="dfdl:SequenceAG" /> + <xsd:attributeGroup ref="dfdlx:ExtLayeringAGQualified" /> + <xsd:attributeGroup ref="dfdl:SeparatorAG" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="DFDLChoiceType"> + <xsd:complexContent> + <xsd:extension base="dfdl:DFDLBaseType"> + <xsd:sequence /> + <xsd:attributeGroup ref="dfdl:GroupCommonAG" /> + <xsd:attributeGroup ref="dfdl:ChoiceAG" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="DFDLSimpleType"> + <xsd:complexContent> + <xsd:extension base="dfdl:DFDLBaseType"> + <xsd:sequence /> + <xsd:attributeGroup ref="dfdl:SimpleTypeAG" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="DFDLEnumerationType"> + <xsd:attributeGroup ref="dfdlx:RepValuesAG" /> + </xsd:complexType> + + <xsd:complexType name="DFDLGroupType"> + <xsd:complexContent> + <xsd:extension base="dfdl:DFDLBaseType"> + <xsd:sequence /> + <xsd:attributeGroup ref="dfdl:GroupAG" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <!-- ======================================================== --> + <!-- Specialized annotations attribute groups --> + <!-- ======================================================== --> + + <xsd:attributeGroup name="FormatAG"> + <xsd:attributeGroup ref="dfdl:ElementFormatSubsetAG" /> + <xsd:attributeGroup ref="dfdl:GroupAG" /> + <xsd:attributeGroup ref="dfdl:DocumentPropertiesAG" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="ElementFormatSubsetAG"> + <xsd:attributeGroup ref="dfdl:SimpleTypeAG" /> + <xsd:attributeGroup ref="dfdl:FloatingAG" /> + <xsd:attributeGroup ref="dfdl:NillableAG" /> + <xsd:attributeGroup ref="dfdl:DefaultValueControlAG" /> + <xsd:attributeGroup ref="dfdl:OccursAG" /> + <xsd:attributeGroup ref="dfdlx:RuntimePropertiesAG" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="ElementAG"> + <xsd:attributeGroup ref="dfdl:ElementFormatSubsetAG" /> + <xsd:attributeGroup ref="dfdl:CalculatedValueAG" /> + </xsd:attributeGroup> + + <!-- dfdl:group takes the union of dfdl:sequence and dfdl:choice properties --> + <xsd:attributeGroup name="GroupAG"> + <xsd:attributeGroup ref="dfdl:GroupCommonAG" /> + <xsd:attributeGroup ref="dfdl:SequenceAG" /> + <xsd:attributeGroup ref="dfdlx:ExtLayeringAGQualified" /> + <xsd:attributeGroup ref="dfdl:ChoiceAG" /> + <xsd:attributeGroup ref="dfdl:SeparatorAG" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="SimpleTypeAG"> + <xsd:attributeGroup ref="dfdl:RepresentationAG" /> + <xsd:attributeGroup ref="dfdl:NonGroupMarkupAG" /> + <xsd:attributeGroup ref="dfdl:LengthAG" /> + <xsd:attributeGroup ref="dfdl:SimpleTypesTextAG" /> + <xsd:attributeGroup ref="dfdl:StringTextAG" /> + <xsd:attributeGroup ref="dfdl:NumberAG" /> + <xsd:attributeGroup ref="dfdl:NumberTextAG" /> + <xsd:attributeGroup ref="dfdl:TextNumberFormatAG" /> + <xsd:attributeGroup ref="dfdl:NumberBinaryAG" /> + <xsd:attributeGroup ref="dfdl:FloatBinaryAG" /> + <xsd:attributeGroup ref="dfdl:TextBidiSchemeAG" /> + <xsd:attributeGroup ref="dfdl:CalendarTextAG" /> + <xsd:attributeGroup ref="dfdl:CalendarBinaryAG" /> + <xsd:attributeGroup ref="dfdl:CalendarFormatAG" /> + <xsd:attributeGroup ref="dfdl:BooleanTextAG" /> + <xsd:attributeGroup ref="dfdl:BooleanBinaryAG" /> + <xsd:attributeGroup ref="dfdlx:SimpleTypeValueCalcAG" /> + <xsd:attributeGroup ref="dfdlx:ObjectKindAG" /> + </xsd:attributeGroup> + +</xsd:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/README.md b/DFDL/attribution/org/apache/daffodil/xsd/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c8483059431ec5fc89e44c2883784b88dc3eec69 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/README.md @@ -0,0 +1,5 @@ +# XML Validation Resources + +* [Ant SchemaValidate Task](https://ant.apache.org/manual/Tasks/schemavalidate.html) + +* [Related Resources for XML Schema](https://www.w3.org/2001/XMLSchema) \ No newline at end of file diff --git a/DFDL/attribution/org/apache/daffodil/xsd/XMLSchema.dtd b/DFDL/attribution/org/apache/daffodil/xsd/XMLSchema.dtd new file mode 100644 index 0000000000000000000000000000000000000000..7c01f845ea809a511944528b3fcde35d88512754 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/XMLSchema.dtd @@ -0,0 +1,413 @@ +<!-- + Copyright © 2018 World Wide Web Consortium, (Massachusetts + Institute of Technology, European Research Consortium for Informatics and + Mathematics, Keio University, Beihang). All Rights Reserved. This work is + distributed under the W3C® Software License [1] in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +--> + +<!-- DTD for XML Schemas: Part 1: Structures + Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN" + Official Location: http://www.w3.org/2001/XMLSchema.dtd --> +<!-- $Id: XMLSchema.dtd,v 1.31 2001/10/24 15:50:16 ht Exp $ --> +<!-- Note this DTD is NOT normative, or even definitive. --> <!--d--> +<!-- prose copy in the structures REC is the definitive version --> <!--d--> +<!-- (which shouldn't differ from this one except for this --> <!--d--> +<!-- comment and entity expansions, but just in case) --> <!--d--> +<!-- With the exception of cases with multiple namespace + prefixes for the XML Schema namespace, any XML document which is + not valid per this DTD given redefinitions in its internal subset of the + 'p' and 's' parameter entities below appropriate to its namespace + declaration of the XML Schema namespace is almost certainly not + a valid schema. --> + +<!-- The simpleType element and its constituent parts + are defined in XML Schema: Part 2: Datatypes --> +<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' > + +<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a + schema document to establish a different + namespace prefix --> +<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must + also define %s as the suffix for the appropriate + namespace declaration (e.g. :foo) --> +<!ENTITY % nds 'xmlns%s;'> + +<!-- Define all the element names, with optional prefix --> +<!ENTITY % schema "%p;schema"> +<!ENTITY % complexType "%p;complexType"> +<!ENTITY % complexContent "%p;complexContent"> +<!ENTITY % simpleContent "%p;simpleContent"> +<!ENTITY % extension "%p;extension"> +<!ENTITY % element "%p;element"> +<!ENTITY % unique "%p;unique"> +<!ENTITY % key "%p;key"> +<!ENTITY % keyref "%p;keyref"> +<!ENTITY % selector "%p;selector"> +<!ENTITY % field "%p;field"> +<!ENTITY % group "%p;group"> +<!ENTITY % all "%p;all"> +<!ENTITY % choice "%p;choice"> +<!ENTITY % sequence "%p;sequence"> +<!ENTITY % any "%p;any"> +<!ENTITY % anyAttribute "%p;anyAttribute"> +<!ENTITY % attribute "%p;attribute"> +<!ENTITY % attributeGroup "%p;attributeGroup"> +<!ENTITY % include "%p;include"> +<!ENTITY % import "%p;import"> +<!ENTITY % redefine "%p;redefine"> +<!ENTITY % notation "%p;notation"> + +<!-- annotation elements --> +<!ENTITY % annotation "%p;annotation"> +<!ENTITY % appinfo "%p;appinfo"> +<!ENTITY % documentation "%p;documentation"> + +<!-- Customisation entities for the ATTLIST of each element type. + Define one of these if your schema takes advantage of the + anyAttribute='##other' in the schema for schemas --> + +<!ENTITY % schemaAttrs ''> +<!ENTITY % complexTypeAttrs ''> +<!ENTITY % complexContentAttrs ''> +<!ENTITY % simpleContentAttrs ''> +<!ENTITY % extensionAttrs ''> +<!ENTITY % elementAttrs ''> +<!ENTITY % groupAttrs ''> +<!ENTITY % allAttrs ''> +<!ENTITY % choiceAttrs ''> +<!ENTITY % sequenceAttrs ''> +<!ENTITY % anyAttrs ''> +<!ENTITY % anyAttributeAttrs ''> +<!ENTITY % attributeAttrs ''> +<!ENTITY % attributeGroupAttrs ''> +<!ENTITY % uniqueAttrs ''> +<!ENTITY % keyAttrs ''> +<!ENTITY % keyrefAttrs ''> +<!ENTITY % selectorAttrs ''> +<!ENTITY % fieldAttrs ''> +<!ENTITY % includeAttrs ''> +<!ENTITY % importAttrs ''> +<!ENTITY % redefineAttrs ''> +<!ENTITY % notationAttrs ''> +<!ENTITY % annotationAttrs ''> +<!ENTITY % appinfoAttrs ''> +<!ENTITY % documentationAttrs ''> + +<!ENTITY % complexDerivationSet "CDATA"> + <!-- #all or space-separated list drawn from derivationChoice --> +<!ENTITY % blockSet "CDATA"> + <!-- #all or space-separated list drawn from + derivationChoice + 'substitution' --> + +<!ENTITY % mgs '%all; | %choice; | %sequence;'> +<!ENTITY % cs '%choice; | %sequence;'> +<!ENTITY % formValues '(qualified|unqualified)'> + + +<!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'> + +<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'> + +<!-- This is used in part2 --> +<!ENTITY % restriction1 '((%mgs; | %group;)?)'> + +%xs-datatypes; + +<!-- the duplication below is to produce an unambiguous content model + which allows annotation everywhere --> +<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*, + ((%simpleType; | %complexType; + | %element; | %attribute; + | %attributeGroup; | %group; + | %notation; ), + (%annotation;)*)* )> +<!ATTLIST %schema; + targetNamespace %URIref; #IMPLIED + version CDATA #IMPLIED + %nds; %URIref; #FIXED 'http://www.w3.org/2001/XMLSchema' + xmlns CDATA #IMPLIED + finalDefault %complexDerivationSet; '' + blockDefault %blockSet; '' + id ID #IMPLIED + elementFormDefault %formValues; 'unqualified' + attributeFormDefault %formValues; 'unqualified' + xml:lang CDATA #IMPLIED + %schemaAttrs;> +<!-- Note the xmlns declaration is NOT in the Schema for Schemas, + because at the Infoset level where schemas operate, + xmlns(:prefix) is NOT an attribute! --> +<!-- The declaration of xmlns is a convenience for schema authors --> + +<!-- The id attribute here and below is for use in external references + from non-schemas using simple fragment identifiers. + It is NOT used for schema-to-schema reference, internal or + external. --> + +<!-- a type is a named content type specification which allows attribute + declarations--> +<!-- --> + +<!ELEMENT %complexType; ((%annotation;)?, + (%simpleContent;|%complexContent;| + %particleAndAttrs;))> + +<!ATTLIST %complexType; + name %NCName; #IMPLIED + id ID #IMPLIED + abstract %boolean; #IMPLIED + final %complexDerivationSet; #IMPLIED + block %complexDerivationSet; #IMPLIED + mixed (true|false) 'false' + %complexTypeAttrs;> + +<!-- particleAndAttrs is shorthand for a root type --> +<!-- mixed is disallowed if simpleContent, overriden if complexContent + has one too. --> + +<!-- If anyAttribute appears in one or more referenced attributeGroups + and/or explicitly, the intersection of the permissions is used --> + +<!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))> +<!ATTLIST %complexContent; + mixed (true|false) #IMPLIED + id ID #IMPLIED + %complexContentAttrs;> + +<!-- restriction should use the branch defined above, not the simple + one from part2; extension should use the full model --> + +<!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))> +<!ATTLIST %simpleContent; + id ID #IMPLIED + %simpleContentAttrs;> + +<!-- restriction should use the simple branch from part2, not the + one defined above; extension should have no particle --> + +<!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))> +<!ATTLIST %extension; + base %QName; #REQUIRED + id ID #IMPLIED + %extensionAttrs;> + +<!-- an element is declared by either: + a name and a type (either nested or referenced via the type attribute) + or a ref to an existing element declaration --> + +<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?, + (%unique; | %key; | %keyref;)*)> +<!-- simpleType or complexType only if no type|ref attribute --> +<!-- ref not allowed at top level --> +<!ATTLIST %element; + name %NCName; #IMPLIED + id ID #IMPLIED + ref %QName; #IMPLIED + type %QName; #IMPLIED + minOccurs %nonNegativeInteger; #IMPLIED + maxOccurs CDATA #IMPLIED + nillable %boolean; #IMPLIED + substitutionGroup %QName; #IMPLIED + abstract %boolean; #IMPLIED + final %complexDerivationSet; #IMPLIED + block %blockSet; #IMPLIED + default CDATA #IMPLIED + fixed CDATA #IMPLIED + form %formValues; #IMPLIED + %elementAttrs;> +<!-- type and ref are mutually exclusive. + name and ref are mutually exclusive, one is required --> +<!-- In the absence of type AND ref, type defaults to type of + substitutionGroup, if any, else the ur-type, i.e. unconstrained --> +<!-- default and fixed are mutually exclusive --> + +<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)> +<!ATTLIST %group; + name %NCName; #IMPLIED + ref %QName; #IMPLIED + minOccurs %nonNegativeInteger; #IMPLIED + maxOccurs CDATA #IMPLIED + id ID #IMPLIED + %groupAttrs;> + +<!ELEMENT %all; ((%annotation;)?, (%element;)*)> +<!ATTLIST %all; + minOccurs (1) #IMPLIED + maxOccurs (1) #IMPLIED + id ID #IMPLIED + %allAttrs;> + +<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)> +<!ATTLIST %choice; + minOccurs %nonNegativeInteger; #IMPLIED + maxOccurs CDATA #IMPLIED + id ID #IMPLIED + %choiceAttrs;> + +<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)> +<!ATTLIST %sequence; + minOccurs %nonNegativeInteger; #IMPLIED + maxOccurs CDATA #IMPLIED + id ID #IMPLIED + %sequenceAttrs;> + +<!-- an anonymous grouping in a model, or + a top-level named group definition, or a reference to same --> + +<!-- Note that if order is 'all', group is not allowed inside. + If order is 'all' THIS group must be alone (or referenced alone) at + the top level of a content model --> +<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside --> +<!-- Should allow minOccurs=0 inside order='all' . . . --> + +<!ELEMENT %any; (%annotation;)?> +<!ATTLIST %any; + namespace CDATA '##any' + processContents (skip|lax|strict) 'strict' + minOccurs %nonNegativeInteger; '1' + maxOccurs CDATA '1' + id ID #IMPLIED + %anyAttrs;> + +<!-- namespace is interpreted as follows: + ##any - - any non-conflicting WFXML at all + + ##other - - any non-conflicting WFXML from namespace other + than targetNamespace + + ##local - - any unqualified non-conflicting WFXML/attribute + one or - - any non-conflicting WFXML from + more URI the listed namespaces + references + + ##targetNamespace ##local may appear in the above list, + with the obvious meaning --> + +<!ELEMENT %anyAttribute; (%annotation;)?> +<!ATTLIST %anyAttribute; + namespace CDATA '##any' + processContents (skip|lax|strict) 'strict' + id ID #IMPLIED + %anyAttributeAttrs;> +<!-- namespace is interpreted as for 'any' above --> + +<!-- simpleType only if no type|ref attribute --> +<!-- ref not allowed at top level, name iff at top level --> +<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)> +<!ATTLIST %attribute; + name %NCName; #IMPLIED + id ID #IMPLIED + ref %QName; #IMPLIED + type %QName; #IMPLIED + use (prohibited|optional|required) #IMPLIED + default CDATA #IMPLIED + fixed CDATA #IMPLIED + form %formValues; #IMPLIED + %attributeAttrs;> +<!-- type and ref are mutually exclusive. + name and ref are mutually exclusive, one is required --> +<!-- default for use is optional when nested, none otherwise --> +<!-- default and fixed are mutually exclusive --> +<!-- type attr and simpleType content are mutually exclusive --> + +<!-- an attributeGroup is a named collection of attribute decls, or a + reference thereto --> +<!ELEMENT %attributeGroup; ((%annotation;)?, + (%attribute; | %attributeGroup;)*, + (%anyAttribute;)?) > +<!ATTLIST %attributeGroup; + name %NCName; #IMPLIED + id ID #IMPLIED + ref %QName; #IMPLIED + %attributeGroupAttrs;> + +<!-- ref iff no content, no name. ref iff not top level --> + +<!-- better reference mechanisms --> +<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)> +<!ATTLIST %unique; + name %NCName; #REQUIRED + id ID #IMPLIED + %uniqueAttrs;> + +<!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)> +<!ATTLIST %key; + name %NCName; #REQUIRED + id ID #IMPLIED + %keyAttrs;> + +<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)> +<!ATTLIST %keyref; + name %NCName; #REQUIRED + refer %QName; #REQUIRED + id ID #IMPLIED + %keyrefAttrs;> + +<!ELEMENT %selector; ((%annotation;)?)> +<!ATTLIST %selector; + xpath %XPathExpr; #REQUIRED + id ID #IMPLIED + %selectorAttrs;> +<!ELEMENT %field; ((%annotation;)?)> +<!ATTLIST %field; + xpath %XPathExpr; #REQUIRED + id ID #IMPLIED + %fieldAttrs;> + +<!-- Schema combination mechanisms --> +<!ELEMENT %include; (%annotation;)?> +<!ATTLIST %include; + schemaLocation %URIref; #REQUIRED + id ID #IMPLIED + %includeAttrs;> + +<!ELEMENT %import; (%annotation;)?> +<!ATTLIST %import; + namespace %URIref; #IMPLIED + schemaLocation %URIref; #IMPLIED + id ID #IMPLIED + %importAttrs;> + +<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; | + %attributeGroup; | %group;)*> +<!ATTLIST %redefine; + schemaLocation %URIref; #REQUIRED + id ID #IMPLIED + %redefineAttrs;> + +<!ELEMENT %notation; (%annotation;)?> +<!ATTLIST %notation; + name %NCName; #REQUIRED + id ID #IMPLIED + public CDATA #REQUIRED + system %URIref; #IMPLIED + %notationAttrs;> + +<!-- Annotation is either application information or documentation --> +<!-- By having these here they are available for datatypes as well + as all the structures elements --> + +<!ELEMENT %annotation; (%appinfo; | %documentation;)*> +<!ATTLIST %annotation; %annotationAttrs;> + +<!-- User must define annotation elements in internal subset for this + to work --> +<!ELEMENT %appinfo; ANY> <!-- too restrictive --> +<!ATTLIST %appinfo; + source %URIref; #IMPLIED + id ID #IMPLIED + %appinfoAttrs;> +<!ELEMENT %documentation; ANY> <!-- too restrictive --> +<!ATTLIST %documentation; + source %URIref; #IMPLIED + id ID #IMPLIED + xml:lang CDATA #IMPLIED + %documentationAttrs;> + +<!NOTATION XMLSchemaStructures PUBLIC + 'structures' 'http://www.w3.org/2001/XMLSchema.xsd' > +<!NOTATION XML PUBLIC + 'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' > diff --git a/DFDL/attribution/org/apache/daffodil/xsd/XMLSchema.xsd b/DFDL/attribution/org/apache/daffodil/xsd/XMLSchema.xsd new file mode 100644 index 0000000000000000000000000000000000000000..ab00a7f0702a31e9b8bbd2e7cd6a865b6f6775a1 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/XMLSchema.xsd @@ -0,0 +1,2655 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!-- + Copyright © 2018 World Wide Web Consortium, (Massachusetts + Institute of Technology, European Research Consortium for Informatics and + Mathematics, Keio University, Beihang). All Rights Reserved. This work is + distributed under the W3C® Software License [1] in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +--> + +<!-- XML Schema schema for XML Schemas: Part 1: Structures --> +<!-- Note this schema is NOT the normative structures schema. --> +<!-- The prose copy in the structures REC is the normative --> +<!-- version (which shouldn't differ from this one except for --> +<!-- this comment and entity expansions, but just in case --> +<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" [ + +<!-- provide ID type information even for parsers which only read the + internal subset --> +<!ATTLIST xs:schema id ID #IMPLIED> +<!ATTLIST xs:complexType id ID #IMPLIED> +<!ATTLIST xs:complexContent id ID #IMPLIED> +<!ATTLIST xs:simpleContent id ID #IMPLIED> +<!ATTLIST xs:extension id ID #IMPLIED> +<!ATTLIST xs:element id ID #IMPLIED> +<!ATTLIST xs:group id ID #IMPLIED> +<!ATTLIST xs:all id ID #IMPLIED> +<!ATTLIST xs:choice id ID #IMPLIED> +<!ATTLIST xs:sequence id ID #IMPLIED> +<!ATTLIST xs:any id ID #IMPLIED> +<!ATTLIST xs:anyAttribute id ID #IMPLIED> +<!ATTLIST xs:attribute id ID #IMPLIED> +<!ATTLIST xs:attributeGroup id ID #IMPLIED> +<!ATTLIST xs:unique id ID #IMPLIED> +<!ATTLIST xs:key id ID #IMPLIED> +<!ATTLIST xs:keyref id ID #IMPLIED> +<!ATTLIST xs:selector id ID #IMPLIED> +<!ATTLIST xs:field id ID #IMPLIED> +<!ATTLIST xs:include id ID #IMPLIED> +<!ATTLIST xs:import id ID #IMPLIED> +<!ATTLIST xs:redefine id ID #IMPLIED> +<!ATTLIST xs:notation id ID #IMPLIED> +<!-- + keep this schema XML1.0 DTD valid + --> + <!ENTITY % schemaAttrs 'xmlns:hfp CDATA #IMPLIED'> + + <!ELEMENT hfp:hasFacet EMPTY> + <!ATTLIST hfp:hasFacet + name NMTOKEN #REQUIRED> + + <!ELEMENT hfp:hasProperty EMPTY> + <!ATTLIST hfp:hasProperty + name NMTOKEN #REQUIRED + value CDATA #REQUIRED> +<!-- + Make sure that processors that do not read the external + subset will know about the various IDs we declare + --> + <!ATTLIST xs:simpleType id ID #IMPLIED> + <!ATTLIST xs:maxExclusive id ID #IMPLIED> + <!ATTLIST xs:minExclusive id ID #IMPLIED> + <!ATTLIST xs:maxInclusive id ID #IMPLIED> + <!ATTLIST xs:minInclusive id ID #IMPLIED> + <!ATTLIST xs:totalDigits id ID #IMPLIED> + <!ATTLIST xs:fractionDigits id ID #IMPLIED> + <!ATTLIST xs:length id ID #IMPLIED> + <!ATTLIST xs:minLength id ID #IMPLIED> + <!ATTLIST xs:maxLength id ID #IMPLIED> + <!ATTLIST xs:enumeration id ID #IMPLIED> + <!ATTLIST xs:pattern id ID #IMPLIED> + <!ATTLIST xs:appinfo id ID #IMPLIED> + <!ATTLIST xs:documentation id ID #IMPLIED> + <!ATTLIST xs:list id ID #IMPLIED> + <!ATTLIST xs:union id ID #IMPLIED> + ]> +<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema" + blockDefault="#all" elementFormDefault="qualified" version="1.0" + xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xml:lang="EN" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty"> + <xs:annotation> + <xs:documentation> + Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp + Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html"> + The schema corresponding to this document is normative, + with respect to the syntactic constraints it expresses in the + XML Schema language. The documentation (within <documentation> + elements) + below, is not normative, but rather highlights important aspects of + the W3C Recommendation of which this is a part + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation> + The simpleType element and all of its members are defined + towards the end + of this schema document + </xs:documentation> + </xs:annotation> + + <xs:import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="xml.xsd"> + <xs:annotation> + <xs:documentation> + Get access to the xml: attribute groups for xml:lang + as declared on 'schema' and 'documentation' below + </xs:documentation> + </xs:annotation> + </xs:import> + + <xs:complexType name="openAttrs"> + <xs:annotation> + <xs:documentation> + This type is extended by almost all schema types + to allow attributes from other namespaces to be + added to user schemas. + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xs:anyType"> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="annotated"> + <xs:annotation> + <xs:documentation> + This type is extended by all types which allow annotation + other than <schema> itself + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xs:openAttrs"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + </xs:sequence> + <xs:attribute name="id" type="xs:ID" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:group name="schemaTop"> + <xs:annotation> + <xs:documentation> + This group is for the + elements which occur freely at the top level of schemas. + All of their types are based on the "annotated" type by extension. + </xs:documentation> + </xs:annotation> + <xs:choice> + <xs:group ref="xs:redefinable" /> + <xs:element ref="xs:element" /> + <xs:element ref="xs:attribute" /> + <xs:element ref="xs:notation" /> + </xs:choice> + </xs:group> + + <xs:group name="redefinable"> + <xs:annotation> + <xs:documentation> + This group is for the + elements which can self-redefine (see <redefine> below). + </xs:documentation> + </xs:annotation> + <xs:choice> + <xs:element ref="xs:simpleType" /> + <xs:element ref="xs:complexType" /> + <xs:element ref="xs:group" /> + <xs:element ref="xs:attributeGroup" /> + </xs:choice> + </xs:group> + + <xs:simpleType name="formChoice"> + <xs:annotation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="qualified" /> + <xs:enumeration value="unqualified" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="reducedDerivationControl"> + <xs:annotation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:derivationControl"> + <xs:enumeration value="extension" /> + <xs:enumeration value="restriction" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="derivationSet"> + <xs:annotation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + <xs:documentation> + #all or (possibly empty) subset of {extension, restriction} + </xs:documentation> + </xs:annotation> + <xs:union> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="#all" /> + </xs:restriction> + </xs:simpleType> + <xs:simpleType> + <xs:list itemType="xs:reducedDerivationControl" /> + </xs:simpleType> + </xs:union> + </xs:simpleType> + + <xs:simpleType name="typeDerivationControl"> + <xs:annotation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:derivationControl"> + <xs:enumeration value="extension" /> + <xs:enumeration value="restriction" /> + <xs:enumeration value="list" /> + <xs:enumeration value="union" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="fullDerivationSet"> + <xs:annotation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + <xs:documentation> + #all or (possibly empty) subset of {extension, restriction, list, union} + </xs:documentation> + </xs:annotation> + <xs:union> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="#all" /> + </xs:restriction> + </xs:simpleType> + <xs:simpleType> + <xs:list itemType="xs:typeDerivationControl" /> + </xs:simpleType> + </xs:union> + </xs:simpleType> + + <xs:element name="schema" id="schema"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-schema" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:openAttrs"> + <xs:sequence> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element ref="xs:include" /> + <xs:element ref="xs:import" /> + <xs:element ref="xs:redefine" /> + <xs:element ref="xs:annotation" /> + </xs:choice> + <xs:sequence minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="xs:schemaTop" /> + <xs:element ref="xs:annotation" minOccurs="0" + maxOccurs="unbounded" /> + </xs:sequence> + </xs:sequence> + <xs:attribute name="targetNamespace" type="xs:anyURI" /> + <xs:attribute name="version" type="xs:token" /> + <xs:attribute name="finalDefault" type="xs:fullDerivationSet" + use="optional" default="" /> + <xs:attribute name="blockDefault" type="xs:blockSet" + use="optional" default="" /> + <xs:attribute name="attributeFormDefault" type="xs:formChoice" + use="optional" default="unqualified" /> + <xs:attribute name="elementFormDefault" type="xs:formChoice" + use="optional" default="unqualified" /> + <xs:attribute name="id" type="xs:ID" /> + <xs:attribute ref="xml:lang" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:key name="element"> + <xs:selector xpath="xs:element" /> + <xs:field xpath="@name" /> + </xs:key> + + <xs:key name="attribute"> + <xs:selector xpath="xs:attribute" /> + <xs:field xpath="@name" /> + </xs:key> + + <xs:key name="type"> + <xs:selector xpath="xs:complexType|xs:simpleType" /> + <xs:field xpath="@name" /> + </xs:key> + + <xs:key name="group"> + <xs:selector xpath="xs:group" /> + <xs:field xpath="@name" /> + </xs:key> + + <xs:key name="attributeGroup"> + <xs:selector xpath="xs:attributeGroup" /> + <xs:field xpath="@name" /> + </xs:key> + + <xs:key name="notation"> + <xs:selector xpath="xs:notation" /> + <xs:field xpath="@name" /> + </xs:key> + + <xs:key name="identityConstraint"> + <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref" /> + <xs:field xpath="@name" /> + </xs:key> + + </xs:element> + + <xs:simpleType name="allNNI"> + <xs:annotation> + <xs:documentation> + for maxOccurs + </xs:documentation> + </xs:annotation> + <xs:union memberTypes="xs:nonNegativeInteger"> + <xs:simpleType> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="unbounded" /> + </xs:restriction> + </xs:simpleType> + </xs:union> + </xs:simpleType> + + <xs:attributeGroup name="occurs"> + <xs:annotation> + <xs:documentation> + for all particles + </xs:documentation> + </xs:annotation> + <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" + use="optional" default="1" /> + <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" + default="1" /> + </xs:attributeGroup> + + <xs:attributeGroup name="defRef"> + <xs:annotation> + <xs:documentation> + for element, group and attributeGroup, + which both define and reference + </xs:documentation> + </xs:annotation> + <xs:attribute name="name" type="xs:NCName" /> + <xs:attribute name="ref" type="xs:QName" /> + </xs:attributeGroup> + + <xs:group name="typeDefParticle"> + <xs:annotation> + <xs:documentation> + 'complexType' uses this + </xs:documentation> + </xs:annotation> + <xs:choice> + <xs:element name="group" type="xs:groupRef" /> + <xs:element ref="xs:all" /> + <xs:element ref="xs:choice" /> + <xs:element ref="xs:sequence" /> + </xs:choice> + </xs:group> + + + + <xs:group name="nestedParticle"> + <xs:choice> + <xs:element name="element" type="xs:localElement" /> + <xs:element name="group" type="xs:groupRef" /> + <xs:element ref="xs:choice" /> + <xs:element ref="xs:sequence" /> + <xs:element ref="xs:any" /> + </xs:choice> + </xs:group> + + <xs:group name="particle"> + <xs:choice> + <xs:element name="element" type="xs:localElement" /> + <xs:element name="group" type="xs:groupRef" /> + <xs:element ref="xs:all" /> + <xs:element ref="xs:choice" /> + <xs:element ref="xs:sequence" /> + <xs:element ref="xs:any" /> + </xs:choice> + </xs:group> + + <xs:complexType name="attribute"> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:sequence> + <xs:element name="simpleType" minOccurs="0" + type="xs:localSimpleType" /> + </xs:sequence> + <xs:attributeGroup ref="xs:defRef" /> + <xs:attribute name="type" type="xs:QName" /> + <xs:attribute name="use" use="optional" default="optional"> + <xs:simpleType> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="prohibited" /> + <xs:enumeration value="optional" /> + <xs:enumeration value="required" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="default" type="xs:string" /> + <xs:attribute name="fixed" type="xs:string" /> + <xs:attribute name="form" type="xs:formChoice" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="topLevelAttribute"> + <xs:complexContent> + <xs:restriction base="xs:attribute"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:element name="simpleType" minOccurs="0" + type="xs:localSimpleType" /> + </xs:sequence> + <xs:attribute name="ref" use="prohibited" /> + <xs:attribute name="form" use="prohibited" /> + <xs:attribute name="use" use="prohibited" /> + <xs:attribute name="name" use="required" type="xs:NCName" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:group name="attrDecls"> + <xs:sequence> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element name="attribute" type="xs:attribute" /> + <xs:element name="attributeGroup" type="xs:attributeGroupRef" /> + </xs:choice> + <xs:element ref="xs:anyAttribute" minOccurs="0" /> + </xs:sequence> + </xs:group> + + <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute" /> + </xs:annotation> + </xs:element> + + <xs:group name="complexTypeModel"> + <xs:choice> + <xs:element ref="xs:simpleContent" /> + <xs:element ref="xs:complexContent" /> + <xs:sequence> + <xs:annotation> + <xs:documentation> + This branch is short for + <complexContent> + <restriction base="xs:anyType"> + ... + </restriction> + </complexContent></xs:documentation> + </xs:annotation> + <xs:group ref="xs:typeDefParticle" minOccurs="0" /> + <xs:group ref="xs:attrDecls" /> + </xs:sequence> + </xs:choice> + </xs:group> + + <xs:complexType name="complexType" abstract="true"> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:group ref="xs:complexTypeModel" /> + <xs:attribute name="name" type="xs:NCName"> + <xs:annotation> + <xs:documentation> + Will be restricted to required or forbidden + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="mixed" type="xs:boolean" use="optional" + default="false"> + <xs:annotation> + <xs:documentation> + Not allowed if simpleContent child is chosen. + May be overriden by setting on complexContent child. + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="abstract" type="xs:boolean" + use="optional" default="false" /> + <xs:attribute name="final" type="xs:derivationSet" /> + <xs:attribute name="block" type="xs:derivationSet" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="topLevelComplexType"> + <xs:complexContent> + <xs:restriction base="xs:complexType"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:group ref="xs:complexTypeModel" /> + </xs:sequence> + <xs:attribute name="name" type="xs:NCName" use="required" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="localComplexType"> + <xs:complexContent> + <xs:restriction base="xs:complexType"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:group ref="xs:complexTypeModel" /> + </xs:sequence> + <xs:attribute name="name" use="prohibited" /> + <xs:attribute name="abstract" use="prohibited" /> + <xs:attribute name="final" use="prohibited" /> + <xs:attribute name="block" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="restrictionType"> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:sequence> + <xs:choice minOccurs="0"> + <xs:group ref="xs:typeDefParticle" /> + <xs:group ref="xs:simpleRestrictionModel" /> + </xs:choice> + <xs:group ref="xs:attrDecls" /> + </xs:sequence> + <xs:attribute name="base" type="xs:QName" use="required" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="complexRestrictionType"> + <xs:complexContent> + <xs:restriction base="xs:restrictionType"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:choice minOccurs="0"> + <xs:annotation> + <xs:documentation>This choice is added simply to + make this a valid restriction per the REC + </xs:documentation> + </xs:annotation> + <xs:group ref="xs:typeDefParticle" /> + </xs:choice> + <xs:group ref="xs:attrDecls" /> + </xs:sequence> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="extensionType"> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:sequence> + <xs:group ref="xs:typeDefParticle" minOccurs="0" /> + <xs:group ref="xs:attrDecls" /> + </xs:sequence> + <xs:attribute name="base" type="xs:QName" use="required" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:element name="complexContent" id="complexContent"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-complexContent" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:choice> + <xs:element name="restriction" type="xs:complexRestrictionType" /> + <xs:element name="extension" type="xs:extensionType" /> + </xs:choice> + <xs:attribute name="mixed" type="xs:boolean"> + <xs:annotation> + <xs:documentation> + Overrides any setting on complexType parent. + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:complexType name="simpleRestrictionType"> + <xs:complexContent> + <xs:restriction base="xs:restrictionType"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:choice minOccurs="0"> + <xs:annotation> + <xs:documentation>This choice is added simply to + make this a valid restriction per the REC + </xs:documentation> + </xs:annotation> + <xs:group ref="xs:simpleRestrictionModel" /> + </xs:choice> + <xs:group ref="xs:attrDecls" /> + </xs:sequence> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="simpleExtensionType"> + <xs:complexContent> + <xs:restriction base="xs:extensionType"> + <xs:sequence> + <xs:annotation> + <xs:documentation> + No typeDefParticle group reference + </xs:documentation> + </xs:annotation> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:group ref="xs:attrDecls" /> + </xs:sequence> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:element name="simpleContent" id="simpleContent"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:choice> + <xs:element name="restriction" type="xs:simpleRestrictionType" /> + <xs:element name="extension" type="xs:simpleExtensionType" /> + </xs:choice> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="complexType" type="xs:topLevelComplexType" + id="complexType"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-complexType" /> + </xs:annotation> + </xs:element> + + + <xs:simpleType name="blockSet"> + <xs:annotation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + <xs:documentation> + #all or (possibly empty) subset of {substitution, extension, + restriction} + </xs:documentation> + </xs:annotation> + <xs:union> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="#all" /> + </xs:restriction> + </xs:simpleType> + <xs:simpleType> + <xs:list> + <xs:simpleType> + <xs:restriction base="xs:derivationControl"> + <xs:enumeration value="extension" /> + <xs:enumeration value="restriction" /> + <xs:enumeration value="substitution" /> + </xs:restriction> + </xs:simpleType> + </xs:list> + </xs:simpleType> + </xs:union> + </xs:simpleType> + + <xs:complexType name="element" abstract="true"> + <xs:annotation> + <xs:documentation> + The element element can be used either + at the top level to define an element-type binding globally, + or within a content model to either reference a globally-defined + element or type or declare an element-type binding locally. + The ref form is not allowed at the top level. + </xs:documentation> + </xs:annotation> + + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:sequence> + <xs:choice minOccurs="0"> + <xs:element name="simpleType" type="xs:localSimpleType" /> + <xs:element name="complexType" type="xs:localComplexType" /> + </xs:choice> + <xs:group ref="xs:identityConstraint" minOccurs="0" + maxOccurs="unbounded" /> + </xs:sequence> + <xs:attributeGroup ref="xs:defRef" /> + <xs:attribute name="type" type="xs:QName" /> + <xs:attribute name="substitutionGroup" type="xs:QName" /> + <xs:attributeGroup ref="xs:occurs" /> + <xs:attribute name="default" type="xs:string" /> + <xs:attribute name="fixed" type="xs:string" /> + <xs:attribute name="nillable" type="xs:boolean" + use="optional" default="false" /> + <xs:attribute name="abstract" type="xs:boolean" + use="optional" default="false" /> + <xs:attribute name="final" type="xs:derivationSet" /> + <xs:attribute name="block" type="xs:blockSet" /> + <xs:attribute name="form" type="xs:formChoice" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="topLevelElement"> + <xs:complexContent> + <xs:restriction base="xs:element"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:choice minOccurs="0"> + <xs:element name="simpleType" type="xs:localSimpleType" /> + <xs:element name="complexType" type="xs:localComplexType" /> + </xs:choice> + <xs:group ref="xs:identityConstraint" minOccurs="0" + maxOccurs="unbounded" /> + </xs:sequence> + <xs:attribute name="ref" use="prohibited" /> + <xs:attribute name="form" use="prohibited" /> + <xs:attribute name="minOccurs" use="prohibited" /> + <xs:attribute name="maxOccurs" use="prohibited" /> + <xs:attribute name="name" use="required" type="xs:NCName" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="localElement"> + <xs:complexContent> + <xs:restriction base="xs:element"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:choice minOccurs="0"> + <xs:element name="simpleType" type="xs:localSimpleType" /> + <xs:element name="complexType" type="xs:localComplexType" /> + </xs:choice> + <xs:group ref="xs:identityConstraint" minOccurs="0" + maxOccurs="unbounded" /> + </xs:sequence> + <xs:attribute name="substitutionGroup" use="prohibited" /> + <xs:attribute name="final" use="prohibited" /> + <xs:attribute name="abstract" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:element name="element" type="xs:topLevelElement" id="element"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-element" /> + </xs:annotation> + </xs:element> + + <xs:complexType name="group" abstract="true"> + <xs:annotation> + <xs:documentation> + group type for explicit groups, named top-level groups and + group references + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded" /> + <xs:attributeGroup ref="xs:defRef" /> + <xs:attributeGroup ref="xs:occurs" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="realGroup"> + <xs:complexContent> + <xs:restriction base="xs:group"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:choice minOccurs="0" maxOccurs="1"> + <xs:element ref="xs:all" /> + <xs:element ref="xs:choice" /> + <xs:element ref="xs:sequence" /> + </xs:choice> + </xs:sequence> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="namedGroup"> + <xs:complexContent> + <xs:restriction base="xs:realGroup"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:choice minOccurs="1" maxOccurs="1"> + <xs:element name="all"> + <xs:complexType> + <xs:complexContent> + <xs:restriction base="xs:all"> + <xs:group ref="xs:allModel" /> + <xs:attribute name="minOccurs" use="prohibited" /> + <xs:attribute name="maxOccurs" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + </xs:element> + <xs:element name="choice" type="xs:simpleExplicitGroup" /> + <xs:element name="sequence" type="xs:simpleExplicitGroup" /> + </xs:choice> + </xs:sequence> + <xs:attribute name="name" use="required" type="xs:NCName" /> + <xs:attribute name="ref" use="prohibited" /> + <xs:attribute name="minOccurs" use="prohibited" /> + <xs:attribute name="maxOccurs" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="groupRef"> + <xs:complexContent> + <xs:restriction base="xs:realGroup"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + </xs:sequence> + <xs:attribute name="ref" use="required" type="xs:QName" /> + <xs:attribute name="name" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="explicitGroup"> + <xs:annotation> + <xs:documentation> + group type for the three kinds of group + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xs:group"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:group ref="xs:nestedParticle" minOccurs="0" + maxOccurs="unbounded" /> + </xs:sequence> + <xs:attribute name="name" type="xs:NCName" use="prohibited" /> + <xs:attribute name="ref" type="xs:QName" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="simpleExplicitGroup"> + <xs:complexContent> + <xs:restriction base="xs:explicitGroup"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:group ref="xs:nestedParticle" minOccurs="0" + maxOccurs="unbounded" /> + </xs:sequence> + <xs:attribute name="minOccurs" use="prohibited" /> + <xs:attribute name="maxOccurs" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:group name="allModel"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>This choice with min/max is here to + avoid a pblm with the Elt:All/Choice/Seq + Particle derivation constraint + </xs:documentation> + </xs:annotation> + <xs:element name="element" type="xs:narrowMaxMin" /> + </xs:choice> + </xs:sequence> + </xs:group> + + + <xs:complexType name="narrowMaxMin"> + <xs:annotation> + <xs:documentation>restricted max/min</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xs:localElement"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:choice minOccurs="0"> + <xs:element name="simpleType" type="xs:localSimpleType" /> + <xs:element name="complexType" type="xs:localComplexType" /> + </xs:choice> + <xs:group ref="xs:identityConstraint" minOccurs="0" + maxOccurs="unbounded" /> + </xs:sequence> + <xs:attribute name="minOccurs" use="optional" + default="1"> + <xs:simpleType> + <xs:restriction base="xs:nonNegativeInteger"> + <xs:enumeration value="0" /> + <xs:enumeration value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="maxOccurs" use="optional" + default="1"> + <xs:simpleType> + <xs:restriction base="xs:allNNI"> + <xs:enumeration value="0" /> + <xs:enumeration value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="all"> + <xs:annotation> + <xs:documentation> + Only elements allowed inside + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xs:explicitGroup"> + <xs:group ref="xs:allModel" /> + <xs:attribute name="minOccurs" use="optional" + default="1"> + <xs:simpleType> + <xs:restriction base="xs:nonNegativeInteger"> + <xs:enumeration value="0" /> + <xs:enumeration value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="maxOccurs" use="optional" + default="1"> + <xs:simpleType> + <xs:restriction base="xs:allNNI"> + <xs:enumeration value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:element name="all" id="all" type="xs:all"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all" /> + </xs:annotation> + </xs:element> + + <xs:element name="choice" type="xs:explicitGroup" id="choice"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-choice" /> + </xs:annotation> + </xs:element> + + <xs:element name="sequence" type="xs:explicitGroup" id="sequence"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-sequence" /> + </xs:annotation> + </xs:element> + + <xs:element name="group" type="xs:namedGroup" id="group"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-group" /> + </xs:annotation> + </xs:element> + + <xs:complexType name="wildcard"> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:attribute name="namespace" type="xs:namespaceList" + use="optional" default="##any" /> + <xs:attribute name="processContents" use="optional" + default="strict"> + <xs:simpleType> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="skip" /> + <xs:enumeration value="lax" /> + <xs:enumeration value="strict" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:element name="any" id="any"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:wildcard"> + <xs:attributeGroup ref="xs:occurs" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:annotation> + <xs:documentation> + simple type for the value of the 'namespace' attr of + 'any' and 'anyAttribute' + </xs:documentation> + </xs:annotation> + <xs:annotation> + <xs:documentation> + Value is + ##any - - any non-conflicting WFXML/attribute at all + + ##other - - any non-conflicting WFXML/attribute from + namespace other than targetNS + + ##local - - any unqualified non-conflicting WFXML/attribute + + one or - - any non-conflicting WFXML/attribute from + more URI the listed namespaces + references + (space separated) + + ##targetNamespace or ##local may appear in the above list, to + refer to the targetNamespace of the enclosing + schema or an absent targetNamespace respectively + </xs:documentation> + </xs:annotation> + + <xs:simpleType name="namespaceList"> + <xs:annotation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + </xs:annotation> + <xs:union> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="##any" /> + <xs:enumeration value="##other" /> + </xs:restriction> + </xs:simpleType> + <xs:simpleType> + <xs:list> + <xs:simpleType> + <xs:union memberTypes="xs:anyURI"> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="##targetNamespace" /> + <xs:enumeration value="##local" /> + </xs:restriction> + </xs:simpleType> + </xs:union> + </xs:simpleType> + </xs:list> + </xs:simpleType> + </xs:union> + </xs:simpleType> + + <xs:element name="attribute" type="xs:topLevelAttribute" + id="attribute"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-attribute" /> + </xs:annotation> + </xs:element> + + <xs:complexType name="attributeGroup" abstract="true"> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:group ref="xs:attrDecls" /> + <xs:attributeGroup ref="xs:defRef" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="namedAttributeGroup"> + <xs:complexContent> + <xs:restriction base="xs:attributeGroup"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:group ref="xs:attrDecls" /> + </xs:sequence> + <xs:attribute name="name" use="required" type="xs:NCName" /> + <xs:attribute name="ref" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="attributeGroupRef"> + <xs:complexContent> + <xs:restriction base="xs:attributeGroup"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + </xs:sequence> + <xs:attribute name="ref" use="required" type="xs:QName" /> + <xs:attribute name="name" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:element name="attributeGroup" type="xs:namedAttributeGroup" + id="attributeGroup"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup" /> + </xs:annotation> + </xs:element> + + <xs:element name="include" id="include"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-include" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:attribute name="schemaLocation" type="xs:anyURI" + use="required" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="redefine" id="redefine"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-redefine" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:openAttrs"> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element ref="xs:annotation" /> + <xs:group ref="xs:redefinable" /> + </xs:choice> + <xs:attribute name="schemaLocation" type="xs:anyURI" + use="required" /> + <xs:attribute name="id" type="xs:ID" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="import" id="import"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-import" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:attribute name="namespace" type="xs:anyURI" /> + <xs:attribute name="schemaLocation" type="xs:anyURI" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="selector" id="selector"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-selector" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:attribute name="xpath" use="required"> + <xs:simpleType> + <xs:annotation> + <xs:documentation>A subset of XPath expressions for use + in selectors + </xs:documentation> + <xs:documentation>A utility type, not for public + use + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:token"> + <xs:annotation> + <xs:documentation>The following pattern is intended to + allow XPath + expressions per the following EBNF: + Selector ::= Path ( '|' Path )* + Path ::= ('.//')? Step ( '/' Step )* + Step ::= '.' | NameTest + NameTest ::= QName | '*' | NCName ':' '*' + child:: is also allowed + </xs:documentation> + </xs:annotation> + <xs:pattern + value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*"> + </xs:pattern> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="field" id="field"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-field" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:attribute name="xpath" use="required"> + <xs:simpleType> + <xs:annotation> + <xs:documentation>A subset of XPath expressions for use + in fields + </xs:documentation> + <xs:documentation>A utility type, not for public + use + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:token"> + <xs:annotation> + <xs:documentation>The following pattern is intended to + allow XPath + expressions per the same EBNF as for selector, + with the following change: + Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest ) + </xs:documentation> + </xs:annotation> + <xs:pattern + value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*"> + </xs:pattern> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:complexType name="keybase"> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:sequence> + <xs:element ref="xs:selector" /> + <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded" /> + </xs:sequence> + <xs:attribute name="name" type="xs:NCName" use="required" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:group name="identityConstraint"> + <xs:annotation> + <xs:documentation>The three kinds of identity constraints, all + with + type of or derived from 'keybase'. + </xs:documentation> + </xs:annotation> + <xs:choice> + <xs:element ref="xs:unique" /> + <xs:element ref="xs:key" /> + <xs:element ref="xs:keyref" /> + </xs:choice> + </xs:group> + + <xs:element name="unique" type="xs:keybase" id="unique"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-unique" /> + </xs:annotation> + </xs:element> + <xs:element name="key" type="xs:keybase" id="key"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key" /> + </xs:annotation> + </xs:element> + <xs:element name="keyref" id="keyref"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-keyref" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:keybase"> + <xs:attribute name="refer" type="xs:QName" use="required" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="notation" id="notation"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-notation" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:attribute name="name" type="xs:NCName" use="required" /> + <xs:attribute name="public" type="xs:public" /> + <xs:attribute name="system" type="xs:anyURI" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:simpleType name="public"> + <xs:annotation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + <xs:documentation> + A public identifier, per ISO 8879 + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:token" /> + </xs:simpleType> + + <xs:element name="appinfo" id="appinfo"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-appinfo" /> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:sequence minOccurs="0" maxOccurs="unbounded"> + <xs:any processContents="lax" /> + </xs:sequence> + <xs:attribute name="source" type="xs:anyURI" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:complexType> + </xs:element> + + <xs:element name="documentation" id="documentation"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-documentation" /> + </xs:annotation> + <xs:complexType mixed="true"> + <xs:sequence minOccurs="0" maxOccurs="unbounded"> + <xs:any processContents="lax" /> + </xs:sequence> + <xs:attribute name="source" type="xs:anyURI" /> + <xs:attribute ref="xml:lang" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:complexType> + </xs:element> + + <xs:element name="annotation" id="annotation"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-annotation" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="xs:openAttrs"> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element ref="xs:appinfo" /> + <xs:element ref="xs:documentation" /> + </xs:choice> + <xs:attribute name="id" type="xs:ID" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:annotation> + <xs:documentation> + notations for use within XML Schema schemas + </xs:documentation> + </xs:annotation> + + <xs:notation name="XMLSchemaStructures" public="structures" + system="http://www.w3.org/2000/08/XMLSchema.xsd" /> + <xs:notation name="XML" public="REC-xml-19980210" + system="http://www.w3.org/TR/1998/REC-xml-19980210" /> + + <xs:complexType name="anyType" mixed="true"> + <xs:annotation> + <xs:documentation> + Not the real urType, but as close an approximation as we can + get in the XML representation + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:any minOccurs="0" maxOccurs="unbounded" + processContents="lax" /> + </xs:sequence> + <xs:anyAttribute processContents="lax" /> + </xs:complexType> + + <xs:annotation> + <xs:documentation> + First the built-in primitive datatypes. These + definitions are for + information only, the real built-in definitions + are magic. + </xs:documentation> + + <xs:documentation> + For each built-in datatype in this schema (both + primitive and + derived) can be uniquely addressed via a URI + constructed + as follows: + 1) the base URI is the URI of the XML Schema namespace + 2) the fragment identifier is the name of the datatype + + For example, to + address the int datatype, the URI is: + + http://www.w3.org/2001/XMLSchema#int + + Additionally, each facet + definition element can be uniquely + addressed via a URI constructed + as follows: + 1) the base URI is the URI of the XML Schema namespace + 2) the fragment identifier is the name of the facet + + For example, to + address the maxInclusive facet, the URI is: + + http://www.w3.org/2001/XMLSchema#maxInclusive + + Additionally, each + facet usage in a built-in datatype definition + can be uniquely + addressed via a URI constructed as follows: + 1) the base URI is the URI of the XML Schema namespace + 2) the fragment identifier is the name of the datatype, followed + by a period (".") followed by the name of the facet + + For example, to + address the usage of the maxInclusive facet in + the definition of + int, the URI is: + + http://www.w3.org/2001/XMLSchema#int.maxInclusive + + </xs:documentation> + </xs:annotation> + + <xs:simpleType name="string" id="string"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="length" /> + <hfp:hasFacet name="minLength" /> + <hfp:hasFacet name="maxLength" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#string" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="preserve" id="string.preserve" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="boolean" id="boolean"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="finite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#boolean" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="boolean.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="float" id="float"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="total" /> + <hfp:hasProperty name="bounded" value="true" /> + <hfp:hasProperty name="cardinality" value="finite" /> + <hfp:hasProperty name="numeric" value="true" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#float" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="float.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="double" id="double"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="total" /> + <hfp:hasProperty name="bounded" value="true" /> + <hfp:hasProperty name="cardinality" value="finite" /> + <hfp:hasProperty name="numeric" value="true" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#double" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="double.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="decimal" id="decimal"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="totalDigits" /> + <hfp:hasFacet name="fractionDigits" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="total" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="true" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#decimal" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="decimal.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="duration" id="duration"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="partial" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#duration" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="duration.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="dateTime" id="dateTime"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="partial" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="dateTime.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="time" id="time"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="partial" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#time" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="time.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="date" id="date"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="partial" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#date" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="date.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="gYearMonth" id="gYearMonth"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="partial" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYearMonth" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="gYearMonth.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="gYear" id="gYear"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="partial" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYear" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="gYear.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="gMonthDay" id="gMonthDay"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="partial" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonthDay" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="gMonthDay.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="gDay" id="gDay"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="partial" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gDay" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="gDay.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="gMonth" id="gMonth"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="maxInclusive" /> + <hfp:hasFacet name="maxExclusive" /> + <hfp:hasFacet name="minInclusive" /> + <hfp:hasFacet name="minExclusive" /> + <hfp:hasProperty name="ordered" value="partial" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonth" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="gMonth.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="hexBinary" id="hexBinary"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="length" /> + <hfp:hasFacet name="minLength" /> + <hfp:hasFacet name="maxLength" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#binary" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="hexBinary.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="base64Binary" id="base64Binary"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="length" /> + <hfp:hasFacet name="minLength" /> + <hfp:hasFacet name="maxLength" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#base64Binary" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="base64Binary.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="anyURI" id="anyURI"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="length" /> + <hfp:hasFacet name="minLength" /> + <hfp:hasFacet name="maxLength" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#anyURI" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="anyURI.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="QName" id="QName"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="length" /> + <hfp:hasFacet name="minLength" /> + <hfp:hasFacet name="maxLength" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#QName" /> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="QName.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NOTATION" id="NOTATION"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="length" /> + <hfp:hasFacet name="minLength" /> + <hfp:hasFacet name="maxLength" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NOTATION" /> + <xs:documentation> + NOTATION cannot be used directly in a schema; + rather a type + must be derived from it by specifying at least one + enumeration + facet whose value is the name of a NOTATION declared + in the + schema. + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:anySimpleType"> + <xs:whiteSpace value="collapse" fixed="true" + id="NOTATION.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:annotation> + <xs:documentation> + Now the derived primitive types + </xs:documentation> + </xs:annotation> + + <xs:simpleType name="normalizedString" id="normalizedString"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#normalizedString" /> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:whiteSpace value="replace" id="normalizedString.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="token" id="token"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#token" /> + </xs:annotation> + <xs:restriction base="xs:normalizedString"> + <xs:whiteSpace value="collapse" id="token.whiteSpace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="language" id="language"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#language" /> + </xs:annotation> + <xs:restriction base="xs:token"> + <xs:pattern value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*" + id="language.pattern"> + <xs:annotation> + <xs:documentation source="http://www.ietf.org/rfc/rfc3066.txt"> + pattern specifies + the content of section 2.12 of XML 1.0e2 + and RFC 3066 + (Revised version of RFC 1766). + </xs:documentation> + </xs:annotation> + </xs:pattern> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="IDREFS" id="IDREFS"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="length" /> + <hfp:hasFacet name="minLength" /> + <hfp:hasFacet name="maxLength" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREFS" /> + </xs:annotation> + <xs:restriction> + <xs:simpleType> + <xs:list itemType="xs:IDREF" /> + </xs:simpleType> + <xs:minLength value="1" id="IDREFS.minLength" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ENTITIES" id="ENTITIES"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="length" /> + <hfp:hasFacet name="minLength" /> + <hfp:hasFacet name="maxLength" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITIES" /> + </xs:annotation> + <xs:restriction> + <xs:simpleType> + <xs:list itemType="xs:ENTITY" /> + </xs:simpleType> + <xs:minLength value="1" id="ENTITIES.minLength" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NMTOKEN" id="NMTOKEN"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN" /> + </xs:annotation> + <xs:restriction base="xs:token"> + <xs:pattern value="\c+" id="NMTOKEN.pattern"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Nmtoken"> + pattern matches + production 7 from the XML spec + </xs:documentation> + </xs:annotation> + </xs:pattern> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NMTOKENS" id="NMTOKENS"> + <xs:annotation> + <xs:appinfo> + <hfp:hasFacet name="length" /> + <hfp:hasFacet name="minLength" /> + <hfp:hasFacet name="maxLength" /> + <hfp:hasFacet name="enumeration" /> + <hfp:hasFacet name="whiteSpace" /> + <hfp:hasFacet name="pattern" /> + <hfp:hasProperty name="ordered" value="false" /> + <hfp:hasProperty name="bounded" value="false" /> + <hfp:hasProperty name="cardinality" value="countably infinite" /> + <hfp:hasProperty name="numeric" value="false" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS" /> + </xs:annotation> + <xs:restriction> + <xs:simpleType> + <xs:list itemType="xs:NMTOKEN" /> + </xs:simpleType> + <xs:minLength value="1" id="NMTOKENS.minLength" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="Name" id="Name"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#Name" /> + </xs:annotation> + <xs:restriction base="xs:token"> + <xs:pattern value="\i\c*" id="Name.pattern"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Name"> + pattern matches + production 5 from the XML spec + </xs:documentation> + </xs:annotation> + </xs:pattern> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="NCName" id="NCName"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NCName" /> + </xs:annotation> + <xs:restriction base="xs:Name"> + <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/REC-xml-names/#NT-NCName"> + pattern matches production 4 from the Namespaces in + XML spec + </xs:documentation> + </xs:annotation> + </xs:pattern> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="ID" id="ID"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ID" /> + </xs:annotation> + <xs:restriction base="xs:NCName" /> + </xs:simpleType> + + <xs:simpleType name="IDREF" id="IDREF"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREF" /> + </xs:annotation> + <xs:restriction base="xs:NCName" /> + </xs:simpleType> + + <xs:simpleType name="ENTITY" id="ENTITY"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITY" /> + </xs:annotation> + <xs:restriction base="xs:NCName" /> + </xs:simpleType> + + <xs:simpleType name="integer" id="integer"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#integer" /> + </xs:annotation> + <xs:restriction base="xs:decimal"> + <xs:fractionDigits value="0" fixed="true" + id="integer.fractionDigits" /> + <xs:pattern value="[\-+]?[0-9]+" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger" /> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:maxInclusive value="0" + id="nonPositiveInteger.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="negativeInteger" id="negativeInteger"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#negativeInteger" /> + </xs:annotation> + <xs:restriction base="xs:nonPositiveInteger"> + <xs:maxInclusive value="-1" + id="negativeInteger.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="long" id="long"> + <xs:annotation> + <xs:appinfo> + <hfp:hasProperty name="bounded" value="true" /> + <hfp:hasProperty name="cardinality" value="finite" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#long" /> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="-9223372036854775808" id="long.minInclusive" /> + <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="int" id="int"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#int" /> + </xs:annotation> + <xs:restriction base="xs:long"> + <xs:minInclusive value="-2147483648" id="int.minInclusive" /> + <xs:maxInclusive value="2147483647" id="int.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="short" id="short"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#short" /> + </xs:annotation> + <xs:restriction base="xs:int"> + <xs:minInclusive value="-32768" id="short.minInclusive" /> + <xs:maxInclusive value="32767" id="short.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="byte" id="byte"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#byte" /> + </xs:annotation> + <xs:restriction base="xs:short"> + <xs:minInclusive value="-128" id="byte.minInclusive" /> + <xs:maxInclusive value="127" id="byte.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger" /> + </xs:annotation> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="0" + id="nonNegativeInteger.minInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="unsignedLong" id="unsignedLong"> + <xs:annotation> + <xs:appinfo> + <hfp:hasProperty name="bounded" value="true" /> + <hfp:hasProperty name="cardinality" value="finite" /> + </xs:appinfo> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedLong" /> + </xs:annotation> + <xs:restriction base="xs:nonNegativeInteger"> + <xs:maxInclusive value="18446744073709551615" id="unsignedLong.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="unsignedInt" id="unsignedInt"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedInt" /> + </xs:annotation> + <xs:restriction base="xs:unsignedLong"> + <xs:maxInclusive value="4294967295" id="unsignedInt.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="unsignedShort" id="unsignedShort"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#unsignedShort" /> + </xs:annotation> + <xs:restriction base="xs:unsignedInt"> + <xs:maxInclusive value="65535" + id="unsignedShort.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="unsignedByte" id="unsignedByte"> + <xs:annotation> + <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedByte" /> + </xs:annotation> + <xs:restriction base="xs:unsignedShort"> + <xs:maxInclusive value="255" id="unsignedByte.maxInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="positiveInteger" id="positiveInteger"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#positiveInteger" /> + </xs:annotation> + <xs:restriction base="xs:nonNegativeInteger"> + <xs:minInclusive value="1" + id="positiveInteger.minInclusive" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="derivationControl"> + <xs:annotation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + </xs:annotation> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="substitution" /> + <xs:enumeration value="extension" /> + <xs:enumeration value="restriction" /> + <xs:enumeration value="list" /> + <xs:enumeration value="union" /> + </xs:restriction> + </xs:simpleType> + + <xs:group name="simpleDerivation"> + <xs:choice> + <xs:element ref="xs:restriction" /> + <xs:element ref="xs:list" /> + <xs:element ref="xs:union" /> + </xs:choice> + </xs:group> + + <xs:simpleType name="simpleDerivationSet"> + <xs:annotation> + <xs:documentation> + #all or (possibly empty) subset of {restriction, union, list} + </xs:documentation> + <xs:documentation> + A utility type, not for public use + </xs:documentation> + </xs:annotation> + <xs:union> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="#all" /> + </xs:restriction> + </xs:simpleType> + <xs:simpleType> + <xs:list> + <xs:simpleType> + <xs:restriction base="xs:derivationControl"> + <xs:enumeration value="list" /> + <xs:enumeration value="union" /> + <xs:enumeration value="restriction" /> + </xs:restriction> + </xs:simpleType> + </xs:list> + </xs:simpleType> + </xs:union> + </xs:simpleType> + + <xs:complexType name="simpleType" abstract="true"> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:group ref="xs:simpleDerivation" /> + <xs:attribute name="final" type="xs:simpleDerivationSet" /> + <xs:attribute name="name" type="xs:NCName"> + <xs:annotation> + <xs:documentation> + Can be restricted to required or forbidden + </xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="topLevelSimpleType"> + <xs:complexContent> + <xs:restriction base="xs:simpleType"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:group ref="xs:simpleDerivation" /> + </xs:sequence> + <xs:attribute name="name" use="required" type="xs:NCName"> + <xs:annotation> + <xs:documentation> + Required at the top level + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="localSimpleType"> + <xs:complexContent> + <xs:restriction base="xs:simpleType"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + <xs:group ref="xs:simpleDerivation" /> + </xs:sequence> + <xs:attribute name="name" use="prohibited"> + <xs:annotation> + <xs:documentation> + Forbidden when nested + </xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="final" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:element name="simpleType" type="xs:topLevelSimpleType" + id="simpleType"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-simpleType" /> + </xs:annotation> + </xs:element> + + <xs:group name="facets"> + <xs:annotation> + <xs:documentation> + We should use a substitution group for facets, but + that's ruled out because it would allow users to + add their own, which we're not ready for yet. + </xs:documentation> + </xs:annotation> + <xs:choice> + <xs:element ref="xs:minExclusive" /> + <xs:element ref="xs:minInclusive" /> + <xs:element ref="xs:maxExclusive" /> + <xs:element ref="xs:maxInclusive" /> + <xs:element ref="xs:totalDigits" /> + <xs:element ref="xs:fractionDigits" /> + <xs:element ref="xs:length" /> + <xs:element ref="xs:minLength" /> + <xs:element ref="xs:maxLength" /> + <xs:element ref="xs:enumeration" /> + <xs:element ref="xs:whiteSpace" /> + <xs:element ref="xs:pattern" /> + </xs:choice> + </xs:group> + + <xs:group name="simpleRestrictionModel"> + <xs:sequence> + <xs:element name="simpleType" type="xs:localSimpleType" + minOccurs="0" /> + <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded" /> + </xs:sequence> + </xs:group> + + <xs:element name="restriction" id="restriction"> + <xs:complexType> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-restriction"> + base attribute and simpleType child are mutually + exclusive, but one or other is required + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:group ref="xs:simpleRestrictionModel" /> + <xs:attribute name="base" type="xs:QName" use="optional" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="list" id="list"> + <xs:complexType> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-list"> + itemType attribute and simpleType child are mutually + exclusive, but one or other is required + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:sequence> + <xs:element name="simpleType" type="xs:localSimpleType" + minOccurs="0" /> + </xs:sequence> + <xs:attribute name="itemType" type="xs:QName" + use="optional" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="union" id="union"> + <xs:complexType> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-union"> + memberTypes attribute must be non-empty or there must + be + at least one simpleType child + </xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:sequence> + <xs:element name="simpleType" type="xs:localSimpleType" + minOccurs="0" maxOccurs="unbounded" /> + </xs:sequence> + <xs:attribute name="memberTypes" use="optional"> + <xs:simpleType> + <xs:list itemType="xs:QName" /> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:complexType name="facet"> + <xs:complexContent> + <xs:extension base="xs:annotated"> + <xs:attribute name="value" use="required" /> + <xs:attribute name="fixed" type="xs:boolean" use="optional" + default="false" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="noFixedFacet"> + <xs:complexContent> + <xs:restriction base="xs:facet"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + </xs:sequence> + <xs:attribute name="fixed" use="prohibited" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:element name="minExclusive" id="minExclusive" type="xs:facet"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive" /> + </xs:annotation> + </xs:element> + <xs:element name="minInclusive" id="minInclusive" type="xs:facet"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive" /> + </xs:annotation> + </xs:element> + + <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive" /> + </xs:annotation> + </xs:element> + <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive" /> + </xs:annotation> + </xs:element> + + <xs:complexType name="numFacet"> + <xs:complexContent> + <xs:restriction base="xs:facet"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + </xs:sequence> + <xs:attribute name="value" type="xs:nonNegativeInteger" + use="required" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + + <xs:element name="totalDigits" id="totalDigits"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:restriction base="xs:numFacet"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + </xs:sequence> + <xs:attribute name="value" type="xs:positiveInteger" + use="required" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + </xs:element> + <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits" /> + </xs:annotation> + </xs:element> + + <xs:element name="length" id="length" type="xs:numFacet"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-length" /> + </xs:annotation> + </xs:element> + <xs:element name="minLength" id="minLength" type="xs:numFacet"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-minLength" /> + </xs:annotation> + </xs:element> + <xs:element name="maxLength" id="maxLength" type="xs:numFacet"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-maxLength" /> + </xs:annotation> + </xs:element> + + <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-enumeration" /> + </xs:annotation> + </xs:element> + + <xs:element name="whiteSpace" id="whiteSpace"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:restriction base="xs:facet"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + </xs:sequence> + <xs:attribute name="value" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="preserve" /> + <xs:enumeration value="replace" /> + <xs:enumeration value="collapse" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="pattern" id="pattern"> + <xs:annotation> + <xs:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-pattern" /> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:restriction base="xs:noFixedFacet"> + <xs:sequence> + <xs:element ref="xs:annotation" minOccurs="0" /> + </xs:sequence> + <xs:attribute name="value" type="xs:string" use="required" /> + <xs:anyAttribute namespace="##other" + processContents="lax" /> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + </xs:element> + +</xsd:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/XMLSchema_for_DFDL.xsd b/DFDL/attribution/org/apache/daffodil/xsd/XMLSchema_for_DFDL.xsd new file mode 100644 index 0000000000000000000000000000000000000000..0d070b1a34bcc21c8f32ab52829980b7116503f6 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/XMLSchema_for_DFDL.xsd @@ -0,0 +1,1801 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!-- + Copyright © 2018 World Wide Web Consortium, (Massachusetts + Institute of Technology, European Research Consortium for Informatics and + Mathematics, Keio University, Beihang). All Rights Reserved. This work is + distributed under the W3C® Software License [1] in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +--> + +<!-- + +To get enforcement of the XML Schema Subset for DFDL, but at the +same time let users use the original XML Schema namespace URI, we +give this schema the XML Schema URI as its namespace, and we use +this to validate when we load a DFDL Schema. + + --> +<!-- XML Schema schema for XML Schemas: Part 1: Structures --> +<!-- Note this schema is NOT the normative structures schema. --> +<!-- The prose copy in the structures REC is the normative --> +<!-- version (which shouldn't differ from this one except for --> +<!-- this comment and entity expansions, but just in case --> + +<xsd:schema + targetNamespace="http://www.w3.org/2001/XMLSchema" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + blockDefault="#all" elementFormDefault="qualified" version="1.0" + xml:lang="EN" xmlns:xml="http://www.w3.org/XML/1998/namespace" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"> + <!-- Use the real URI for this, not the subset URI + "http://www.w3.org/2001/XMLSchema" + --> + + <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/"/> + + <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions"/> + + <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int"/> + + <xsd:annotation> + <xsd:documentation> + Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp + Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp + </xsd:documentation> + </xsd:annotation> + + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html"> + The schema corresponding to this document is normative, + with respect to the syntactic constraints it expresses in the + XML Schema language. The documentation (within <documentation> + elements) + below, is not normative, but rather highlights important aspects of + the W3C Recommendation of which this is a part + </xsd:documentation> + </xsd:annotation> + + <xsd:annotation> + <xsd:documentation> + The simpleType element and all of its members are defined + towards the end + of this schema document + </xsd:documentation> + </xsd:annotation> + + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="./xml.xsd"> + <xsd:annotation> + <xsd:documentation> + Get access to the xml: attribute groups for xml:lang + as declared on 'schema' and 'documentation' below + </xsd:documentation> + </xsd:annotation> + </xsd:import> + + <xsd:complexType name="openAttrs"> + <xsd:annotation> + <xsd:documentation> + This type is extended by almost all schema types + to allow attributes from other namespaces to be + added to user schemas. + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:restriction base="xsd:anyType"> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="annotated"> + <xsd:annotation> + <xsd:documentation> + This type is extended by all types which allow annotation + other than <schema> itself + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:extension base="xsd:openAttrs"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="id" type="xsd:ID" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:group name="schemaTop"> + <xsd:annotation> + <xsd:documentation> + This group is for the + elements which occur freely at the top level of schemas. + All of their types are based on the "annotated" type by extension. + </xsd:documentation> + </xsd:annotation> + <xsd:choice> + <xsd:group ref="xsd:redefinable" /> + <xsd:element ref="xsd:element" /> + <!-- <xsd:element ref="xsd:attribute"/> --> + <!-- <xsd:element ref="xsd:notation"/> --> + </xsd:choice> + </xsd:group> + + <xsd:group name="redefinable"> + <xsd:annotation> + <xsd:documentation> + This group is for the + elements which can self-redefine (see <redefine> below). + </xsd:documentation> + </xsd:annotation> + <xsd:choice> + <xsd:element ref="xsd:simpleType" /> + <xsd:element ref="xsd:complexType" /> + <xsd:element ref="xsd:group" /> + <!-- <xsd:element ref="xsd:attributeGroup"/> --> + </xsd:choice> + </xsd:group> + + <xsd:simpleType name="formChoice"> + <xsd:annotation> + <xsd:documentation> + A utility type, not for public use + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="qualified" /> + <xsd:enumeration value="unqualified" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="reducedDerivationControl"> + <xsd:annotation> + <xsd:documentation> + A utility type, not for public use + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:derivationControl"> + <!-- <xsd:enumeration value="extension"/> --> + <xsd:enumeration value="restriction" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="derivationSet"> + <xsd:annotation> + <xsd:documentation> + A utility type, not for public use + </xsd:documentation> + <xsd:documentation> + #all or (possibly empty) subset of {extension, restriction} + </xsd:documentation> + </xsd:annotation> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="#all" /> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:list itemType="xsd:reducedDerivationControl" /> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:simpleType name="typeDerivationControl"> + <xsd:annotation> + <xsd:documentation> + A utility type, not for public use + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:derivationControl"> + <!-- <xsd:enumeration value="extension"/> --> + <xsd:enumeration value="restriction" /> + <!-- <xsd:enumeration value="list"/> --> + <xsd:enumeration value="union" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="fullDerivationSet"> + <xsd:annotation> + <xsd:documentation> + A utility type, not for public use + </xsd:documentation> + <xsd:documentation> + #all or (possibly empty) subset of {extension, restriction, list, union} + </xsd:documentation> + </xsd:annotation> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="#all" /> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:list itemType="xsd:typeDerivationControl" /> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:element name="schema" id="schema"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-schema" /> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:openAttrs"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="xsd:include" /> + <xsd:element ref="xsd:import" /> + <!-- <xsd:element ref="xsd:redefine"/> --> + <xsd:element ref="xsd:annotation" /> + </xsd:choice> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:group ref="xsd:schemaTop" /> + <xsd:element ref="xsd:annotation" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:sequence> + <xsd:attribute name="targetNamespace" type="xsd:anyURI" /> + <xsd:attribute name="version" type="xsd:token" /> + <!-- <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" + use="optional" default=""/> + <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" + default=""/> + --> + <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" + use="optional" default="unqualified" /> + <xsd:attribute name="elementFormDefault" type="xsd:formChoice" + use="optional" default="unqualified" /> + <xsd:attribute name="id" type="xsd:ID" /> + <xsd:attribute ref="xml:lang" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:key name="element"> + <xsd:selector xpath="xsd:element" /> + <xsd:field xpath="@name" /> + </xsd:key> + + <xsd:key name="attribute"> + <xsd:selector xpath="xsd:attribute" /> + <xsd:field xpath="@name" /> + </xsd:key> + + <xsd:key name="type"> + <xsd:selector xpath="xsd:complexType|xsd:simpleType" /> + <xsd:field xpath="@name" /> + </xsd:key> + + <xsd:key name="group"> + <xsd:selector xpath="xsd:group" /> + <xsd:field xpath="@name" /> + </xsd:key> + + <xsd:key name="attributeGroup"> + <xsd:selector xpath="xsd:attributeGroup" /> + <xsd:field xpath="@name" /> + </xsd:key> + + <!-- not in DFDL v1.0 + <xsd:key name="notation"> + <xsd:selector xpath="xsd:notation"/> + <xsd:field xpath="@name"/> + </xsd:key> + + + <xsd:key name="identityConstraint"> + <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/> + <xsd:field xpath="@name"/> + </xsd:key> + --> + </xsd:element> + + <xsd:simpleType name="allNNI"> + <xsd:annotation> + <xsd:documentation> + for maxOccurs + </xsd:documentation> + </xsd:annotation> + <xsd:union memberTypes="xsd:nonNegativeInteger"> + <xsd:simpleType> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="unbounded" /> + </xsd:restriction> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:attributeGroup name="occurs"> + <xsd:annotation> + <xsd:documentation> + for all particles + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" + use="optional" default="1" /> + <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" + default="1" /> + </xsd:attributeGroup> + + <xsd:attributeGroup name="defRef"> + <xsd:annotation> + <xsd:documentation> + for element, group and attributeGroup, + which both define and reference + </xsd:documentation> + </xsd:annotation> + <xsd:attribute name="name" type="xsd:NCName" /> + <xsd:attribute name="ref" type="xsd:QName" /> + </xsd:attributeGroup> + + <xsd:group name="typeDefParticle"> + <xsd:annotation> + <xsd:documentation> + 'complexType' uses this + </xsd:documentation> + </xsd:annotation> + <xsd:choice> + <xsd:element name="group" type="xsd:groupRef" /> + <!-- <xsd:element ref="xsd:all"/> --> + <xsd:element ref="xsd:choice" /> + <xsd:element ref="xsd:sequence" /> + </xsd:choice> + </xsd:group> + + + + <xsd:group name="nestedParticle"> + <xsd:choice> + <xsd:element name="element" type="xsd:localElement" /> + <xsd:element name="group" type="xsd:groupRef" /> + <xsd:element ref="xsd:choice" /> + <xsd:element ref="xsd:sequence" /> + <!-- <xsd:element ref="xsd:any"/> --> + </xsd:choice> + </xsd:group> + + <xsd:group name="particle"> + <xsd:choice> + <xsd:element name="element" type="xsd:localElement" /> + <xsd:element name="group" type="xsd:groupRef" /> + <!-- <xsd:element ref="xsd:all"/> --> + <xsd:element ref="xsd:choice" /> + <xsd:element ref="xsd:sequence" /> + <!-- <xsd:element ref="xsd:any"/> --> + </xsd:choice> + </xsd:group> + + <!-- No attributes in DFDL v1.0 + <xsd:complexType name="attribute"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:sequence> + <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/> + </xsd:sequence> + <xsd:attributeGroup ref="xsd:defRef"/> + <xsd:attribute name="type" type="xsd:QName"/> + <xsd:attribute name="use" use="optional" default="optional"> + <xsd:simpleType> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="prohibited"/> + <xsd:enumeration value="optional"/> + <xsd:enumeration value="required"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="default" type="xsd:string"/> + <xsd:attribute name="fixed" type="xsd:string"/> + <xsd:attribute name="form" type="xsd:formChoice"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="topLevelAttribute"> + <xsd:complexContent> + <xsd:restriction base="xsd:attribute"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0"/> + <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/> + </xsd:sequence> + <xsd:attribute name="ref" use="prohibited"/> + <xsd:attribute name="form" use="prohibited"/> + <xsd:attribute name="use" use="prohibited"/> + <xsd:attribute name="name" use="required" type="xsd:NCName"/> + <xsd:attributeGroup ref="xsd:anyOther"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + --> + + <!-- No attribute decls of any sort in DFDL v1.0 + <xsd:group name="attrDecls"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element name="attribute" type="xsd:attribute"/> + <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/> + </xsd:choice> + <xsd:element ref="xsd:anyAttribute" minOccurs="0"/> + </xsd:sequence> + </xsd:group> + --> + <!-- + <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/> + </xsd:annotation> + </xsd:element> + --> + <xsd:group name="complexTypeModel"> + <xsd:choice> + <!-- <xsd:element ref="xsd:simpleContent"/> Not DFDL v1.0 --> + <!-- <xsd:element ref="xsd:complexContent"/> Not DFDL v1.0 --> + <xsd:sequence> + <xsd:annotation> + <xsd:documentation> + This branch is short for + <complexContent> + <restriction base="xsd:anyType"> + ... + </restriction> + </complexContent></xsd:documentation> + </xsd:annotation> + <xsd:group ref="xsd:typeDefParticle" minOccurs="0" /> + <!-- <xsd:group ref="xsd:attrDecls"/> --> <!-- no attributes in DFDL --> + </xsd:sequence> + </xsd:choice> + </xsd:group> + + <xsd:complexType name="complexType" abstract="true"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:group ref="xsd:complexTypeModel" /> + <xsd:attribute name="name" type="xsd:NCName"> + <xsd:annotation> + <xsd:documentation> + Will be restricted to required or forbidden + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <!-- No type derivation (for complex types in DFDL v1.0 + <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false"> + <xsd:annotation> + <xsd:documentation> + Not allowed if simpleContent child is chosen. + May be overriden by setting on complexContent child.</xsd:documentation> + </xsd:annotation> + </xsd:attribute> + --> + <!-- none of these make sense in DFDL v1.0. Changed to "prohibited" --> + <xsd:attribute name="abstract" type="xsd:boolean" + use="prohibited" /> <!-- default="false" --> + <xsd:attribute name="final" type="xsd:derivationSet" + use="prohibited" /> + <xsd:attribute name="block" type="xsd:derivationSet" + use="prohibited" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + + <!-- + <xsd:complexType name="restrictionType"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:sequence> + <xsd:choice minOccurs="0"> + <xsd:group ref="xsd:typeDefParticle"/> + <xsd:group ref="xsd:simpleRestrictionModel"/> + </xsd:choice> + <xsd:group ref="xsd:attrDecls"/> + </xsd:sequence> + <xsd:attribute name="base" type="xsd:QName" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + + + <xsd:complexType name="extensionType"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:sequence> + <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/> + <xsd:group ref="xsd:attrDecls"/> + </xsd:sequence> + <xsd:attribute name="base" type="xsd:QName" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + --> + + + <!-- + <xsd:complexType name="simpleExtensionType"> + <xsd:complexContent> + <xsd:restriction base="xsd:extensionType"> + <xsd:sequence> + <xsd:annotation> + <xsd:documentation> + No typeDefParticle group reference</xsd:documentation> + </xsd:annotation> + <xsd:element ref="xsd:annotation" minOccurs="0"/> + <xsd:group ref="xsd:attrDecls"/> + </xsd:sequence> + <xsd:attributeGroup ref="xsd:anyOther"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + + <xsd:element name="simpleContent" id="simpleContent"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:choice> + <xsd:element name="restriction" type="xsd:simpleRestrictionType"/> + <xsd:element name="extension" type="xsd:simpleExtensionType"/> + </xsd:choice> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + --> + + <xsd:attributeGroup name="anyOther"> + <!-- + IBM's DFDL Schemas have ibm-specific attributes on them that we + need to tolerate. Users may want to decorate their DFDL schemas with + other non-native and non-DFDL attributes and annotation sub-elements. + + The default XSD behavior (commented out below) is to allow any additional + attributes on a schema by performing lax validation on anything not in the + XSD namespace. + + The problem: since DFDL short form properties are not in the XSD namespace, + they are not validated. This means common typographical errors or forgetting + the dfdl: prefix are often not caught. + + So instead, we reference an attributeGroup that has the same anyAttribute line, + but is in a schema with a dfdl target namespace. This means we will perform lax + validation for attributes not in the dfdl namespace, but all dfdl properties + will be strictly validated. + --> + <!-- <xsd:anyAttribute namespace="##other" processContents="lax"/> --> + <xsd:attributeGroup ref="dfdl:anyOther" /> + </xsd:attributeGroup> + + <xsd:complexType name="topLevelComplexType"> + <xsd:complexContent> + <xsd:restriction base="xsd:complexType"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:group ref="xsd:complexTypeModel" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:NCName" use="required" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="localComplexType"> + <xsd:complexContent> + <xsd:restriction base="xsd:complexType"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:group ref="xsd:complexTypeModel" /> + </xsd:sequence> + <xsd:attribute name="name" use="prohibited" /> + <xsd:attribute name="abstract" use="prohibited" /> + <xsd:attribute name="final" use="prohibited" /> + <xsd:attribute name="block" use="prohibited" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + + <!-- + <xsd:complexType name="complexRestrictionType"> + <xsd:complexContent> + <xsd:restriction base="xsd:restrictionType"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0"/> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>This choice is added simply to + make this a valid restriction per the REC</xsd:documentation> + </xsd:annotation> + <xsd:group ref="xsd:typeDefParticle"/> + </xsd:choice> + <xsd:group ref="xsd:attrDecls"/> + </xsd:sequence> + <xsd:attributeGroup ref="xsd:anyOther"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + --> + + <!-- + <xsd:element name="complexContent" id="complexContent"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + + <xsd:choice> + <xsd:element name="restriction" type="xsd:complexRestrictionType"/> + <xsd:element name="extension" type="xsd:extensionType"/> + </xsd:choice> + + No mixed content in DFDL v1.0 + <xsd:attribute name="mixed" type="xsd:boolean"> + <xsd:annotation> + <xsd:documentation> + Overrides any setting on complexType parent.</xsd:documentation> + </xsd:annotation> + </xsd:attribute> + + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + --> + <!-- + <xsd:complexType name="simpleRestrictionType"> + <xsd:complexContent> + <xsd:restriction base="xsd:restrictionType"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0"/> + <xsd:choice minOccurs="0"> + <xsd:annotation> + <xsd:documentation>This choice is added simply to + make this a valid restriction per the REC</xsd:documentation> + </xsd:annotation> + <xsd:group ref="xsd:simpleRestrictionModel"/> + </xsd:choice> + <xsd:group ref="xsd:attrDecls"/> + </xsd:sequence> + <xsd:attributeGroup ref="xsd:anyOther"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + --> + + <xsd:element name="complexType" type="xsd:topLevelComplexType" + id="complexType"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-complexType" /> + </xsd:annotation> + </xsd:element> + + <xsd:simpleType name="__blockSet"> + <xsd:annotation> + <xsd:documentation> + A utility type, not for public use + </xsd:documentation> + <xsd:documentation> + #all or (possibly empty) subset of {substitution, extension, + restriction} + </xsd:documentation> + </xsd:annotation> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="#all" /> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:list> + <xsd:simpleType> + <xsd:restriction base="xsd:derivationControl"> + <!-- <xsd:enumeration value="extension"/> --> + <xsd:enumeration value="restriction" /> + <!-- <xsd:enumeration value="substitution"/> --> + </xsd:restriction> + </xsd:simpleType> + </xsd:list> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:complexType name="element" abstract="true"> + <xsd:annotation> + <xsd:documentation> + The element element can be used either + at the top level to define an element-type binding globally, + or within a content model to either reference a globally-defined + element or type or declare an element-type binding locally. + The ref form is not allowed at the top level. + </xsd:documentation> + </xsd:annotation> + + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:sequence> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="simpleType" type="xsd:localSimpleType" /> + <xsd:element name="complexType" type="xsd:localComplexType" /> + </xsd:choice> + <!-- <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/> + Not in DFDL v1.0 --> + </xsd:sequence> + <xsd:attributeGroup ref="xsd:defRef" /> + <xsd:attribute name="type" type="xsd:QName" /> + <!-- <xsd:attribute name="substitutionGroup" type="xsd:QName"/> Not + in DFDL v1.0 --> + <xsd:attributeGroup ref="xsd:occurs" /> + <xsd:attribute name="default" type="xsd:string" /> + <xsd:attribute name="fixed" type="xsd:string" /> + <!-- remove default="false" because Xerces is inserting that + as part of its parsing, and that ends up being incorrect since + element references cannot have nillable --> + <xsd:attribute name="nillable" type="xsd:boolean" /> + <!-- Not in DFDL v1.0 + <xsd:attribute name="abstract" type="xsd:boolean" use="optional" + default="false"/> + <xsd:attribute name="final" type="xsd:derivationSet"/> + <xsd:attribute name="block" type="xsd:blockSet"/> + <xsd:attribute name="form" type="xsd:formChoice"/> + --> + <!-- + Include short-form DFDL Attributes. + --> + <xsd:attributeGroup ref="dfdl:BaseAGQualified" /> + <xsd:attributeGroup ref="dfdl:CommonAGQualified" /> + <xsd:attributeGroup ref="dfdl:AlignmentAGQualified" /> + <xsd:attributeGroup ref="dfdl:MarkupAGQualified" /> + <xsd:attributeGroup ref="dfdl:ElementAGQualified" /> + + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="topLevelElement"> + <xsd:complexContent> + <xsd:restriction base="xsd:element"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:choice minOccurs="0"> + <xsd:element name="simpleType" type="xsd:localSimpleType" /> + <xsd:element name="complexType" type="xsd:localComplexType" /> + </xsd:choice> + <!-- <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/> + Not in DFDL v1.0 --> + </xsd:sequence> + <xsd:attribute name="ref" use="prohibited" /> + <xsd:attribute name="form" use="prohibited" /> + <xsd:attribute name="minOccurs" use="prohibited" /> + <xsd:attribute name="maxOccurs" use="prohibited" /> + <xsd:attribute name="name" use="required" type="xsd:NCName" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="localElement"> + <xsd:complexContent> + <xsd:restriction base="xsd:element"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:choice minOccurs="0"> + <xsd:element name="simpleType" type="xsd:localSimpleType" /> + <xsd:element name="complexType" type="xsd:localComplexType" /> + </xsd:choice> + <!-- <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/> + Not in DFDL v1.0 --> + </xsd:sequence> + <xsd:attribute name="substitutionGroup" use="prohibited" /> + <xsd:attribute name="final" use="prohibited" /> + <xsd:attribute name="abstract" use="prohibited" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="element" type="xsd:topLevelElement" id="element"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-element" /> + </xsd:annotation> + </xsd:element> + + <xsd:complexType name="group" abstract="true"> + <xsd:annotation> + <xsd:documentation> + group type for explicit groups, named top-level groups and + group references + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded" /> + <xsd:attributeGroup ref="xsd:defRef" /> + <!-- No Occurs except on elements in DFDL v1.0 + <xsd:attributeGroup ref="xsd:occurs"/> + --> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="realGroup"> + <xsd:complexContent> + <xsd:restriction base="xsd:group"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element ref="xsd:choice" /> + <xsd:element ref="xsd:sequence" /> + </xsd:choice> + </xsd:sequence> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="namedGroup"> + <xsd:complexContent> + <xsd:extension base="xsd:realGroup"> + <!-- <xsd:attribute name="name" use="required" type="xsd:NCName"/> --> + <xsd:attribute name="ref" use="prohibited" /> + <xsd:attribute name="minOccurs" use="prohibited" /> + <xsd:attribute name="maxOccurs" use="prohibited" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="groupRef"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:attribute name="ref" use="required" type="xsd:QName" /> + <xsd:attribute name="name" use="prohibited" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + + <!-- DFDL --> + + <xsd:attributeGroup ref="dfdl:BaseAGQualified" /> + <xsd:attributeGroup ref="dfdl:CommonAGQualified" /> + <xsd:attributeGroup ref="dfdl:AlignmentAGQualified" /> + <xsd:attributeGroup ref="dfdl:MarkupAGQualified" /> + <xsd:attributeGroup ref="dfdl:GroupAGQualified" /> + + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="explicitGroup"> + <xsd:annotation> + <xsd:documentation> + group type for the three kinds of group + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:group ref="xsd:nestedParticle" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attributeGroup ref="xsd:anyOther" /> + + <!-- DFDL attributes for short form --> + <xsd:attributeGroup ref="dfdl:BaseAGQualified" /> + <xsd:attributeGroup ref="dfdl:CommonAGQualified" /> + <xsd:attributeGroup ref="dfdl:AlignmentAGQualified" /> + <xsd:attributeGroup ref="dfdl:MarkupAGQualified" /> + <xsd:attributeGroup ref="dfdl:GroupCommonAGQualified" /> + </xsd:complexType> + + <xsd:complexType name="simpleExplicitGroup"> + <xsd:complexContent> + <xsd:restriction base="xsd:explicitGroup"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:group ref="xsd:nestedParticle" minOccurs="0" + maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="minOccurs" use="prohibited" /> + <xsd:attribute name="maxOccurs" use="prohibited" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <!-- No ALL groups in DFDL v1.0 + <xsd:group name="allModel"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>This choice with min/max is here to + avoid a pblm with the Elt:All/Choice/Seq + Particle derivation constraint</xsd:documentation> + </xsd:annotation> + <xsd:element name="element" type="xsd:narrowMaxMin"/> + </xsd:choice> + </xsd:sequence> + </xsd:group> + --> + + <xsd:complexType name="narrowMaxMin"> + <xsd:annotation> + <xsd:documentation>restricted max/min</xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:restriction base="xsd:localElement"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:choice minOccurs="0"> + <xsd:element name="simpleType" type="xsd:localSimpleType" /> + <xsd:element name="complexType" type="xsd:localComplexType" /> + </xsd:choice> + <!-- <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/> + Not in DFDL v1.0 --> + </xsd:sequence> + <xsd:attribute name="minOccurs" use="optional" + default="1"> + <xsd:simpleType> + <xsd:restriction base="xsd:nonNegativeInteger"> + <xsd:enumeration value="0" /> + <xsd:enumeration value="1" /> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attribute name="maxOccurs" use="optional" + default="1"> + <xsd:simpleType> + <xsd:restriction base="xsd:allNNI"> + <xsd:enumeration value="0" /> + <xsd:enumeration value="1" /> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="explicitChoiceGroup"> + <xsd:complexContent> + <xsd:extension base="xsd:explicitGroup"> + <!-- DFDL --> + <xsd:attributeGroup ref="dfdl:ChoiceAGQualified" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="choice" type="xsd:explicitChoiceGroup" + id="choice"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-choice" /> + </xsd:annotation> + </xsd:element> + + <xsd:complexType name="explicitSequenceGroup"> + <xsd:complexContent> + <xsd:extension base="xsd:explicitGroup"> + <!-- DFDL --> + <xsd:attributeGroup ref="dfdl:SequenceAGQualified" /> + <xsd:attributeGroup ref="dfdl:SeparatorAGQualified" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="sequence" type="xsd:explicitSequenceGroup" + id="sequence"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-sequence" /> + </xsd:annotation> + </xsd:element> + + <xsd:element name="group" type="xsd:namedGroup" id="group"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-group" /> + </xsd:annotation> + </xsd:element> + + <!-- <xsd:complexType name="wildcard"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" + default="##any"/> + --> + <!-- Chapter 21: processContents not allowed in v1 + <xsd:attribute name="processContents" use="optional" default="strict"> + <xsd:simpleType> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="skip"/> + <xsd:enumeration value="lax"/> + <xsd:enumeration value="strict"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + --> <!-- + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + --> + <!-- No ANY wildcards in DFDL v1.0 + <xsd:element name="any" id="any"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:wildcard"> + <xsd:attributeGroup ref="xsd:occurs"/> + <xsd:attributeGroup ref="xsd:anyOther"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + --> + <!-- + <xsd:annotation> + <xsd:documentation> + simple type for the value of the 'namespace' attr of + 'any' and 'anyAttribute'</xsd:documentation> + </xsd:annotation> + <xsd:annotation> + <xsd:documentation> + Value is + ##any - - any non-conflicting WFXML/attribute at all + + ##other - - any non-conflicting WFXML/attribute from + namespace other than targetNS + + ##local - - any unqualified non-conflicting WFXML/attribute + + one or - - any non-conflicting WFXML/attribute from + more URI the listed namespaces + references + (space separated) + + ##targetNamespace or ##local may appear in the above list, to + refer to the targetNamespace of the enclosing + schema or an absent targetNamespace respectively</xsd:documentation> + </xsd:annotation> + + <xsd:simpleType name="namespaceList"> + <xsd:annotation> + <xsd:documentation> + A utility type, not for public use</xsd:documentation> + </xsd:annotation> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="##any"/> + <xsd:enumeration value="##other"/> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:list> + <xsd:simpleType> + <xsd:union memberTypes="xsd:anyURI"> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="##targetNamespace"/> + <xsd:enumeration value="##local"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + </xsd:list> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + --> + <!-- + <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/> + </xsd:annotation> + </xsd:element> + + <xsd:complexType name="attributeGroup" abstract="true"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:group ref="xsd:attrDecls"/> + <xsd:attributeGroup ref="xsd:defRef"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="namedAttributeGroup"> + <xsd:complexContent> + <xsd:restriction base="xsd:attributeGroup"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0"/> + <xsd:group ref="xsd:attrDecls"/> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:NCName"/> + <xsd:attribute name="ref" use="prohibited"/> + <xsd:attributeGroup ref="xsd:anyOther"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="attributeGroupRef"> + <xsd:complexContent> + <xsd:restriction base="xsd:attributeGroup"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="ref" use="required" type="xsd:QName"/> + <xsd:attribute name="name" use="prohibited"/> + <xsd:attributeGroup ref="xsd:anyOther"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/> + </xsd:annotation> + </xsd:element> + --> + + <xsd:element name="include" id="include"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-include" /> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:attribute name="schemaLocation" type="xsd:anyURI" + use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <!-- + <xsd:element name="redefine" id="redefine"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:openAttrs"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="xsd:annotation"/> + <xsd:group ref="xsd:redefinable"/> + </xsd:choice> + <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/> + <xsd:attribute name="id" type="xsd:ID"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + --> + + <xsd:element name="import" id="import"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-import" /> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:attribute name="namespace" type="xsd:anyURI" /> + <xsd:attribute name="schemaLocation" type="xsd:anyURI" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <!-- + <xsd:element name="__selector" id="selector"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:attribute name="xpath" use="required"> + <xsd:simpleType> + <xsd:annotation> + <xsd:documentation>A subset of XPath expressions for use + in selectors</xsd:documentation> + <xsd:documentation>A utility type, not for public + use</xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:annotation> + <xsd:documentation>The following pattern is intended to allow XPath + expressions per the following EBNF: + Selector ::= Path ( '|' Path )* + Path ::= ('.//')? Step ( '/' Step )* + Step ::= '.' | NameTest + NameTest ::= QName | '*' | NCName ':' '*' + child:: is also allowed + </xsd:documentation> + </xsd:annotation> + <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*"> + </xsd:pattern> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="__field" id="field"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:attribute name="xpath" use="required"> + <xsd:simpleType> + <xsd:annotation> + <xsd:documentation>A subset of XPath expressions for use + in fields</xsd:documentation> + <xsd:documentation>A utility type, not for public + use</xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"> + <xsd:annotation> + <xsd:documentation>The following pattern is intended to allow XPath + expressions per the same EBNF as for selector, + with the following change: + Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest ) + </xsd:documentation> + </xsd:annotation> + <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*"> + </xsd:pattern> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:complexType name="__keybase"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:sequence> + <xsd:element ref="xsd:selector"/> + <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:NCName" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:group name="__identityConstraint"> + <xsd:annotation> + <xsd:documentation>The three kinds of identity constraints, all with + type of or derived from 'keybase'. + </xsd:documentation> + </xsd:annotation> + <xsd:choice> + <xsd:element ref="xsd:unique"/> + <xsd:element ref="xsd:key"/> + <xsd:element ref="xsd:keyref"/> + </xsd:choice> + </xsd:group> + + <xsd:element name="__unique" type="xsd:keybase" id="unique"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/> + </xsd:annotation> + </xsd:element> + <xsd:element name="__key" type="xsd:keybase" id="key"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/> + </xsd:annotation> + </xsd:element> + <xsd:element name="__keyref" id="keyref"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:keybase"> + <xsd:attribute name="refer" type="xsd:QName" use="required"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="__notation" id="notation"> + <xsd:annotation> + <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:attribute name="name" type="xsd:NCName" use="required"/> + <xsd:attribute name="public" type="xsd:public"/> + <xsd:attribute name="system" type="xsd:anyURI"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:simpleType name="public"> + <xsd:annotation> + <xsd:documentation> + A utility type, not for public use</xsd:documentation> + <xsd:documentation> + A public identifier, per ISO 8879</xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:token"/> + </xsd:simpleType> + --> + <xsd:element name="appinfo" id="appinfo"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-appinfo" /> + </xsd:annotation> + <xsd:complexType mixed="true"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <!-- + Some users may want to provide appinfo annotations specific to their + use-case in addition to the DFDL annotations. Normal XML schema allows + any elements with lax validation using the commented out line below. + However, we want to perform extra validation on the dfdl elements. So + the DFDLAppInfoGroup defines all the DFDL specific attribute-form + elements that are allowed in an xs:appinfo and what attributes they may + have. The dfdl:anyOther group reference is used to allow elements from any + other namespace with lax validation. + --> + <!--<xsd:any processContents="lax" />--> + <xsd:group ref="dfdl:DFDLAppInfoGroup" /> + <xsd:group ref="dfdl:anyOther" /> + </xsd:choice> + <xsd:attribute name="source" type="xsd:anyURI" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="documentation" id="documentation"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-documentation" /> + </xsd:annotation> + <xsd:complexType mixed="true"> + <xsd:sequence minOccurs="0" maxOccurs="unbounded"> + <xsd:any processContents="lax" /> + </xsd:sequence> + <xsd:attribute name="source" type="xsd:anyURI" /> + <xsd:attribute ref="xml:lang" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="annotation" id="annotation"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-1/#element-annotation" /> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:openAttrs"> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:element ref="xsd:appinfo" /> + <xsd:element ref="xsd:documentation" /> + </xsd:choice> + <xsd:attribute name="id" type="xsd:ID" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + + + <xsd:simpleType name="derivationControl"> + <xsd:annotation> + <xsd:documentation> + A utility type, not for public use + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:NMTOKEN"> + <!-- <xsd:enumeration value="substitution"/> --> + <!-- <xsd:enumeration value="extension"/> --> + <xsd:enumeration value="restriction" /> + <!-- <xsd:enumeration value="list"/> --> + <xsd:enumeration value="union" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:group name="simpleDerivation"> + <xsd:choice> + <xsd:element ref="xsd:restriction" /> + <!-- <xsd:element ref="xsd:list"/> Not in DFDL v1.0 --> + <xsd:element ref="xsd:union" /> + </xsd:choice> + </xsd:group> + + + + <xsd:simpleType name="simpleDerivationSet"> + <xsd:annotation> + <xsd:documentation> + #all or (possibly empty) subset of {restriction, union, list} + </xsd:documentation> + <xsd:documentation> + A utility type, not for public use + </xsd:documentation> + </xsd:annotation> + <xsd:union> + <xsd:simpleType> + <xsd:restriction base="xsd:token"> + <xsd:enumeration value="#all" /> + </xsd:restriction> + </xsd:simpleType> + <xsd:simpleType> + <xsd:list> + <xsd:simpleType> + <xsd:restriction base="xsd:derivationControl"> + <!-- <xsd:enumeration value="list"/> --> + <xsd:enumeration value="union" /> + <xsd:enumeration value="restriction" /> + </xsd:restriction> + </xsd:simpleType> + </xsd:list> + </xsd:simpleType> + </xsd:union> + </xsd:simpleType> + + <xsd:complexType name="simpleType" abstract="true"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:group ref="xsd:simpleDerivation" /> + <xsd:attribute name="final" type="xsd:simpleDerivationSet" /> + <xsd:attribute name="name" type="xsd:NCName"> + <xsd:annotation> + <xsd:documentation> + Can be restricted to required or + forbidden + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + + <!-- DFDL --> + <xsd:attributeGroup ref="dfdl:BaseAGQualified" /> + <xsd:attributeGroup ref="dfdl:CommonAGQualified" /> + <xsd:attributeGroup ref="dfdl:AlignmentAGQualified" /> + <xsd:attributeGroup ref="dfdl:MarkupAGQualified" /> + <xsd:attributeGroup ref="dfdl:SimpleTypeAGQualified" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + + <xsd:complexType name="topLevelSimpleType"> + <xsd:complexContent> + <xsd:restriction base="xsd:simpleType"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:group ref="xsd:simpleDerivation" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:NCName"> + <xsd:annotation> + <xsd:documentation> + Required at the top level + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="localSimpleType"> + <xsd:complexContent> + <xsd:restriction base="xsd:simpleType"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + <xsd:group ref="xsd:simpleDerivation" /> + </xsd:sequence> + <xsd:attribute name="name" use="prohibited"> + <xsd:annotation> + <xsd:documentation> + Forbidden when nested + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attribute name="final" use="prohibited" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="simpleType" type="xsd:topLevelSimpleType" + id="simpleType"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-simpleType" /> + </xsd:annotation> + </xsd:element> + + <xsd:group name="facets"> + <xsd:annotation> + <xsd:documentation> + We should use a substitution group for facets, but + that's ruled out because it would allow users to + add their own, which we're not ready for yet. + </xsd:documentation> + </xsd:annotation> + <xsd:choice> + <xsd:element ref="xsd:minExclusive" /> + <xsd:element ref="xsd:minInclusive" /> + <xsd:element ref="xsd:maxExclusive" /> + <xsd:element ref="xsd:maxInclusive" /> + <xsd:element ref="xsd:totalDigits" /> + <xsd:element ref="xsd:fractionDigits" /> + <xsd:element ref="xsd:length" /> + <xsd:element ref="xsd:minLength" /> + <xsd:element ref="xsd:maxLength" /> + <xsd:element ref="xsd:enumeration" /> + <!-- <xsd:element ref="xsd:whiteSpace"/> --> + <xsd:element ref="xsd:pattern" /> + </xsd:choice> + </xsd:group> + + <xsd:group name="simpleRestrictionModel"> + <xsd:sequence> + <xsd:element name="simpleType" type="xsd:localSimpleType" + minOccurs="0" /> + <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:group> + + <xsd:element name="restriction" id="restriction"> + <xsd:complexType> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-restriction"> + base attribute and simpleType child are mutually + exclusive, but one or other is required + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:group ref="xsd:simpleRestrictionModel" /> + <xsd:attribute name="base" type="xsd:QName" use="optional" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <!-- + <xsd:element name="list" id="list"> + <xsd:complexType> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-list"> + itemType attribute and simpleType child are mutually + exclusive, but one or other is required + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:sequence> + <xsd:element name="simpleType" type="xsd:localSimpleType" + minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="itemType" type="xsd:QName" use="optional"/> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + --> + <xsd:element name="union" id="union"> + <xsd:complexType> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-union"> + memberTypes attribute must be non-empty or there must + be + at least one simpleType child + </xsd:documentation> + </xsd:annotation> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:sequence> + <xsd:element name="simpleType" type="xsd:localSimpleType" + minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:attribute name="memberTypes" use="optional"> + <xsd:simpleType> + <xsd:list itemType="xsd:QName" /> + </xsd:simpleType> + </xsd:attribute> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:complexType name="facet"> + <xsd:complexContent> + <xsd:extension base="xsd:annotated"> + <xsd:attribute name="value" use="required" /> + <xsd:attribute name="fixed" type="xsd:boolean" + use="optional" default="false" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:complexType name="noFixedFacet"> + <xsd:complexContent> + <xsd:restriction base="xsd:facet"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="fixed" use="prohibited" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive" /> + </xsd:annotation> + </xsd:element> + <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive" /> + </xsd:annotation> + </xsd:element> + + <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive" /> + </xsd:annotation> + </xsd:element> + <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive" /> + </xsd:annotation> + </xsd:element> + + <xsd:complexType name="numFacet"> + <xsd:complexContent> + <xsd:restriction base="xsd:facet"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="value" type="xsd:nonNegativeInteger" + use="required" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + + <xsd:element name="totalDigits" id="totalDigits"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits" /> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:restriction base="xsd:numFacet"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="value" type="xsd:positiveInteger" + use="required" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + <xsd:element name="fractionDigits" id="fractionDigits" + type="xsd:numFacet"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits" /> + </xsd:annotation> + </xsd:element> + + <xsd:element name="length" id="length" type="xsd:numFacet"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-length" /> + </xsd:annotation> + </xsd:element> + <xsd:element name="minLength" id="minLength" type="xsd:numFacet"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-minLength" /> + </xsd:annotation> + </xsd:element> + <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-maxLength" /> + </xsd:annotation> + </xsd:element> + + <xsd:element name="enumeration" id="enumeration"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-enumeration" /> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="xsd:facet"> + <xsd:attributeGroup ref="dfdlx:RepValuesAGQualified" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <!-- + <xsd:element name="whiteSpace" id="whiteSpace"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:restriction base="xsd:facet"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0"/> + </xsd:sequence> + <xsd:attribute name="value" use="required"> + <xsd:simpleType> + <xsd:restriction base="xsd:NMTOKEN"> + <xsd:enumeration value="preserve"/> + <xsd:enumeration value="replace"/> + <xsd:enumeration value="collapse"/> + </xsd:restriction> + </xsd:simpleType> + </xsd:attribute> + <xsd:attributeGroup ref="xsd:anyOther"/> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + --> + <xsd:element name="pattern" id="pattern"> + <xsd:annotation> + <xsd:documentation + source="http://www.w3.org/TR/xmlschema-2/#element-pattern" /> + </xsd:annotation> + <xsd:complexType> + <xsd:complexContent> + <xsd:restriction base="xsd:noFixedFacet"> + <xsd:sequence> + <xsd:element ref="xsd:annotation" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="value" type="xsd:string" + use="required" /> + <xsd:attributeGroup ref="xsd:anyOther" /> + </xsd:restriction> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + +</xsd:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/dafext.xsd b/DFDL/attribution/org/apache/daffodil/xsd/dafext.xsd new file mode 100644 index 0000000000000000000000000000000000000000..017849422008dc3c25e671d129c3aa235ba54d37 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/dafext.xsd @@ -0,0 +1,731 @@ +<?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. +--> + +<xs:schema + targetNamespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" + xmlns:tns="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" + xmlns:dafint="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int" + xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions" + attributeFormDefault="unqualified" + elementFormDefault="qualified"> + + <!-- Add schemaLocation="daflx.xsd" to allow NetBeans XML validation to work --> + <xs:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions" schemaLocation="dfdlx.xsd"/> + <xs:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int"/> + + <!-- needed for backwards compatability with daf:parseUnparsePolicy --> + <xs:attribute name="parseUnparsePolicy" type="dfdlx:ParseUnparsePolicyEnum"/> + + <xs:element name="property" type="daf:PropertyType" /> + + <xs:complexType name="PropertyType"> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="name" type="daf:PropertyNameType" use='required'/> + <xs:attributeGroup ref="dafint:daffodilAG"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + + <xs:simpleType name="PropertyNameType"> + <xs:restriction base="xs:token"> + <xs:enumeration value="parseUnparsePolicy"/> + </xs:restriction> + </xs:simpleType> + + + <!-- properties related to daffodil configuration --> + + <xs:element name="externalVariableBindings" type="daf:externalVarType" /> + + <xs:complexType name="externalVarType"> + <xs:sequence> + <xs:element ref="daf:bind" minOccurs="0" maxOccurs="unbounded" /> + </xs:sequence> + </xs:complexType> + + <xs:element name="bind" type="daf:bindType" /> + + <xs:simpleType name="bindNameType"> + <xs:restriction base="xs:string" /> + </xs:simpleType> + + <xs:complexType name="bindType"> + <xs:simpleContent> + <xs:extension base="daf:bindNameType"> + <xs:attribute name="name" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string" /> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + + <!-- + This file is used by TunableGenerator.scala to generate code that parses and + validates tunable values. The following schema elements define these tunables + to be generated. Although this schema is verbose and repetitive, it makes it + relatively straightforward to parse and ensure we generate correct code. As + such, one must follow a strict pattern to ensure correct code is generated. + + Each element representing a tunable must have an schema primitive as its type, + as determined by the tunables allowed value space. Each tunable must also have + a default value that is valid for the type. If an element needs additional + limitations beyond the value space of the type, then an xs:simpleType with + xs:restriction must be used. The base attribute of the restriction must be a + schema primitive type. Only the following restrictions are currently supported: + + - minInclusive + - maxInclusive + - minExclusive + - maxExclusive + --> + <xs:element name="tunables"> + <xs:complexType> + <xs:all> + <xs:element name="allowBigIntegerBits" type="xs:boolean" default="true" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Previous Daffodil releases let schemas define every type's length using "bits" as the length unit + even though the specification allows bit length units only for a specific set of types' binary + representations and does not allow bit length units for any other type's binary representation + or any type's text representation. When this tunable is true, a deprecation warning is issued + when bit length units are incorrectly used. When this tunable is false, a schema definition + error will be issued instead. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="allowExpressionResultCoercion" type="xs:boolean" default="true" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Defines how Daffodil coerces expressions where the result type differs + from the expected type. As an example, assume the expected type of an + expression is an xs:string, but the expression is { 3 }. In this case, the + expression result is an xs:int, which should not be automatically coerced + to an xs:string. Instead, the expression should be { xs:string(3) } or { "3" } + If the value of this tunable is false, these types of expressions will + result in a schema definition error. If the value is true, Daffodil will + provide a warning and attempt to coerce the result type to the expected + type. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="allowExternalPathExpressions" type="xs:boolean" default="false" minOccurs="0"> + <xs:annotation> + <xs:documentation> + By default, path expressions in Daffodil will only work correctly if path + steps are used in an expression defined in the schema when compiled. To + enable the use of other expressions (e.g. during debugging, where not all + expressions are known at schema compile time), set this tunable to true. + This may cause a degredation of performance in path expression evaluation, + so this should be avoided when in production. This flag is automatically + enabled when debugging is enabled. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="blobChunkSizeInBytes" default="4096" minOccurs="0"> + <xs:annotation> + <xs:documentation> + When reading/writing blob data, the maximum number of bytes to read/write + at a time. This is also used when parsing xs:hexBinary data. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + <xs:maxInclusive value="268435455" /> <!-- Limit to (MaxInt / 8) because some places convert this tunable to bits --> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="defaultEmptyElementParsePolicy" type="daf:TunableEmptyElementParsePolicy" default="treatAsEmpty" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Defines the default empty element parse policy to use if it is not defined + in a schema. This is only used if requireEmptyElementParsePolicyProperty is + false. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="defaultInitialRegexMatchLimitInChars" default="32" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Deprecated. This tunable no longer has any affect and is only kept for + backwards compatability. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="errorOnUnsupportedJavaVersion" type="xs:boolean" default="true" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Deprecated. This tunable no longer has any affect and is only kept for + backwards compatability. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="generatedNamespacePrefixStem" type="xs:string" default="tns" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Stem to use when generating a namespace prefix when one is not defined for + the target naespace. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="initialElementOccurrencesHint" default="10" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Initial array buffer size allocated for recurring elements/arrays. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="initialRegexMatchLimitInCharacters" default="64" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Initial number of characters to match when performing regular expression + matches on input data. When a regex fails to match, more data may be + consumed up to the maximumRegexMatchLengthInCharacters tunable. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="infosetWalkerSkipMin" default="32" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Daffodil periodically walks the internal infoset to send events to the configured + InfosetOutputter, skipping at least this number of walk attempts. Larger values + mean delayed InfosetOutputter events and more memory usage; Smaller values mean + more CPU usage. Set this value to zero to never skip any walk attempts. This is + specifically for advanced testing behavior and should not need to be changed by users. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="infosetWalkerSkipMax" default="2048" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Daffodil periodically walks the internal infoset to send events to the configured + InfosetOutputter. On walks where no progress is made, the number of walks to skip + is increased with the assumption that something is blocking it (like an + unresolved point of uncertainty), up to this maximum value. Higher values mean + less attempts are made when blocked for a long time, but with potentially more + delays and memory usage before InfosetOutputter events are created. This is + specifically for advanced testing behavior and should not need to be changed by users. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="inputFileMemoryMapLowThreshold" type="xs:int" default="33554432" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Deprecated. This tunable no longer has any affect and is only kept for + backwards compatability. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="maxBinaryDecimalVirtualPoint" default="200" minOccurs="0"> + <xs:annotation> + <xs:documentation> + The largest allowed value of the dfdl:binaryDecimalVirtualPoint property. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maxByteArrayOutputStreamBufferSizeInBytes" default="2097152000" minOccurs="0"> + <xs:annotation> + <xs:documentation> + When unparsing, this is the maximum size of the buffer that the + ByteArrayOutputStream can grow to before switching to a file based + output stream. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maxDataDumpSizeInBytes" default="256" minOccurs="0"> + <xs:annotation> + <xs:documentation> + The maximum size of data to retrive when when getting data to display + for debugging. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maxFieldContentLengthInBytes" type="xs:int" default="1048576" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Deprecated. This tunable no longer has any affect and is only kept for + backwards compatability. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="maxHexBinaryLengthInBytes" default="1073741823" minOccurs="0"> + <xs:annotation> + <xs:documentation> + The maximum size allowed for an xs:hexBinary element. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + <!-- + The maxInclusive value is set to (Int.MaxValue / 2) since each byte in + hex binary becomes 2 hex chars, and the maximum length of a string in + Java is Int.MaxValue + --> + <xs:maxInclusive value="1073741823" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maxLengthForVariableLengthDelimiterDisplay" default="10" minOccurs="0"> + <xs:annotation> + <xs:documentation> + When unexpected text is found where a delimiter is expected, this is the maximum + number of bytes (characters) to display when the expected delimiter is a variable + length delimiter. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maxLookaheadFunctionBits" default="512" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Max distance that the DPath lookahead function is permitted to look. + Distance is defined by the distance to the last bit accessed, and + so it is offset+bitsize. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:long"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maxOccursBounds" default="2147483647" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Maximum number of occurances of an array element. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:long"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maxSkipLengthInBytes" default="1024" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Maximum number of bytes allowed to skip in a skip region. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maxValidYear" default="9999" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Due to differences in the DFDL spec and ICU4J SimpleDateFormat, we must + have SimpleDateFormat parse in lenient mode, which allows the year value + to overflow with very large years into possibly negative years. This + tunable tunable sets an upper limit for values to prevent overflow. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maximumRegexMatchLengthInCharacters" default="1048576" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Maximum number of characters to match when performing regular expression + matches on input data. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="maximumSimpleElementSizeInCharacters" default="1048576" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Maximum number of characters to parse when parsing string data. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="minBinaryDecimalVirtualPoint" default="-200" minOccurs="0"> + <xs:annotation> + <xs:documentation> + The smallest allowed value of the dfdl:binaryDecimalVirtualPoint property. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:maxInclusive value="-1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="minValidYear" type="xs:int" default="0" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Due to differences in the DFDL spec and ICU4J SimpleDateFormat, we must + have SimpleDateFormat parse in lenient mode, which allows the year value + to overflow with very large years into possibly negative years. This + tunable tunable sets an upper limit for values to prevent underflow. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="outputStreamChunkSizeInBytes" default="65536" minOccurs="0"> + <xs:annotation> + <xs:documentation> + When writing file data to the output stream during unparse, this + is the maximum number of bytes to write at a time. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="parseUnparsePolicy" type="daf:TunableParseUnparsePolicyTunable" default="fromRoot" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Whether to compile a schema to support only parsing, only unparsing, both, or to + use the daf:parseUnparsePolicy from the root node. All child elements of the root + must have a compatable daf:parseUnaprsePolicy property. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="readerByteBufferSize" type="xs:int" default="8192" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Deprecated. This tunable no longer has any affect and is only kept for + backwards compatability. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="releaseUnneededInfoset" type="xs:boolean" default="true" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Daffodil will periodically release internal infoset elements that it determines + are no longer needed, thus freeing memory. Setting this value to false will + prevent this from taking place. This should usually only be used while debugging + or with very specific tests. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="requireBitOrderProperty" type="xs:boolean" default="false" minOccurs="0"> + <xs:annotation> + <xs:documentation> + If true, require that the dfdl:bitOrder property is specified. If false, use a + default value if the property is not defined in the schema. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="requireEmptyElementParsePolicyProperty" type="xs:boolean" default="false" minOccurs="0"> + <xs:annotation> + <xs:documentation> + If true, require that the dfdl:emptyElementParsePolicy property is specified in + the schema. If false, and not defined in the schema, uses the + defaultEmptyElementParsePolicy as the value of emptyElementParsePolicy. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="requireEncodingErrorPolicyProperty" type="xs:boolean" default="false" minOccurs="0"> + <xs:annotation> + <xs:documentation> + If true, require that the dfdl:encodingErrorPolicy property is specified. If + false, use a default value if the property is not defined in the schema. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="requireFloatingProperty" type="xs:boolean" default="false" minOccurs="0"> + <xs:annotation> + <xs:documentation> + If true, require that the dfdl:floating property is specified. If + false, use a default value if the property is not defined in the schema. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="requireTextBidiProperty" type="xs:boolean" default="false" minOccurs="0"> + <xs:annotation> + <xs:documentation> + If true, require that the dfdl:testBidi property is specified. If + false, use a default value if the property is not defined in the schema. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="requireTextStandardBaseProperty" type="xs:boolean" default="false" minOccurs="0"> + <xs:annotation> + <xs:documentation> + If true, require that the dfdl:textStandardBase property is specified. If false + and the property is missing, behave as if the property is set to 10. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="saxUnparseEventBatchSize" default="100" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Daffodil's SAX Unparse API allows events to be batched in memory to minimize the + frequency of context switching between the SAXInfosetInputter thread that processes + the events, and the DaffodilUnparseContentHandler thread that generates the events. + Setting this value to a low number will increase the frequency of context switching, + but will reduce the memory footprint. Swtting it to a high number will decrease the + frequency of context switching, but increase the memory footprint. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="suppressSchemaDefinitionWarnings" type="daf:TunableSuppressSchemaDefinitionWarnings" default="emptyElementParsePolicyError" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Space-separated list of schema definition warnings that should be ignored, + or "all" to ignore all warnings. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="tempFilePath" type="xs:string" default="This string is ignored. Default value is taken from java.io.tmpdir property" minOccurs="0"> + <xs:annotation> + <xs:documentation> + When unparsing, use this path to store temporary files that may be genrated. + The default value (empty string) will result in the use of the java.io.tmpdir + property being used as the path. + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="unqualifiedPathStepPolicy" type="daf:TunableUnqualifiedPathStepPolicy" default="noNamespace" minOccurs="0"> + <xs:annotation> + <xs:documentation> + Defines how to lookup DFDL expression path steps that to not include a + namespace prefix. Values are: + - noNamespace: only match elements that do not have a namespace + - defaultNamespace: only match elements defined in the default namespace + - preferDefaultNamespace: match elements defined in the default namespace; + if non are found, match elemnts that do not have a namespace + </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="unparseSuspensionWaitOld" default="100" minOccurs="0"> + <xs:annotation> + <xs:documentation> + While unparsing, some unparse actions require "suspending" which + requires buffering unparse output until the suspension can be + evaluated. Daffodil periodically attempts to reevaluate these + suspensions so that these buffers can be released. We attempt to + evaluate young suspensions shortly after creation with the hope + that it will succeed and we can release associated buffers. But if + a young suspension fails it is moved to the old suspension list. + Old suspensions are evaluated less frequently since they are less + likely to succeeded. This minimizes the overhead related to + evaluating suspensions that are likely to fail. The + unparseSuspensionWaitYoung and unparseSuspensionWaitOld + values determine how many elements are unparsed before evaluating + young and old suspensions, respectively. + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="unparseSuspensionWaitYoung" default="5" minOccurs="0"> + <xs:annotation> + <xs:documentation> + See unparseSuspensionWaitOld + </xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1" /> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + + <xs:simpleType name="TunableEmptyElementParsePolicy"> + <xs:restriction base="xs:string"> + <xs:enumeration value="treatAsEmpty" /> + <xs:enumeration value="treatAsAbsent" /> + <xs:enumeration value="treatAsMissing" /> <!-- deprecated --> + </xs:restriction> + </xs:simpleType> + + <!-- + The two 'Tunables' in the name are intentional. The first is the standard for + Tunable enums used by the generator. The second is to differentiate between + the dfdl property enum and the tunable enum, since they have different allowed + values. + --> + <xs:simpleType name="TunableParseUnparsePolicyTunable"> + <xs:union> + <xs:simpleType> + <xs:restriction base="dfdlx:ParseUnparsePolicyEnum" /> + </xs:simpleType> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="fromRoot" /> + </xs:restriction> + </xs:simpleType> + </xs:union> + </xs:simpleType> + + <!-- + TDML implementation to use when running TDML tests. Currently daffodil and ibm use the + same classname, so you still need different classpaths to call ibm as a cross tester. + --> + <xs:simpleType name="TunableTDMLImplementation"> + <xs:restriction base="xs:token"> + <xs:enumeration value="daffodil" /> + <xs:enumeration value="daffodilC" /> + <xs:enumeration value="ibm" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="TunableUnqualifiedPathStepPolicy"> + <xs:restriction base="xs:token"> + <xs:enumeration value="defaultNamespace" /> + <xs:enumeration value="noNamespace" /> + <xs:enumeration value="preferDefaultNamespace" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="TunableSuppressSchemaDefinitionWarnings"> + <xs:list> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:enumeration value="all" /> + <xs:enumeration value="alignmentNotSame" /> + <xs:enumeration value="alignmentAndInitiatorTextAlignmentNotCompatible" /> + <xs:enumeration value="appinfoDFDLSourceWrong" /> + <xs:enumeration value="appinfoNoSource" /> + <xs:enumeration value="choiceInsideHiddenGroup" /> + <xs:enumeration value="codeGenerator" /> + <xs:enumeration value="deprecatedBigIntegerBits" /> + <xs:enumeration value="deprecatedBuiltInFormats" /> + <xs:enumeration value="deprecatedEncodingNameUSASCII7BitPacked" /> + <xs:enumeration value="deprecatedExpressionResultCoercion" /> + <xs:enumeration value="deprecatedFunctionDAFError" /> + <xs:enumeration value="deprecatedPropertyDAFError" /> + <xs:enumeration value="deprecatedPropertyDFDLXError" /> + <xs:enumeration value="deprecatedPropertyDFDLError" /> + <xs:enumeration value="deprecatedPropertySeparatorPolicy" /> + <xs:enumeration value="discouragedDiscriminatorPlacement" /> + <xs:enumeration value="discouragedAssertPlacement" /> + <xs:enumeration value="emptyElementParsePolicyError" /> + <xs:enumeration value="encodingErrorPolicyError" /> + <xs:enumeration value="escapeSchemeRefUndefined" /> + <xs:enumeration value="expressionCompilationSkipped" /> + <xs:enumeration value="facetExplicitLengthOutOfRange" /> + <xs:enumeration value="floatingError" /> + <xs:enumeration value="ignoreImport" /> + <xs:enumeration value="ignoreDFDLProperty" /> + <xs:enumeration value="inconsistentLengthKind" /> + <xs:enumeration value="invalidAnnotationPoint" /> + <xs:enumeration value="layerCompileWarning" /> + <xs:enumeration value="multipleChoiceBranches" /> + <xs:enumeration value="namespaceDifferencesOnly" /> + <xs:enumeration value="noEmptyDefault" /> + <xs:enumeration value="nonExpressionPropertyValueLooksLikeExpression" /> + <xs:enumeration value="pathNotToArray" /> + <xs:enumeration value="patternEncodingSlashW" /> + <xs:enumeration value="queryStylePathExpression" /> + <xs:enumeration value="regexPatternZeroLength" /> + <xs:enumeration value="textBidiError" /> + <xs:enumeration value="textNumberPatternWarning" /> + <xs:enumeration value="textOutputMinLengthOutOfRange" /> + <xs:enumeration value="textStandardBaseUndefined" /> + <xs:enumeration value="unsupportedAttributeBlockDefault" /> + <xs:enumeration value="unsupportedAttributeFinalDefault" /> + <xs:enumeration value="unsupportedAttributeFormDefault" /> + <xs:enumeration value="unsupportedAttributeSchemaLocation" /> + <xs:enumeration value="variableSet" /> + <xs:enumeration value="xmlParser" /> + </xs:restriction> + </xs:simpleType> + </xs:list> + </xs:simpleType> + + <xs:element name="dfdlConfig"> + <xs:complexType> + <xs:sequence> + <xs:element ref="tns:externalVariableBindings" minOccurs="0" /> + <xs:element ref="tns:tunables" minOccurs="0" /> + </xs:sequence> + </xs:complexType> + </xs:element> + +</xs:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/dafint.xsd b/DFDL/attribution/org/apache/daffodil/xsd/dafint.xsd new file mode 100644 index 0000000000000000000000000000000000000000..7f8361cc261ae16299fc4e0353162ca9d93fb952 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/dafint.xsd @@ -0,0 +1,48 @@ +<?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 xmlns:xsd="http://www.w3.org/2001/XMLSchema" + attributeFormDefault="unqualified" elementFormDefault="qualified" + targetNamespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int" + xmlns:dafint="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <!-- + This schema is for daffodil-specific internal use attribute definitions. + --> + + <!-- Attributes to carry file and line number information --> + <xsd:attribute name="line" type="xsd:int" /> + <xsd:attribute name="col" type="xsd:int" /> + <xsd:attribute name="file" type="xsd:token" /> + + <xsd:attributeGroup name="daffodilAG"> + <!-- allows xsi prefixed attributes, and also dafint and daf prefixed + attributes --> + <xsd:anyAttribute + namespace="http://www.w3.org/XML/1998/namespace + urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int + urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" /> + </xsd:attributeGroup> + + <xsd:element name="testElement"> + <xsd:complexType> + <xsd:attributeGroup ref="dafint:daffodilAG" /> + </xsd:complexType> + </xsd:element> + +</xsd:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/datatypes.dtd b/DFDL/attribution/org/apache/daffodil/xsd/datatypes.dtd new file mode 100644 index 0000000000000000000000000000000000000000..536edd21c5fb730967f087499038971c0906242e --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/datatypes.dtd @@ -0,0 +1,214 @@ +<!-- + Copyright © 2018 World Wide Web Consortium, (Massachusetts + Institute of Technology, European Research Consortium for Informatics and + Mathematics, Keio University, Beihang). All Rights Reserved. This work is + distributed under the W3C® Software License [1] in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +--> + +<!-- + DTD for XML Schemas: Part 2: Datatypes + $Id: datatypes.dtd,v 1.23 2001/03/16 17:36:30 ht Exp $ + Note this DTD is NOT normative, or even definitive. - - the + prose copy in the datatypes REC is the definitive version + (which shouldn't differ from this one except for this comment + and entity expansions, but just in case) + --> + +<!-- + This DTD cannot be used on its own, it is intended + only for incorporation in XMLSchema.dtd, q.v. + --> + +<!-- Define all the element names, with optional prefix --> +<!ENTITY % simpleType "%p;simpleType"> +<!ENTITY % restriction "%p;restriction"> +<!ENTITY % list "%p;list"> +<!ENTITY % union "%p;union"> +<!ENTITY % maxExclusive "%p;maxExclusive"> +<!ENTITY % minExclusive "%p;minExclusive"> +<!ENTITY % maxInclusive "%p;maxInclusive"> +<!ENTITY % minInclusive "%p;minInclusive"> +<!ENTITY % totalDigits "%p;totalDigits"> +<!ENTITY % fractionDigits "%p;fractionDigits"> +<!ENTITY % length "%p;length"> +<!ENTITY % minLength "%p;minLength"> +<!ENTITY % maxLength "%p;maxLength"> +<!ENTITY % enumeration "%p;enumeration"> +<!ENTITY % whiteSpace "%p;whiteSpace"> +<!ENTITY % pattern "%p;pattern"> + +<!-- + Customisation entities for the ATTLIST of each element + type. Define one of these if your schema takes advantage + of the anyAttribute='##other' in the schema for schemas + --> + +<!ENTITY % simpleTypeAttrs ""> +<!ENTITY % restrictionAttrs ""> +<!ENTITY % listAttrs ""> +<!ENTITY % unionAttrs ""> +<!ENTITY % maxExclusiveAttrs ""> +<!ENTITY % minExclusiveAttrs ""> +<!ENTITY % maxInclusiveAttrs ""> +<!ENTITY % minInclusiveAttrs ""> +<!ENTITY % totalDigitsAttrs ""> +<!ENTITY % fractionDigitsAttrs ""> +<!ENTITY % lengthAttrs ""> +<!ENTITY % minLengthAttrs ""> +<!ENTITY % maxLengthAttrs ""> +<!ENTITY % enumerationAttrs ""> +<!ENTITY % whiteSpaceAttrs ""> +<!ENTITY % patternAttrs ""> + +<!-- Define some entities for informative use as attribute + types --> +<!ENTITY % URIref "CDATA"> +<!ENTITY % XPathExpr "CDATA"> +<!ENTITY % QName "NMTOKEN"> +<!ENTITY % QNames "NMTOKENS"> +<!ENTITY % NCName "NMTOKEN"> +<!ENTITY % nonNegativeInteger "NMTOKEN"> +<!ENTITY % boolean "(true|false)"> +<!ENTITY % simpleDerivationSet "CDATA"> +<!-- + #all or space-separated list drawn from derivationChoice + --> + +<!-- + Note that the use of 'facet' below is less restrictive + than is really intended: There should in fact be no + more than one of each of minInclusive, minExclusive, + maxInclusive, maxExclusive, totalDigits, fractionDigits, + length, maxLength, minLength within datatype, + and the min- and max- variants of Inclusive and Exclusive + are mutually exclusive. On the other hand, pattern and + enumeration may repeat. + --> +<!ENTITY % minBound "(%minInclusive; | %minExclusive;)"> +<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)"> +<!ENTITY % bounds "%minBound; | %maxBound;"> +<!ENTITY % numeric "%totalDigits; | %fractionDigits;"> +<!ENTITY % ordered "%bounds; | %numeric;"> +<!ENTITY % unordered + "%pattern; | %enumeration; | %whiteSpace; | %length; | + %maxLength; | %minLength;"> +<!ENTITY % facet "%ordered; | %unordered;"> +<!ENTITY % facetAttr + "value CDATA #REQUIRED + id ID #IMPLIED"> +<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED"> +<!ENTITY % facetModel "(%annotation;)?"> +<!ELEMENT %simpleType; + ((%annotation;)?, (%restriction; | %list; | %union;))> +<!ATTLIST %simpleType; + name %NCName; #IMPLIED + final %simpleDerivationSet; #IMPLIED + id ID #IMPLIED + %simpleTypeAttrs;> +<!-- name is required at top level --> +<!ELEMENT %restriction; ((%annotation;)?, + (%restriction1; | + ((%simpleType;)?,(%facet;)*)), + (%attrDecls;))> +<!ATTLIST %restriction; + base %QName; #IMPLIED + id ID #IMPLIED + %restrictionAttrs;> +<!-- + base and simpleType child are mutually exclusive, + one is required. + + restriction is shared between simpleType and + simpleContent and complexContent (in XMLSchema.xsd). + restriction1 is for the latter cases, when this + is restricting a complex type, as is attrDecls. + --> +<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)> +<!ATTLIST %list; + itemType %QName; #IMPLIED + id ID #IMPLIED + %listAttrs;> +<!-- + itemType and simpleType child are mutually exclusive, + one is required + --> +<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)> +<!ATTLIST %union; + id ID #IMPLIED + memberTypes %QNames; #IMPLIED + %unionAttrs;> +<!-- + At least one item in memberTypes or one simpleType + child is required + --> + +<!ELEMENT %maxExclusive; %facetModel;> +<!ATTLIST %maxExclusive; + %facetAttr; + %fixedAttr; + %maxExclusiveAttrs;> +<!ELEMENT %minExclusive; %facetModel;> +<!ATTLIST %minExclusive; + %facetAttr; + %fixedAttr; + %minExclusiveAttrs;> + +<!ELEMENT %maxInclusive; %facetModel;> +<!ATTLIST %maxInclusive; + %facetAttr; + %fixedAttr; + %maxInclusiveAttrs;> +<!ELEMENT %minInclusive; %facetModel;> +<!ATTLIST %minInclusive; + %facetAttr; + %fixedAttr; + %minInclusiveAttrs;> + +<!ELEMENT %totalDigits; %facetModel;> +<!ATTLIST %totalDigits; + %facetAttr; + %fixedAttr; + %totalDigitsAttrs;> +<!ELEMENT %fractionDigits; %facetModel;> +<!ATTLIST %fractionDigits; + %facetAttr; + %fixedAttr; + %fractionDigitsAttrs;> + +<!ELEMENT %length; %facetModel;> +<!ATTLIST %length; + %facetAttr; + %fixedAttr; + %lengthAttrs;> +<!ELEMENT %minLength; %facetModel;> +<!ATTLIST %minLength; + %facetAttr; + %fixedAttr; + %minLengthAttrs;> +<!ELEMENT %maxLength; %facetModel;> +<!ATTLIST %maxLength; + %facetAttr; + %fixedAttr; + %maxLengthAttrs;> + +<!-- This one can be repeated --> +<!ELEMENT %enumeration; %facetModel;> +<!ATTLIST %enumeration; + %facetAttr; + %enumerationAttrs;> + +<!ELEMENT %whiteSpace; %facetModel;> +<!ATTLIST %whiteSpace; + %facetAttr; + %fixedAttr; + %whiteSpaceAttrs;> + +<!-- This one can be repeated --> +<!ELEMENT %pattern; %facetModel;> +<!ATTLIST %pattern; + %facetAttr; + %patternAttrs;> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/dfdlx.xsd b/DFDL/attribution/org/apache/daffodil/xsd/dfdlx.xsd new file mode 100644 index 0000000000000000000000000000000000000000..395aed008de26ca702e978a2acaa2a102dad914e --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/dfdlx.xsd @@ -0,0 +1,272 @@ +<?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. +--> + +<xs:schema + targetNamespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions" + xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" + xmlns:dafint="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int" + attributeFormDefault="unqualified" + elementFormDefault="qualified"> + + <xs:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int"/> + <xs:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/"/> + + <!-- dfdl:property="..." extension values. Extension properties must start with dfdlx: --> + + <xs:simpleType name="PropertyNameType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="dfdlx:alignmentKind" /> + <xs:enumeration value="dfdlx:choiceBranchKeyRanges" /> + <xs:enumeration value="dfdlx:emptyElementParsePolicy"/> <!-- deprecated --> + <xs:enumeration value="dfdlx:inputTypeCalc"/> + <xs:enumeration value="dfdlx:objectKind"/> + <xs:enumeration value="dfdlx:outputTypeCalc"/> + <xs:enumeration value="dfdlx:parseUnparsePolicy"/> + <xs:enumeration value="dfdlx:repType"/> + <xs:enumeration value="dfdlx:repValueRanges"/> + <xs:enumeration value="dfdlx:repValues"/> + <xs:enumeration value="dfdlx:runtimeProperties"/> + </xs:restriction> + </xs:simpleType> + + + <xs:attribute name="alignmentKind" type="dfdlx:AlignmentKindEnum" default="automatic"> + <xs:annotation> + <xs:documentation><![CDATA[ + If manual, then the dfdl:alignment property is ignored, and all alignment must be done + manually by way of dfdl:leadingSkip, dfdl:trailingSkip, or just arranging for elements + that have the right size such that alignment is correct. + + The dfdl:alignmentUnits property still applies and is used with dfdl:leadingSkip and dfdl:trailingSkip. + + This property helps overcome limitations of the Daffodil schema compiler where it attempts to optimize + out normal alignment regions, but is unable to, resulting in the inability to unparse some formats. + + For all constructs in the scope of this property, there will be no alignment regions created, + and charset encodings will not have mandatory text alignment of their characters. + + Since this is a new extension property that is experimental, it will have a default value of "automatic". + ]]></xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:simpleType name="AlignmentKindEnum"> + <xs:restriction base="xs:string"> + <xs:enumeration value="automatic" /> + <xs:enumeration value="manual" /> + </xs:restriction> + </xs:simpleType> + + <xs:attribute name="parseUnparsePolicy" type="dfdlx:ParseUnparsePolicyEnum"/> + <xs:simpleType name="ParseUnparsePolicyEnum"> + <xs:restriction base="xs:string"> + <xs:enumeration value="both" /> + <xs:enumeration value="parseOnly" /> + <xs:enumeration value="unparseOnly" /> + </xs:restriction> + </xs:simpleType> + + <xs:attribute name="direction" type="dfdlx:VariableDirectionEnum"/> + <xs:simpleType name="VariableDirectionEnum"> + <xs:restriction base="xs:string"> + <xs:enumeration value="both" /> + <xs:enumeration value="parseOnly" /> + <xs:enumeration value="unparseOnly" /> + </xs:restriction> + </xs:simpleType> + + <xs:attribute name="emptyElementParsePolicy" type="dfdlx:EmptyElementParsePolicyEnum"/> <!-- deprecated --> + <xs:simpleType name="EmptyElementParsePolicyEnum"> + <xs:restriction base="xs:string"> + <xs:enumeration value="treatAsEmpty" /> + <xs:enumeration value="treatAsMissing" /> <!-- deprecated --> + </xs:restriction> + </xs:simpleType> + + <xs:attribute name="choiceBranchKeyRanges" type="dfdl:NonEmptyListOfInteger" /> + + <xs:attributeGroup name="SimpleTypeValueCalcAG"> + <xs:attribute form="qualified" name="repType" type="dfdl:DFDLQName" /> + <xs:attribute form="qualified" name="inputTypeCalc" type="dfdl:DFDLExpression" /> + <xs:attribute form="qualified" name="outputTypeCalc" type="dfdl:DFDLExpression" /> + <xs:attributeGroup ref="dfdlx:RepValuesAG" /> + </xs:attributeGroup> + + <xs:attributeGroup name="RepValuesAG"> + <xs:attribute form="qualified" name="repValues" type="dfdl:NonEmptyListofDFDLStringLiteralOrNonEmptyListOfInteger" /> + <xs:attribute form="qualified" name="repValueRanges" type="dfdl:NonEmptyListOfInteger" /> + </xs:attributeGroup> + + <xs:attributeGroup name="SimpleTypeValueCalcAGQualified"> + <xs:attribute form="qualified" name="repType" type="dfdl:DFDLQName" /> + <xs:attribute form="qualified" name="inputTypeCalc" type="dfdl:DFDLExpression" /> + <xs:attribute form="qualified" name="outputTypeCalc" type="dfdl:DFDLExpression" /> + <xs:attributeGroup ref="dfdlx:RepValuesAGQualified" /> + </xs:attributeGroup> + + <xs:attributeGroup name="RepValuesAGQualified"> + <xs:attribute form="qualified" name="repValues" type="dfdl:NonEmptyListofDFDLStringLiteralOrNonEmptyListOfInteger" /> + <xs:attribute form="qualified" name="repValueRanges" type="dfdl:NonEmptyListOfInteger" /> + </xs:attributeGroup> + + <xs:attributeGroup name="ExtLayeringAGQualified"> + <xs:attribute form="qualified" name="layerTransform" type="dfdlx:LayerTransformType" /> + <xs:attribute form="qualified" name="layerEncoding" type="dfdl:EncodingEnum_Or_DFDLExpression" /> + <xs:attribute form="qualified" name="layerLengthKind" type="dfdlx:LayerLengthKindEnum" /> + <xs:attribute form="qualified" name="layerLength" type="dfdl:DFDLNonNegativeInteger_Or_DFDLExpression" /> + <xs:attribute form="qualified" name="layerLengthUnits" type="dfdlx:LayerLengthUnitsEnum" /> + <xs:attribute form="qualified" name="layerBoundaryMark" type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" /> + </xs:attributeGroup> + + + <xs:simpleType name="LayerTransformType"> + <xs:union> + <xs:simpleType> + <xs:restriction base="dfdlx:LayerTransformEnum" /> + </xs:simpleType> + <xs:simpleType> + <xs:restriction base="xs:NCName" /><!-- for dynamically loaded layers --> + </xs:simpleType> + </xs:union> + </xs:simpleType> + + <xs:simpleType name="LayerTransformEnum"> + <xs:restriction base="xs:token"> + <xs:enumeration value="fourbyteswap"> + <xs:annotation> + <xs:documentation> + Swap bytes in 32 bit words. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="base64_MIME"> + <xs:annotation> + <xs:documentation> + IETF RFC 2045 + + Max line length 76 characters. + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="lineFolded_IMF"> + <xs:annotation> + <xs:documentation><![CDATA[ + IETF RFC 2822 Internet Message Format (IMF) + + Each line of characters MUST be no more than + 998 characters, and SHOULD be no more than 78 characters, excluding + the CRLF. + + Though structured field bodies are defined in such a way that + folding can take place between many of the lexical tokens (and even + within some of the lexical tokens), folding SHOULD be limited to + placing the CRLF at higher-level syntactic breaks. For instance, if + a field body is defined as comma-separated values, it is recommended + that folding occur after the comma separating the structured items in + preference to other places where the field could be folded, even if + it is allowed elsewhere. + + Unfolding is accomplished by simply removing any CRLF + that is immediately followed by WSP. + ]]> + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="lineFolded_iCalendar"> + <xs:annotation> + <xs:documentation><![CDATA[ + IETF RFC 5545 Internet Calendaring and Scheduling (iCalendar) + + Lines of text SHOULD NOT be longer than 75 octets, excluding the line + break. Long content lines SHOULD be split into a multiple line + representations using a line "folding" technique. That is, a long + line can be split between any two characters by inserting a CRLF + immediately followed by a single linear white-space character (i.e., + SPACE or HTAB). Any sequence of CRLF followed immediately by a + single linear white-space character is ignored (i.e., removed) when + processing the content type. + ]]> + </xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="gzip"> + <xs:annotation> + <xs:documentation> + GZIP per https://www.ietf.org/rfc/rfc1952.txt + </xs:documentation> + </xs:annotation> + </xs:enumeration> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="LayerLengthUnitsEnum"> + <xs:restriction base="xs:string"> + <xs:enumeration value="bytes" /> + </xs:restriction> + </xs:simpleType> + + <xs:simpleType name="LayerLengthKindEnum"> + <xs:restriction base="xs:string"> + <xs:enumeration value="explicit" /> + <xs:enumeration value="boundaryMark" /> + <xs:enumeration value="implicit" /> + </xs:restriction> + </xs:simpleType> + + <xs:attributeGroup name="ObjectKindAG"> + <xs:attribute form="qualified" name="objectKind" type="dfdlx:ObjectKindType" /> + </xs:attributeGroup> + + <xs:attributeGroup name="ObjectKindAGQualified"> + <xs:attribute form="qualified" name="objectKind" type="dfdlx:ObjectKindType" /> + </xs:attributeGroup> + + <xs:simpleType name="ObjectKindType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="bytes"/> + <xs:enumeration value="chars"/> + </xs:restriction> + </xs:simpleType> + + <xs:attributeGroup name="RuntimePropertiesAG"> + <xs:attribute form="qualified" name="runtimeProperties" type="dfdlx:RuntimePropertiesType" /> + </xs:attributeGroup> + + <xs:attributeGroup name="RuntimePropertiesAGQualified"> + <xs:attribute form="qualified" name="runtimeProperties" type="dfdlx:RuntimePropertiesType" /> + </xs:attributeGroup> + + <xs:simpleType name="RuntimePropertiesType"> + <xs:restriction base="dfdlx:KVList" /> + </xs:simpleType> + + <xs:simpleType name="KVList"> + <xs:list> + <xs:simpleType> + <xs:restriction base="xs:token"> + <xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*=\S*"/> + </xs:restriction> + </xs:simpleType> + </xs:list> + </xs:simpleType> + +</xs:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/tdml.xsd b/DFDL/attribution/org/apache/daffodil/xsd/tdml.xsd new file mode 100644 index 0000000000000000000000000000000000000000..5a9c157e31f49b781648c9eb6f7870c37cfa3228 --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/tdml.xsd @@ -0,0 +1,370 @@ +<?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 xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://www.ibm.com/xmlns/dfdl/testData" + xmlns:tns="http://www.ibm.com/xmlns/dfdl/testData" + elementFormDefault="unqualified" + xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <xsd:import namespace="http://www.w3.org/2001/XMLSchema" /> + <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" /> + <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/"/> + <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions"/> + + <xs:attribute name="tutorialInclude" type="xs:string" fixed="no"/> + +<!-- + This element's type is a stub that satisfies the need for xhtml5 validation as part of TDML files. + + It is just a wildcard with skip validation in it. So it's not really validating anything. + + Users of TDML creating tutorials should paste in known-correct xhtml5 as the contents of the + tutorial elements. +--> + <xs:element name="tutorial"> + <xs:complexType mixed="true"> + <xs:sequence> + <xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:anyAttribute namespace="##any" processContents="skip"/> + </xs:complexType> + </xs:element> + + <!-- IBM uses this namespace http://www.ibm.com/xmlns/dfdl/testData --> + + <element name="testSuite"> + <complexType> + <sequence> + <choice maxOccurs="unbounded" minOccurs="0"> + <element ref="tns:tutorial"/> + <element ref="tns:parserTestCase"/> + <!-- This is an extension to the IBM TDML language. We allow schemas + to be directly embedded inside the TDML file. A TDML file that contains all + the schemas it needs is a "self contained" TDML file. --> + <element ref="tns:defineSchema" minOccurs="0"/> + + <element ref="tns:defineConfig" minOccurs="0"/> + + <element ref="tns:unparserTestCase"/> + </choice> + </sequence> + <attribute name="suiteName" type="xs:token" use="optional"/> + <attribute name="ID" type="xs:token" use="optional"/> + <attribute name="description" type="xs:string" use="optional"/> + <attribute name="defaultRoundTrip" type="tns:roundTripType" use="optional"/> + <attribute name="defaultValidation" type="tns:validationType" use="optional"/> + <attribute name="defaultConfig" type="xs:string" use="optional"/> + <attribute name="defaultImplementations" type="tns:implementationsType" use="optional"/> + </complexType> + <unique name="unique-parserTestCase-name"> + <selector xpath="parserTestCase"/> + <field xpath="@name"/> + </unique> + <unique name="unique-unparserTestCase-name"> + <selector xpath="unparserTestCase"/> + <field xpath="@name"/> + </unique> + <unique name="unique-embeddedSchema-name"> + <selector xpath="defineSchema"/> + <field xpath="@name"/> + </unique> + <unique name="unique-embeddedConfig-name"> + <selector xpath="defineConfig"/> + <field xpath="@name"/> + </unique> + </element> + + <simpleType name="implementationsType"> + <list itemType="tns:implementationItem"/> + </simpleType> + + <simpleType name="implementationItem"> + <restriction base="xs:token"> + <enumeration value="daffodil"/> + <enumeration value="daffodilC"/> + <enumeration value="ibm"/> + </restriction> + </simpleType> + +<!-- We want to allow an xsd:schema to be named and directly embedded in + the TDML thereby allowing a fully-self-contained single file test case as + an exchange medium for tests. --> + + <element name="defineSchema" type="tns:defineSchemaType"/> + <complexType name="defineSchemaType"> + <choice maxOccurs='unbounded'> + <element ref='dfdl:format'/> + <element ref='dfdl:defineVariable'/> + <element ref='dfdl:defineEscapeScheme'/> + <element ref='dfdl:defineFormat'/> + <element ref='xs:element'/> + <element ref='xs:complexType'/> + <element ref='xs:group'/> + <element ref='xs:simpleType'/> + <element ref='xs:include'/> + <element ref='xs:import'/> + <!-- <any namespace="##other" processContents="lax"/> --> + </choice> + <attribute name="name" type="xs:NCName" use="required"/> + <!-- We want the default to be 'unqualified' in the longer term but + we leave it 'qualified here to prevent lots of tests from breaking. --> + <attribute name="elementFormDefault" type="tns:elementFormDefaultType" default="qualified"/> + <!-- we want the default for useDefaultNamespace to be false longer term but + we leave it as true here to prevent lots of tests from breaking. + 81 tests to be exact. --> + <attribute name="useDefaultNamespace" type="xs:boolean" default="true"> + <annotation><documentation> + Controls whether a xmlns="http://example.com" default namespace prefix + definition will be provided for the embedded schema. + + This matters when the defined schema is used to validate the infoset xml + before unparsing, or after parsing, as it affects the interpretation of + path expressions in the DFDL schema based on the unqualifiedPathStepPolicy + tunable. + + False is recommended since default namespaces can be confusing. + </documentation></annotation> + </attribute> + <attribute ref="tns:tutorialInclude"/> + </complexType> + + <element name="defineConfig" type="tns:defineConfigType"/> + <complexType name="defineConfigType"> + <sequence> + <element ref="daf:externalVariableBindings" minOccurs="0" maxOccurs="1"/> + <element ref="daf:tunables" minOccurs="0" maxOccurs="1"/> + </sequence> + <attribute name="name" type="xs:NCName" use="required"/> + </complexType> + + + <element name="parserTestCase" type="tns:parserTestCaseType"/> + <complexType name="parserTestCaseType"> + <choice minOccurs="2" maxOccurs="11"> + <!-- we can't enforce the cardinality in XSD 1.0 --> + <element ref="tns:tutorial"/> + <element ref="tns:document"/> + <element ref="tns:infoset"/> + <element ref="tns:errors"/> + <element ref="tns:warnings" minOccurs='0'/> + <element ref="tns:validationErrors" minOccurs="0"/> + </choice> + <attributeGroup ref="tns:testCaseAttribs"/> + </complexType> + + <attributeGroup name="testCaseAttribs"> + <attribute name="name" type="xs:NCName" use="required"/> + <attribute name="ID" type="xs:token" use="optional"/> + <attribute name="root" type="xs:NCName" use="optional"/> <!-- only needed when there is no infoset. --> + <attribute name="rootNS" type="xs:string" use="optional"/> <!-- only needed when there is no infoset. --> + <attribute name="model" type="xs:string" use="optional"/> <!-- is there a type for a path/uri? --> + <attribute name="config" type="xs:string" use="optional"/> <!-- is there a type for a path/uri? --> + <attribute name="roundTrip" type="tns:roundTripType" use="optional"/> + <attribute name="description" type="xs:string" use="optional"/> + <attribute name="unsupported" type="xs:boolean" use="optional" default="false"/> + <attribute name="validation" type="tns:validationType" use="optional"/> + <attribute name="implementations" type="tns:implementationsType" use="optional"/> + + </attributeGroup> + + <simpleType name="roundTripType"> + <restriction base="xs:token"> + <enumeration value="false"/> <!-- means same as none --> + <enumeration value="true"/> <!-- means same as onePass --> + <!-- + parse only - compare infoset. + --> + <enumeration value="none"/> + <!-- + parse, compare infoset, unparse - compare data + --> + <enumeration value="onePass"/> + <!-- + parse, unparse, reparse - compare infoset. + Note that this can mask certain errors. So must be used with caution. + --> + <enumeration value="twoPass"/> + <!-- + parse, unparse, reparse, reunparse, compare data. + Note that this can mask many kinds of errors very easily, so must be used + rarely and with caution. + --> + <enumeration value="threePass"/> + </restriction> + </simpleType> + + <simpleType name="elementFormDefaultType"> + <restriction base="xs:token"> + <enumeration value="qualified"/> + <enumeration value="unqualified"/> + </restriction> + </simpleType> + + <simpleType name="validationType"> + <restriction base="xs:token"> + <enumeration value="on"/> + <enumeration value="limited"/> + <enumeration value="off"/> + </restriction> + </simpleType> + + <element name="document" type="tns:documentType"/> + <element name="infoset" type="tns:infosetType"/> + <element name="errors" type="tns:errorsType"/> + <element name="warnings" type="tns:warningsType"/> + <element name="validationErrors" type="tns:validationErrorsType"/> + + <complexType name="documentType" mixed="true"> + <sequence> + <element ref="tns:documentPart" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="bitOrder" type="tns:bitOrderEnum" use="optional"/> + <attribute ref="tns:tutorialInclude"/> + </complexType> + + <element name="documentPart" type="tns:documentPartType"/> + <complexType name="documentPartType"> + <simpleContent> + <extension base="xs:string"> + <attribute name="type" type="tns:documentPartTypeEnum" use="required"/> + <attribute name="replaceDFDLEntities" type="xs:boolean"/> + <attributeGroup ref="tns:bitOrderAG"/> + <attribute name="encoding" type="xs:token" use="optional"/> + </extension> + </simpleContent> + </complexType> + + <simpleType name="documentPartTypeEnum"> + <restriction base="xs:string"> + <enumeration value="byte"/> + <enumeration value="text"/> + <enumeration value="bits"/> + <enumeration value="file"/> + </restriction> + </simpleType> + + <attributeGroup name="bitOrderAG"> + <attribute name="bitOrder" type="tns:bitOrderEnum" use="optional"/> + <attribute name="byteOrder" type="tns:byteOrderEnum" use="optional"/> + </attributeGroup> + + <simpleType name="byteOrderEnum"> + <annotation> + <documentation> + Not to be confused with dfdl:byteOrder, this attribute describes the + order of bits or bytes in the TDML document part, that is, whether + they + should be given their positions starting from the beginning (LTR) or the + end (RTL). LTR is the normal default where data location number + increase + from left to right. RTL is used for bit-order LSBFirst, and the bytes + are ordered starting on the right increasing to the left. + </documentation> + </annotation> + <restriction base="xs:string"> + <enumeration value="RTL"/> + <enumeration value="LTR"/> + </restriction> + </simpleType> + + <simpleType name="bitOrderEnum"> + <restriction base="xs:string"> + <enumeration value="LSBFirst"/> + <enumeration value="MSBFirst"/> + </restriction> + </simpleType> + + <complexType name="infosetType"> + <sequence> + <element ref="tns:dfdlInfoset"/> + </sequence> + <attribute ref="tns:tutorialInclude"/> + </complexType> + + <element name="dfdlInfoset" type="tns:dfdlInfosetType"/> + + <complexType name="dfdlInfosetType" mixed="true"> + <sequence> + <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="type" use="optional" default="infoset"> + <simpleType> + <restriction base="xs:string"> + <enumeration value="infoset"/> + <enumeration value="file"/> + </restriction> + </simpleType> + </attribute> + </complexType> + + <complexType name="errorsType"> + <sequence> + <element ref="tns:error" maxOccurs="unbounded" minOccurs="1"/> + </sequence> + <attributeGroup ref="tns:errorWarnAttribs"/> + </complexType> + + <complexType name="warningsType"> + <sequence> + <element ref="tns:warning" maxOccurs="unbounded" minOccurs="0"/> + <!-- use <warnings/> to indicate no warnings should occur. --> + </sequence> + <attributeGroup ref="tns:errorWarnAttribs"/> + </complexType> + + <complexType name="validationErrorsType"> + <sequence> + <element ref="tns:error" maxOccurs="unbounded" minOccurs="0"/> + <!-- use <validationErrors/> to indicate no validation should occur. --> + </sequence> + <attributeGroup ref="tns:errorWarnAttribs"/> + </complexType> + + <element name="error" type="xs:string"/> + <element name="warning" type="xs:string"/> + + <xs:attributeGroup name="errorWarnAttribs"> + <xs:attribute name="match" use="optional" default="all"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="all"/> + <xs:enumeration value="any"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:attributeGroup> + + <element name="unparserTestCase" type="tns:unparserTestCaseType"/> + <complexType name="unparserTestCaseType"> + <choice minOccurs="2" maxOccurs="9"> + <!-- we just can't enforce cardinality of any of these things using XSD 1.0 --> + <element ref="tns:tutorial"/> <!-- these before, between, or after any of the others --> + <element ref="tns:infoset"/> <!-- required --> + <element ref="tns:document"/> <!-- must have either document, or errors, or both --> + <element ref="tns:errors"/> + <element ref="tns:warnings"/> + </choice> + <attributeGroup ref="tns:testCaseAttribs"/> + </complexType> + +</xsd:schema> diff --git a/DFDL/attribution/org/apache/daffodil/xsd/xml.xsd b/DFDL/attribution/org/apache/daffodil/xsd/xml.xsd new file mode 100644 index 0000000000000000000000000000000000000000..fd6d5aaf40e7565f09eb864ab05018032e3c8b1a --- /dev/null +++ b/DFDL/attribution/org/apache/daffodil/xsd/xml.xsd @@ -0,0 +1,155 @@ +<?xml version='1.0'?> +<!-- + Copyright © 2018 World Wide Web Consortium, (Massachusetts + Institute of Technology, European Research Consortium for Informatics and + Mathematics, Keio University, Beihang). All Rights Reserved. This work is + distributed under the W3C® Software License [1] in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 +--> + +<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" + xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <xs:annotation> + <xs:documentation> + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + id (as an attribute name): denotes an attribute whose value + should be interpreted as if declared to be of type ID. + The xml:id specification is not yet a W3C Recommendation, + but this attribute is included here to facilitate experimentation + with the mechanisms it proposes. Note that it is _not_ included + in the specialAttrs attribute group. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>This schema defines attributes and an attribute + group + suitable for use by + schemas wishing to allow xml:base, xml:lang or xml:space attributes + on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>In keeping with the XML Schema WG's standard + versioning + policy, this schema document will persist at + http://www.w3.org/2004/10/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself, or with the XML namespace itself. In other words, if the + XML + Schema or XML namespaces change, the version of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2004/10/xml.xsd will not change. + </xs:documentation> + </xs:annotation> + + <xs:attribute name="lang" type="xs:language"> + <xs:annotation> + <xs:documentation>Attempting to install the relevant ISO 2- and + 3-letter + codes as the enumerated possible values is probably never + going to be a realistic possibility. See + RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry + at http://www.iana.org/assignments/lang-tag-apps.htm for + further information. + </xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="space"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="default" /> + <xs:enumeration value="preserve" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="base" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>See http://www.w3.org/TR/xmlbase/ for + information about this attribute. + </xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="id" type="xs:ID"> + <xs:annotation> + <xs:documentation>See http://www.w3.org/TR/xml-id/ for + information about this attribute. + </xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attributeGroup name="specialAttrs"> + <xs:attribute ref="xml:base" /> + <xs:attribute ref="xml:lang" /> + <xs:attribute ref="xml:space" /> + </xs:attributeGroup> + +</xs:schema>