Already a subscriber? 

MADCAD.com Free Trial
Sign up for a 3 day free trial to explore the MADCAD.com interface, PLUS access the
2009 International Building Code to see how it all works.
If you like to setup a quick demo, let us know at support@madcad.com
or +1 800.798.9296 and we will be happy to schedule a webinar for you.
Security check
Please login to your personal account to use this feature.
Please login to your authorized staff account to use this feature.
Are you sure you want to empty the cart?

BS ISO/IEC 23415:2024 Information technology. Data Format Description Language (DFDL) v1.0 Specification, 2024
- undefined
- 1 Introduction [Go to Page]
- 1.1 Why is DFDL Needed?
- 1.2 What is DFDL? [Go to Page]
- 1.2.1 Simple Example
- 1.3 What DFDL is not
- 1.4 Scope of version 1.0
- 2 Overview of the Specification
- 3 Notational and Definitional Conventions [Go to Page]
- 3.1 Glossary and Terminology
- 3.2 Failure Types
- 4 The DFDL Information Set (Infoset) [Go to Page]
- 4.1 "No Value''
- 4.2 Information Items [Go to Page]
- 4.2.1 Document Information Item
- 4.2.2 Element Information Items
- 4.3 DFDL Information Item Order
- 4.4 DFDL Augmented Infoset
- 5 DFDL Schema Component Model [Go to Page]
- 5.1 DFDL Simple Types
- 5.2 DFDL Subset of XML Schema
- 5.3 XSD Facets, min/maxOccurs, default, and fixed [Go to Page]
- 5.3.1 MinOccurs, MaxOccurs
- 5.3.2 MinLength, MaxLength
- 5.3.3 MaxInclusive, MaxExclusive, MinExclusive, MinInclusive, TotalDigits, FractionDigits
- 5.3.4 Pattern
- 5.3.5 Enumeration Values
- 5.3.6 Default
- 5.3.7 Fixed
- 5.4 Compatibility with Other Annotation Language Schemas
- 6 DFDL Syntax Basics [Go to Page]
- 6.1 Namespaces
- 6.2 The DFDL Annotation Elements
- 6.3 DFDL Properties [Go to Page]
- 6.3.1 DFDL String Literals [Go to Page]
- 6.3.1.1 Character strings in DFDL String Literals
- 6.3.1.2 DFDL Character Entities, Character Class Entities, and Byte Values in String Literals
- 6.3.1.3 DFDL Character Class Entities in DFDL String Literals
- 6.3.1.4 DFDL Byte Value Entities in DFDL String Literals
- 6.3.2 DFDL Expressions
- 6.3.3 DFDL Regular Expressions
- 6.3.4 Enumerations in DFDL
- 7 Syntax of DFDL Annotation Elements [Go to Page]
- 7.1 Component Format Annotations [Go to Page]
- 7.1.1 Property Binding Syntax [Go to Page]
- 7.1.1.1 Property Binding Syntax: Attribute Form
- 7.1.1.2 Property Binding Syntax: Element Form
- 7.1.1.3 Property Binding Syntax: Short Form
- 7.1.2 Empty String as a Representation Property Value
- 7.2 dfdl:defineFormat - Reusable Data Format Definitions [Go to Page]
- 7.2.1 Using/Referencing a Named Format Definition: The dfdl:ref Property
- 7.2.2 Inheritance for dfdl:defineFormat
- 7.3 The dfdl:defineEscapeScheme Defining Annotation Element [Go to Page]
- 7.3.1 Using/Referencing a Named escapeScheme Definition
- 7.4 The dfdl:escapeScheme Annotation Element
- 7.5 The dfdl:assert Statement Annotation Element [Go to Page]
- 7.5.1 Properties for dfdl:assert
- 7.6 The dfdl:discriminator Statement Annotation Element [Go to Page]
- 7.6.1 Properties for dfdl:discriminator
- 7.7 DFDL Variable Annotations [Go to Page]
- 7.7.1 dfdl:defineVariable Annotation Element [Go to Page]
- 7.7.1.1 Examples
- 7.7.1.2 Predefined Variables
- 7.7.2 The dfdl:newVariableInstance Statement Annotation Element [Go to Page]
- 7.7.2.1 Examples
- 7.7.3 The dfdl:setVariable Statement Annotation Element [Go to Page]
- 7.7.3.1 Examples
- 8 Property Scoping and DFDL Schema Checking [Go to Page]
- 8.1 Property Scoping [Go to Page]
- 8.1.1 Property Scoping Rules
- 8.1.2 Providing Defaults for DFDL properties
- 8.1.3 Combining DFDL Representation Properties from a dfdl:defineFormat
- 8.1.4 Combining DFDL Properties from References
- 8.2 DFDL Schema Checking [Go to Page]
- 8.2.1 Schema Component Constraint: Unique Particle Attribution
- 8.2.2 Optional Checks and Warnings
- 9 DFDL Processing Introduction [Go to Page]
- 9.1 Parser Overview [Go to Page]
- 9.1.1 Points of Uncertainty
- 9.1.2 Processing Error
- 9.1.3 Recoverable Error
- 9.2 DFDL Data Syntax Grammar [Go to Page]
- 9.2.1 Nil Representation
- 9.2.2 Empty Representation
- 9.2.3 Normal Representation
- 9.2.4 Absent Representation
- 9.2.5 Zero-length Representation
- 9.2.6 Missing
- 9.2.7 Examples of Missing and Empty Representation
- 9.2.8 Round Trip Ambiguities
- 9.3 Parsing Algorithm [Go to Page]
- 9.3.1 Known-to-exist and Known-not-to-exist [Go to Page]
- 9.3.1.1 Known-to-exist
- 9.3.1.2 Processing Error After Determining Known-to-exist
- 9.3.1.3 Known-not-to-exist
- 9.3.2 Establishing Representation [Go to Page]
- 9.3.2.1 Simple element
- 9.3.2.2 Complex element
- 9.3.3 Resolving Points of Uncertainty [Go to Page]
- 9.3.3.1 Nested Points of Uncertainty
- 9.4 Element Defaults [Go to Page]
- 9.4.1 Definitions [Go to Page]
- 9.4.1.1 Default Value
- 9.4.1.2 Required/Optional Occurrence
- 9.4.2 Element Defaults When Parsing [Go to Page]
- 9.4.2.1 Simple element (not xs:string and not xs:hexBinary)
- 9.4.2.2 Simple element (xs:string or xs:hexBinary)
- 9.4.2.3 Complex element
- 9.4.2.4 Example: Complex Optional Empty Element Not Added to Infoset
- 9.4.2.5 Example: Complex Optional Empty Element with Delimiters
- 9.4.3 Element Defaults When Unparsing [Go to Page]
- 9.4.3.1 Simple element
- 9.4.3.2 Complex element
- 9.5 Evaluation Order for Statement Annotations [Go to Page]
- 9.5.1 Asserts and Discriminators with testKind 'expression'
- 9.5.2 Discriminators with testKind 'expression'
- 9.5.3 Elements and setVariable
- 9.5.4 Controlling the Order of Statement Evaluation
- 9.6 Validation
- 9.7 Unparser Infoset Augmentation Algorithm
- 10 Overview: Representation Properties and their Format Semantics
- 11 Properties Common to both Content and Framing [Go to Page]
- 11.1 Unicode Byte Order Mark (BOM)
- 11.2 Character Encoding and Decoding Errors [Go to Page]
- 11.2.1 Property dfdl:encodingErrorPolicy [Go to Page]
- 11.2.1.1 dfdl:encodingErrorPolicy 'error'
- 11.2.1.2 dfdl:encodingErrorPolicy 'replace' for parsing
- 11.2.1.3 dfdl:encodingErrorPolicy 'replace' for unparsing
- 11.2.2 Unicode UTF-16 Decoding/Encoding Non-Errors
- 11.2.3 Preserving Data Containing Decoding Errors
- 11.3 Byte Order and Bit Order
- 11.4 dfdl:bitOrder Example [Go to Page]
- 11.4.1 Example Using Right-to-Left Display for 'leastSignificantBitFirst'
- 11.4.2 dfdl:bitOrder and Grammar Regions
- 12 Framing [Go to Page]
- 12.1 Aligned Data [Go to Page]
- 12.1.1 Implicit Alignment
- 12.1.2 Mandatory Alignment for Textual Data
- 12.1.3 Mandatory Alignment for Packed Decimal Data
- 12.1.4 Example: AlignmentFill
- 12.2 Properties for Specifying Delimiters
- 12.3 Properties for Specifying Lengths [Go to Page]
- 12.3.1 dfdl:lengthKind 'explicit'
- 12.3.2 dfdl:lengthKind 'delimited' [Go to Page]
- 12.3.2.1 Non-Delimited Elements within Delimited Constructs
- 12.3.2.2 Delimited Binary Data
- 12.3.3 dfdl:lengthKind 'implicit'
- 12.3.4 dfdl:lengthKind 'prefixed' [Go to Page]
- 12.3.4.1 Nested Prefix Lengths37F
- 12.3.5 dfdl:lengthKind 'pattern'
- 12.3.6 dfdl:lengthKind 'endOfParent'
- 12.3.7 Elements of Specified Length [Go to Page]
- 12.3.7.1 Length of Simple Elements with Textual Representation [Go to Page]
- 12.3.7.1.1 Text Length Specified in Bytes
- 12.3.7.2 Length of Simple Elements with Binary Representation [Go to Page]
- 12.3.7.2.1 Length of Base-2 Binary Number Elements
- 12.3.7.2.2 Length of Floating Point Binary Number Elements
- 12.3.7.2.3 Length of Packed Decimal Number Elements
- 12.3.7.2.4 Length of Binary Boolean Elements
- 12.3.7.2.5 Length of Base-2 Binary Calendar Elements
- 12.3.7.2.6 Length of Packed Decimal Calendar Elements
- 12.3.7.2.7 Length of Binary Opaque Elements
- 12.3.7.3 Length of Complex Elements
- 13 Simple Types [Go to Page]
- 13.1 Properties Common to All Simple Types
- 13.2 Properties Common to All Simple Types with Text representation [Go to Page]
- 13.2.1 The dfdl:escapeScheme Properties [Go to Page]
- 13.2.1.1 Escape Scheme Example
- 13.3 Properties for Bidirectional support for All Simple Types with Text representation
- 13.4 Properties Specific to String
- 13.5 Properties Specific to Number with Text or Binary Representation
- 13.6 Properties Specific to Number with Text Representation [Go to Page]
- 13.6.1 The dfdl:textNumberPattern Property [Go to Page]
- 13.6.1.1 dfdl:textNumberPattern for dfdl:textNumberRep 'standard'
- 13.6.1.2 dfdl:textNumberPattern for dfdl:textNumberRep 'zoned'
- 13.6.2 Converting logical numbers to/from text representation
- 13.7 Properties Specific to Number with Binary Representation [Go to Page]
- 13.7.1 Converting Logical Numbers to/from Binary Representation [Go to Page]
- 13.7.1.1 Converting Base-2 Binary Numbers
- 13.7.1.2 Bit strings, Alignment, and dfdl:fillByte
- 13.7.1.3 Bits within Bit Strings of Length <= 8
- 13.7.1.4 Bits within Bit Strings of Length > 8 [Go to Page]
- 13.7.1.4.1 Examples of Unsigned Integer Conversion
- 13.7.1.5 Converting Packed Decimal Numbers
- 13.8 Properties Specific to Float/Double with Binary Representation
- 13.9 Properties Specific to Boolean with Text Representation
- 13.10 Properties Specific to Boolean with Binary Representation
- 13.11 Properties Specific to Calendar with Text or Binary Representation [Go to Page]
- 13.11.1 The dfdl:calendarPattern property
- 13.11.2 The dfdl:calendarCheckPolicy Property
- 13.12 Properties Specific to Calendar with Text Representation
- 13.13 Properties Specific to Calendar with Binary Representation
- 13.14 Properties Specific to Opaque Types (xs:hexBinary)
- 13.15 Nil Value Processing
- 13.16 Properties for Nillable Elements
- 14 Sequence Groups [Go to Page]
- 14.1 Empty Sequences
- 14.2 Sequence Groups with Separators [Go to Page]
- 14.2.1 Separators and Suppression
- 14.2.2 Parsing Sequence Groups with Separators [Go to Page]
- 14.2.2.1 Errors When the Sequence is Positional
- 14.2.2.2 Example Parsing Scenarios
- 14.2.2.3 Parsing Child Groups within Separated Sequences
- 14.2.3 Unparsing Sequence Groups with Separators [Go to Page]
- 14.2.3.1 Example Unparsing Scenarios
- 14.2.3.2 Unparsing Child Groups within Separated Sequences
- 14.3 Unordered Sequence Groups [Go to Page]
- 14.3.1 Restrictions for Unordered Sequences
- 14.3.2 Parsing an Unordered Sequence [Go to Page]
- 14.3.2.1 Source-to-source Transformation
- 14.3.2.2 Post-processing Transformation
- 14.3.3 Unparsing an Unordered Sequence
- 14.4 Floating Elements
- 14.5 Hidden Groups
- 15 Choice Groups [Go to Page]
- 15.1 Resolving Choices [Go to Page]
- 15.1.1 Resolving Choices via Speculation
- 15.1.2 Resolving Choices via Direct Dispatch
- 15.1.3 Unparsing Choices [Go to Page]
- 15.1.3.1 Unparsing Choices in Hidden Groups
- 16 Properties for Array Elements and Optional Elements [Go to Page]
- 16.1 The dfdl:occursCountKind property [Go to Page]
- 16.1.1 dfdl:occursCountKind 'fixed'
- 16.1.2 dfdl:occursCountKind 'implicit'
- 16.1.3 dfdl:occursCountKind 'parsed'
- 16.1.4 dfdl:occursCountKind 'expression'
- 16.1.5 dfdl:occursCountKind 'stopValue'
- 16.2 Default Values for Arrays
- 16.3 Arrays with DFDL Expressions
- 16.4 Points of Uncertainty
- 16.5 Arrays and Sequences
- 16.6 Forward Progress Requirement
- 16.7 Parsing Occurrences with Non-Normal Representation
- 16.8 Sparse Arrays
- 17 Calculated Value Properties [Go to Page]
- 17.1 Example: 2d Nested Array
- 17.2 Example: Three-Byte Date
- 18 DFDL Expression Language [Go to Page]
- 18.1 Expression Language Data Model
- 18.2 Variables [Go to Page]
- 18.2.1 Rewinding of Variable Memory State
- 18.2.2 Variable Memory State Transitions
- 18.3 General Syntax
- 18.4 DFDL Expression Syntax
- 18.5 Constructors, Functions and Operators [Go to Page]
- 18.5.1 Constructor Functions for XML Schema Built-in Types
- 18.5.2 Standard XPath Functions [Go to Page]
- 18.5.2.1 Boolean functions
- 18.5.2.2 Numeric Functions
- 18.5.2.3 String Functions
- 18.5.2.4 Date and Time Functions
- 18.5.2.5 Node Sequence Test Functions
- 18.5.2.6 Node functions
- 18.5.2.7 Nillable Element Functions
- 18.5.3 DFDL Functions
- 18.5.4 DFDL Constructor Functions
- 18.5.5 Miscellaneous Functions
- 18.6 Unparsing and Circular Expression Deadlock Errors
- 19 DFDL Regular Expressions
- 20 External Control of the DFDL Processor
- 21 Built-in Specifications
- 22 Conformance
- 23 Optional DFDL Features
- 24 Security Considerations
- 25 Authors and Contributors
- 26 Intellectual Property Statement
- 27 Disclaimer
- 28 Full Copyright Notice
- 29 References
- 30 Appendix A: Escape Scheme Use Cases [Go to Page]
- 30.1 Escape Character Same as dfdl:escapeEscapeCharacter
- 30.2 Escape Character Different from dfdl:escapeEscapeCharacter [Go to Page]
- 30.2.1 Example 1 - Separator ';'
- 30.2.2 Example 2 - Separator 'sep'
- 30.3 Escape Block with Different Start and End Characters
- 30.4 Escape Block with Same Start and End Characters
- 31 Appendix B: Rationale for Single-Assignment Variables
- 32 Appendix C: Processing of DFDL String literals [Go to Page]
- 32.1 Interpreting a DFDL String Literal
- 32.2 Recognizing a DFDL String Literal
- 32.3 Recognizing DFDL String Literal Part
- 33 Appendix D: DFDL Standard Encodings50F [Go to Page]
- 33.1 Purpose
- 33.2 Conventions
- 33.3 Specification Template
- 33.4 Encoding X-DFDL-US-ASCII-7-BIT-PACKED [Go to Page]
- 33.4.1 Name
- 33.4.2 Translation table
- 33.4.3 Width
- 33.4.4 Alignment
- 33.4.5 Byte Order
- 33.4.6 Example 1
- 33.4.7 Example 2
- 33.5 Encoding X-DFDL-US-ASCII-6-BIT-PACKED [Go to Page]
- 33.5.1 Name
- 33.5.2 Translation Table
- 33.5.3 Width
- 33.5.4 Alignment
- 33.5.5 ByteOrder
- 33.5.6 Example 1
- 33.6 References for Appendix D52F
- 34 Appendix E: Glossary of Terms
- 35 Appendix F: Specific Errors Classified
- 36 Appendix G: Property Precedence [Go to Page]
- 36.1 Parsing [Go to Page]
- 36.1.1 dfdl:element (simple) and dfdl:simpleType
- 36.1.2 dfdl:element (complex)
- 36.1.3 dfdl:sequence and dfdl:group (when reference is to a sequence)
- 36.1.4 dfdl:choice and dfdl:group (when reference is to a choice)
- 36.2 Unparsing [Go to Page]
- 36.2.1 dfdl:element (simple) and dfdl:simpleType
- 36.2.2 dfdl:element (complex)
- 36.2.3 dfdl:sequence and dfdl:group (when reference is a sequence)
- 36.2.4 dfdl:choice and dfdl:group (when reference is a choice) [Go to Page]