blob: 9f0b2a2159c42708c7008532498dbb60f824d466 [file] [log] [blame]
<?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" />
<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"/>
<!-- ==================================================================== -->
<!-- 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.
-->
<xsd:group name="anyOther">
<xsd:sequence>
<xsd:any namespace="##other" processContents="lax" />
</xsd:sequence>
</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 ref="dfdlx:emptyElementParsePolicy"/>
<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" />
<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" />
<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="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="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" />
<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>