This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/daffodil-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new f2b2acf Publishing from da4927bfb170c7cd3d44c21671dd80bc4e88e53a
f2b2acf is described below
commit f2b2acffa785bfaf1f91f78c2a0f133da150b520
Author: Apache Daffodil Site Autobuild <[email protected]>
AuthorDate: Tue Dec 23 19:19:10 2025 +0000
Publishing from da4927bfb170c7cd3d44c21671dd80bc4e88e53a
---
.../best-practices/P-Avoid-Check-Constraints.pdf | Bin 0 -> 187529 bytes
.../best-practices/P-Avoid-Check-Constraints.pptx | Bin 0 -> 261131 bytes
.../P-DFDL-BLOBs-v-HexBinary-array.pdf | Bin 0 -> 138852 bytes
.../P-DFDL-BLOBs-v-HexBinary-array.pptx | Bin 0 -> 255363 bytes
content/best-practices/P-DFDL-Reject-Elements.pdf | Bin 0 -> 96789 bytes
content/best-practices/P-DFDL-Reject-Elements.pptx | Bin 0 -> 253205 bytes
.../best-practices/P-DFDL-Round-Trip-Testing.pdf | Bin 0 -> 141572 bytes
.../best-practices/P-DFDL-Round-Trip-Testing.pptx | Bin 0 -> 323912 bytes
content/best-practices/P-DFDL-Structured-Text.pdf | Bin 0 -> 146772 bytes
content/best-practices/P-DFDL-Structured-Text.pptx | Bin 0 -> 258146 bytes
.../Proposed-DFDL-Standard-Profile/index.html | 81 ++++++++++++++----
content/dfdl-best-practices/index.html | 93 ++++++++++++---------
content/dfdl-extensions/index.html | 10 +++
content/dfdl-training/index.html | 8 ++
.../P-DFDL-Properties-lengthKind-bitOrder.pdf | Bin 0 -> 133664 bytes
.../P-DFDL-Properties-lengthKind-bitOrder.pptx | Bin 0 -> 259843 bytes
.../tutorials/P-Filling-vs-Padding-Trimming.pdf | Bin 0 -> 143349 bytes
.../tutorials/P-Filling-vs-Padding-Trimming.pptx | Bin 0 -> 255931 bytes
18 files changed, 135 insertions(+), 57 deletions(-)
diff --git a/content/best-practices/P-Avoid-Check-Constraints.pdf
b/content/best-practices/P-Avoid-Check-Constraints.pdf
new file mode 100755
index 0000000..c30522b
Binary files /dev/null and
b/content/best-practices/P-Avoid-Check-Constraints.pdf differ
diff --git a/content/best-practices/P-Avoid-Check-Constraints.pptx
b/content/best-practices/P-Avoid-Check-Constraints.pptx
new file mode 100755
index 0000000..887b90f
Binary files /dev/null and
b/content/best-practices/P-Avoid-Check-Constraints.pptx differ
diff --git a/content/best-practices/P-DFDL-BLOBs-v-HexBinary-array.pdf
b/content/best-practices/P-DFDL-BLOBs-v-HexBinary-array.pdf
new file mode 100755
index 0000000..d962f89
Binary files /dev/null and
b/content/best-practices/P-DFDL-BLOBs-v-HexBinary-array.pdf differ
diff --git a/content/best-practices/P-DFDL-BLOBs-v-HexBinary-array.pptx
b/content/best-practices/P-DFDL-BLOBs-v-HexBinary-array.pptx
new file mode 100755
index 0000000..f47ae01
Binary files /dev/null and
b/content/best-practices/P-DFDL-BLOBs-v-HexBinary-array.pptx differ
diff --git a/content/best-practices/P-DFDL-Reject-Elements.pdf
b/content/best-practices/P-DFDL-Reject-Elements.pdf
new file mode 100755
index 0000000..a5e0bed
Binary files /dev/null and b/content/best-practices/P-DFDL-Reject-Elements.pdf
differ
diff --git a/content/best-practices/P-DFDL-Reject-Elements.pptx
b/content/best-practices/P-DFDL-Reject-Elements.pptx
new file mode 100755
index 0000000..d91cc27
Binary files /dev/null and b/content/best-practices/P-DFDL-Reject-Elements.pptx
differ
diff --git a/content/best-practices/P-DFDL-Round-Trip-Testing.pdf
b/content/best-practices/P-DFDL-Round-Trip-Testing.pdf
new file mode 100755
index 0000000..6521f9e
Binary files /dev/null and
b/content/best-practices/P-DFDL-Round-Trip-Testing.pdf differ
diff --git a/content/best-practices/P-DFDL-Round-Trip-Testing.pptx
b/content/best-practices/P-DFDL-Round-Trip-Testing.pptx
new file mode 100755
index 0000000..af54f24
Binary files /dev/null and
b/content/best-practices/P-DFDL-Round-Trip-Testing.pptx differ
diff --git a/content/best-practices/P-DFDL-Structured-Text.pdf
b/content/best-practices/P-DFDL-Structured-Text.pdf
new file mode 100755
index 0000000..b70ccc3
Binary files /dev/null and b/content/best-practices/P-DFDL-Structured-Text.pdf
differ
diff --git a/content/best-practices/P-DFDL-Structured-Text.pptx
b/content/best-practices/P-DFDL-Structured-Text.pptx
new file mode 100755
index 0000000..a8dfea4
Binary files /dev/null and b/content/best-practices/P-DFDL-Structured-Text.pptx
differ
diff --git a/content/dev/design-notes/Proposed-DFDL-Standard-Profile/index.html
b/content/dev/design-notes/Proposed-DFDL-Standard-Profile/index.html
index f0b8625..f06b8fe 100644
--- a/content/dev/design-notes/Proposed-DFDL-Standard-Profile/index.html
+++ b/content/dev/design-notes/Proposed-DFDL-Standard-Profile/index.html
@@ -102,10 +102,57 @@
-->
-<p><em>Version 0.3 2023-12-08</em></p>
+<p><em>Version 0.4 2025-12-22</em></p>
+
+<h3 class="no_toc" id="table-of-contents">Table of Contents</h3>
+<!-- The {: .no_toc } excludes the above heading from the ToC -->
+
+<ol id="markdown-toc">
+ <li><a href="#introduction"
id="markdown-toc-introduction">Introduction</a></li>
+ <li><a href="#standard-profile-restrictions"
id="markdown-toc-standard-profile-restrictions">Standard Profile
Restrictions</a> <ol>
+ <li><a href="#groupReferencesCannotCarryDFDLProperties"
id="markdown-toc-groupReferencesCannotCarryDFDLProperties">Group References
Cannot Carry DFDL Properties</a></li>
+ <li><a href="#noElementReferences"
id="markdown-toc-noElementReferences">No Element References</a></li>
+ <li><a href="#no-namespace-qualified-names"
id="markdown-toc-no-namespace-qualified-names">No Namespace-Qualified
Names</a></li>
+ <li><a href="#unique-namespace-prefixes"
id="markdown-toc-unique-namespace-prefixes">Unique Namespace Prefixes</a></li>
+ <li><a href="#allElementChildrenHaveUniqueNames"
id="markdown-toc-allElementChildrenHaveUniqueNames">All Element Children Have
Unique Names</a> <ol>
+ <li><a href="#discussion"
id="markdown-toc-discussion">Discussion</a></li>
+ </ol>
+ </li>
+ <li><a href="#nillable-simple-types-only-tbd-may-not-be-necessary"
id="markdown-toc-nillable-simple-types-only-tbd-may-not-be-necessary">Nillable
Simple Types Only (TBD: May not be necessary)</a> <ol>
+ <li><a href="#rationale"
id="markdown-toc-rationale">Rationale</a></li>
+ </ol>
+ </li>
+ <li><a href="#element-nameidentifier-restrictions"
id="markdown-toc-element-nameidentifier-restrictions">Element Name/Identifier
Restrictions</a></li>
+ <li><a href="#string-content-restrictions"
id="markdown-toc-string-content-restrictions">String Content Restrictions</a>
<ol>
+ <li><a href="#rationale-1"
id="markdown-toc-rationale-1">Rationale</a></li>
+ </ol>
+ </li>
+ <li><a href="#import-schemalocation"
id="markdown-toc-import-schemalocation">Import <code class="language-plaintext
highlighter-rouge">schemaLocation</code></a></li>
+ </ol>
+ </li>
+ <li><a href="#existing-dfdl-restrictions"
id="markdown-toc-existing-dfdl-restrictions">Existing DFDL Restrictions</a></li>
+ <li><a href="#possible-additional-restrictions"
id="markdown-toc-possible-additional-restrictions">Possible additional
restrictions</a> <ol>
+ <li><a
href="#troublesome-placement-of-dfdlassert-and-dfdldiscriminator-on-sequences--choices"
id="markdown-toc-troublesome-placement-of-dfdlassert-and-dfdldiscriminator-on-sequences--choices">Troublesome
Placement of dfdl:assert and dfdl:discriminator on Sequences &
Choices</a></li>
+ </ol>
+ </li>
+ <li><a href="#requestingenabling-the-standard-profile"
id="markdown-toc-requestingenabling-the-standard-profile">Requesting/Enabling
the Standard Profile</a></li>
+ <li><a href="#use-cases" id="markdown-toc-use-cases">Use Cases</a> <ol>
+ <li><a href="#mechanisms-for-requesting-the-standard-profile"
id="markdown-toc-mechanisms-for-requesting-the-standard-profile">Mechanisms for
Requesting the Standard Profile</a></li>
+ </ol>
+ </li>
+</ol>
+<!-- note the above line {:toc} cannot have whitespace at the start -->
<h2 id="introduction">Introduction</h2>
+<blockquote>
+ <p><strong>Note:</strong> This proposed standard profile overlaps a great
deal with the
+<a href="/dfdl-best-practices">DFDL Schema Best Practices</a> and can be
viewed as a
+mechanism to enforce many of those practices.</p>
+
+ <p>This page needs to be revised in light of the best practices page.</p>
+</blockquote>
+
<p>In attempting to integrate Apache Daffodil with other data processing
software, the need to make
DFDL schemas interoperate properly in conjunction with other data models has
arisen.</p>
@@ -121,10 +168,15 @@ structured data.</p>
<p>The following things are allowed in DFDL v1.0, but are difficult to map
into most data models:</p>
<ul>
- <li>anonymous choices</li>
- <li>duplicate element child names</li>
- <li>namespaces that are different, but where the prefixes are not unique</li>
- <li>global names for element children</li>
+ <li><a href="/dfdl-best-practices#avoidAnonymousChoices">anonymous
choices</a></li>
+ <li><a href="/dfdl-best-practices#AvoidChildElementsWithSameName">duplicate
element child names</a></li>
+ <li>namespaces that are different, but where the prefixes are not unique
+ <ul>
+ <li>There are numerous guidelines about namespaces and avoiding prefixes
in the
+<a href="/dfdl-best-practices">DFDL Schema Best Practices</a></li>
+ </ul>
+ </li>
+ <li><a href="/dfdl-best-practices#avoidElementNamespaces">global names for
element children</a></li>
</ul>
<p>A more restrictive subset of DFDL, a <em>standard profile</em>, is needed
which can be enforced (on
@@ -137,15 +189,11 @@ standard profile (which is a subset of DFDL).</p>
<h2 id="standard-profile-restrictions">Standard Profile Restrictions</h2>
-<h3 id="no-anonymous-choices">No Anonymous Choices</h3>
-
-<p>Choices must be the model groups of complex type definitions and are not
allowed in any other
-context.</p>
+<h3 id="groupReferencesCannotCarryDFDLProperties">Group References Cannot
Carry DFDL Properties</h3>
-<p>Each choice branch must begin with a different element. (This is already a
XML Schema requirement -
-Unique Particle Attribution.)</p>
-
-<h3 id="group-references-cannot-carry-dfdl-properties">Group References Cannot
Carry DFDL Properties</h3>
+<blockquote>
+ <p><strong>Note:</strong> This is not mentioned in the best practices, but
should be.</p>
+</blockquote>
<p>Group references are allowed, but DFDL format properties cannot be
expressed on group references; hence,
combining those properties with those of the group definition is not
required.</p>
@@ -164,7 +212,7 @@ Allowing groups and group references reduces the difficulty
of converting many l
schemas to conform to the standard profile, and makes this possible without
introducing many
otherwise unneeded element and type definitions.</p>
-<h3 id="no-element-references">No Element References</h3>
+<h3 id="noElementReferences">No Element References</h3>
<p>There is no corresponding form of sharing in most data structure
systems.</p>
@@ -179,7 +227,7 @@ Note that this is the default for XML Schema and DFDL.</p>
<p>This enables one to create unique identifiers by concatenating prefix_local
to create global names.</p>
-<h3 id="all-element-children-have-unique-names">All Element Children Have
Unique Names</h3>
+<h3 id="allElementChildrenHaveUniqueNames">All Element Children Have Unique
Names</h3>
<p>All children element declarations must have unique names within their
enclosing parent element.</p>
@@ -311,7 +359,7 @@ it, requiring instead that an inner sequence carrying the
assertion or
discriminator with NO child content, be inserted in the sequence at the
point where the evaluation is required to occur.</p>
-<p>Requesting/Enabling the Standard Profile</p>
+<h2 id="requestingenabling-the-standard-profile">Requesting/Enabling the
Standard Profile</h2>
<p>If the standard profile is requested, then use of constructs outside of the
standard profile is a
Schema Definition Error.</p>
@@ -371,7 +419,6 @@ profile should cause a Schema Definition Error.
The inverse however, is not true.
A schema that explicitly obeys the standard profile can be included/imported
into any schema.</p>
-
</div>
</div>
diff --git a/content/dfdl-best-practices/index.html
b/content/dfdl-best-practices/index.html
index 5b6dde8..aa12ad5 100644
--- a/content/dfdl-best-practices/index.html
+++ b/content/dfdl-best-practices/index.html
@@ -107,14 +107,14 @@
<ol id="markdown-toc">
<li><a href="#introduction"
id="markdown-toc-introduction">Introduction</a></li>
- <li><a href="#avoid-element-namespaces"
id="markdown-toc-avoid-element-namespaces">Avoid Element Namespaces</a> <ol>
+ <li><a href="#avoidElementNamespaces"
id="markdown-toc-avoidElementNamespaces">Avoid Element Namespaces</a> <ol>
<li><a href="#namespace-uri-conventions"
id="markdown-toc-namespace-uri-conventions">Namespace URI Conventions</a></li>
<li><a href="#noVersionsInNamespaceURIs"
id="markdown-toc-noVersionsInNamespaceURIs">Versioning - In the Infoset/Data,
Not the Namespace URI</a></li>
</ol>
</li>
<li><a href="#express-dfdl-properties-on-the-simple-types-not-the-elements"
id="markdown-toc-express-dfdl-properties-on-the-simple-types-not-the-elements">Express
DFDL Properties on the Simple Types, not the Elements</a></li>
- <li><a href="#avoid-child-elements-with-the-same-name"
id="markdown-toc-avoid-child-elements-with-the-same-name">Avoid Child Elements
with the Same Name</a></li>
- <li><a href="#avoid-anonymous-choices"
id="markdown-toc-avoid-anonymous-choices">Avoid Anonymous Choices</a></li>
+ <li><a href="#AvoidChildElementsWithSameName"
id="markdown-toc-AvoidChildElementsWithSameName">Avoid Child Elements with the
Same Name</a></li>
+ <li><a href="#avoidAnonymousChoices"
id="markdown-toc-avoidAnonymousChoices">Avoid Anonymous Choices</a></li>
<li><a href="#versionInMarkerElements"
id="markdown-toc-versionInMarkerElements">Versioning and Choices - Using Marker
Elements</a></li>
<li><a href="#parse-and-unparse-symmetry"
id="markdown-toc-parse-and-unparse-symmetry">Parse and Unparse Symmetry</a></li>
<li><a href="#avoid-choices-with-empty-branches"
id="markdown-toc-avoid-choices-with-empty-branches">Avoid Choices with Empty
Branches</a></li>
@@ -158,9 +158,18 @@ For example: JSON, Apache NiFi Records, or Apache Spark
Structs.</li>
using multiple different <em>XML Schema Validation libraries</em> such as <a
href="https://xerces.apache.org/xerces-c/">Xerces C</a> and <a
href="https://gitlab.gnome.org/GNOME/libxml2">libxml2</a>.</li>
</ul>
-<p>The <a href="/dfdl-training#exampleSchemas">DFDL Training page lists
several example schemas</a> which follow
+<p>The <a href="/dfdl-training#exampleSchemas">DFDL Training page lists
several example schemas</a> which follow
this style guide fully which you can use as good starting points.</p>
+<p>There are also best-practice materials on:</p>
+<ul>
+ <li><a href="/best-practices/P-Avoid-Check-Constraints.pdf">Slides on
Well-Formed vs. Valid (Avoiding <code class="language-plaintext
highlighter-rouge">dfdl:checkConstraints(.)</code>)</a></li>
+ <li><a href="/best-practices/P-DFDL-BLOBs-v-HexBinary-array.pdf">Slides on
Handling large opaque BLOBs of binary data</a></li>
+ <li><a href="/best-practices/P-DFDL-Reject-Elements.pdf">Slides on Using
<em>Reject Elements</em> to capture bad data</a></li>
+ <li><a href="/best-practices/P-DFDL-Round-Trip-Testing.pdf">Slides on
Round-trip (parse + unparse) testing (with TDML)</a></li>
+ <li><a href="/best-practices/P-DFDL-Structured-Text.pdf">Slides on DFDL
Schemas for ad-hoc structured text formats</a></li>
+</ul>
+
<p>This set of notes represents best practices after learning <em>the hard
way</em> from many debugging
exercises and creating a wide variety of DFDL schemas from small teaching
examples to large
production schemas for major data formats with more than 100K lines of
DFDL.</p>
@@ -180,7 +189,7 @@ DFDL schema by referencing a complex type definition
provided by the library sch
<p>Below are the details.</p>
-<h2 id="avoid-element-namespaces">Avoid Element Namespaces</h2>
+<h2 id="avoidElementNamespaces">Avoid Element Namespaces</h2>
<p>Much of the complexity of XML and XML Schema comes from their namespace
features.
This can be avoided entirely by following simple conventions.</p>
@@ -412,7 +421,7 @@ This is not quite as clean, but minimizes redundancy within
what is allowed.</p>
<p>Note that the DFDL Workgroup is considering adding the ability to <a
href="https://github.com/OpenGridForum/DFDL/issues/71">put DFDL properties on
complex
types</a> in a future version of the DFDL standard.</p>
-<h2 id="avoid-child-elements-with-the-same-name">Avoid Child Elements with the
Same Name</h2>
+<h2 id="AvoidChildElementsWithSameName">Avoid Child Elements with the Same
Name</h2>
<p>XML Schema has a data model with some flexibility needed only for markup
languages.</p>
@@ -451,7 +460,7 @@ typical in structured data systems.</p>
<p>JSON also has no notion of child elements with the same name, so avoiding
this enables a
DFDL schema to be JSON compatible.</p>
-<h2 id="avoid-anonymous-choices">Avoid Anonymous Choices</h2>
+<h2 id="avoidAnonymousChoices">Avoid Anonymous Choices</h2>
<p>XML Schema allows a choice to be anonymous within the data model of an
element. For example:</p>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><element</span> <span
class="na">name=</span><span class="s">"myElement"</span><span
class="nt">></span>
<span class="nt"><complexType></span>
@@ -520,25 +529,27 @@ structures of the other data systems which do not allow
anonymous choices.</p>
<p>Given two different versions of a schema, consider:</p>
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><choice></span>
- <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"v1"</span><span class="nt">></span>
- <span class="nt"><complexType></span>
- <span class="nt"><sequence></span>
- <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"a"</span> <span
class="err">...</span><span class="nt">/></span>
- <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"c"</span> <span
class="na">type=</span><span class="s">"xs:int"</span> <span
class="na">dfdl:length=</span><span class="s">"7"</span><span
class="nt">/></span>
- <span class="nt"></sequence></span>
- <span class="nt"></complexType></span>
- <span class="nt"></element></span>
- <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"v2"</span><span class="nt">></span>
- <span class="nt"><complexType></span>
- <span class="nt"><sequence></span>
- <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"b"</span> <span
class="err">...</span><span class="nt">/></span>
- <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"c"</span> <span
class="na">type=</span><span class="s">"xs:int"</span> <span
class="na">dfdl:length=</span><span class="s">"6"</span><span
class="nt">/></span>
- <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"spare"</span> <span
class="na">type=</span><span class="s">"xs:unsignedInt"</span> <span
class="na">dfdl:length=</span><span class="s">"1"</span><span
class="nt">/></span>
- <span class="nt"></sequence></span>
- <span class="nt"></complexType></span>
- <span class="nt"></element></span>
-<span class="nt"></choice></span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><complexType</span> <span
class="na">name=</span><span class="s">"v1OrV2"</span><span
class="nt">></span>
+ <span class="nt"><choice></span>
+ <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"v1"</span><span class="nt">></span>
+ <span class="nt"><complexType></span>
+ <span class="nt"><sequence></span>
+ <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"a"</span> <span
class="err">...</span><span class="nt">/></span>
+ <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"c"</span> <span
class="na">type=</span><span class="s">"xs:int"</span> <span
class="na">dfdl:length=</span><span class="s">"7"</span><span
class="nt">/></span>
+ <span class="nt"></sequence></span>
+ <span class="nt"></complexType></span>
+ <span class="nt"></element></span>
+ <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"v2"</span><span class="nt">></span>
+ <span class="nt"><complexType></span>
+ <span class="nt"><sequence></span>
+ <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"b"</span> <span
class="err">...</span><span class="nt">/></span>
+ <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"c"</span> <span
class="na">type=</span><span class="s">"xs:int"</span> <span
class="na">dfdl:length=</span><span class="s">"6"</span><span
class="nt">/></span>
+ <span class="nt"><element</span> <span
class="na">name=</span><span class="s">"spare"</span> <span
class="na">type=</span><span class="s">"xs:unsignedInt"</span> <span
class="na">dfdl:length=</span><span class="s">"1"</span><span
class="nt">/></span>
+ <span class="nt"></sequence></span>
+ <span class="nt"></complexType></span>
+ <span class="nt"></element></span>
+ <span class="nt"></choice></span>
+<span class="nt"></complexType></span>
</code></pre></div></div>
<p>Note both versions 1 and 2 have a child named <code
class="language-plaintext highlighter-rouge">c</code> which is an <code
class="language-plaintext highlighter-rouge">xs:int</code>.</p>
@@ -547,19 +558,21 @@ specific even though element <code
class="language-plaintext highlighter-rouge">
The two differ only by a DFDL property (<code class="language-plaintext
highlighter-rouge">dfdl:length</code>).</p>
<p>Consider instead using this technique:</p>
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><choice></span>
- <span class="nt"><sequence></span>
- <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"v1"</span> <span class="na">type=</span><span
class="s">"pre:empty"</span><span class="nt">/></span>
- <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"a"</span> <span class="err">...</span><span class="nt">/></span>
- <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"c"</span> <span class="na">type=</span><span
class="s">"xs:int"</span> <span class="na">dfdl:length=</span><span
class="s">"7"</span><span class="nt">/></span>
- <span class="nt"></sequence></span>
- <span class="nt"><sequence></span>
- <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"v2"</span> <span class="na">type=</span><span
class="s">"pre:empty"</span><span class="nt">/></span>
- <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"b"</span> <span class="err">...</span><span class="nt">/></span>
- <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"c"</span> <span class="na">type=</span><span
class="s">"xs:int"</span> <span class="na">dfdl:length=</span><span
class="s">"6"</span><span class="nt">/></span>
- <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"spare"</span> <span class="na">type=</span><span
class="s">"xs:unsignedInt"</span> <span class="na">dfdl:length=</span><span
class="s">"1"</span><span class="nt">/></span>
- <span class="nt"></sequence></span>
-<span class="nt"></choice></span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre
class="highlight"><code><span class="nt"><complexType</span> <span
class="na">name=</span><span class="s">"v1OrV2"</span><span
class="nt">></span>
+ <span class="nt"><choice></span>
+ <span class="nt"><sequence></span>
+ <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"v1"</span> <span class="na">type=</span><span
class="s">"pre:empty"</span><span class="nt">/></span>
+ <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"a"</span> <span class="err">...</span><span class="nt">/></span>
+ <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"c"</span> <span class="na">type=</span><span
class="s">"xs:int"</span> <span class="na">dfdl:length=</span><span
class="s">"7"</span><span class="nt">/></span>
+ <span class="nt"></sequence></span>
+ <span class="nt"><sequence></span>
+ <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"v2"</span> <span class="na">type=</span><span
class="s">"pre:empty"</span><span class="nt">/></span>
+ <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"b"</span> <span class="err">...</span><span class="nt">/></span>
+ <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"c"</span> <span class="na">type=</span><span
class="s">"xs:int"</span> <span class="na">dfdl:length=</span><span
class="s">"6"</span><span class="nt">/></span>
+ <span class="nt"><element</span> <span class="na">name=</span><span
class="s">"spare"</span> <span class="na">type=</span><span
class="s">"xs:unsignedInt"</span> <span class="na">dfdl:length=</span><span
class="s">"1"</span><span class="nt">/></span>
+ <span class="nt"></sequence></span>
+ <span class="nt"></choice></span>
+<span class="nt"></complexType></span>
</code></pre></div></div>
<p>This uses a marker element which will be <code class="language-plaintext
highlighter-rouge"><v1/></code> or <code class="language-plaintext
highlighter-rouge"><v2/></code> before the other elements.
A path to the <code class="language-plaintext highlighter-rouge">c</code>
element will not have a <code class="language-plaintext
highlighter-rouge">v1</code> nor <code class="language-plaintext
highlighter-rouge">v2</code> element parent.</p>
@@ -659,7 +672,7 @@ are small.</p>
<h4 id="about-spec-deltas">About Spec Deltas</h4>
- <p>A deltas between two versions of a format specification document can be
classified as one of
+ <p>A delta between two versions of a format specification document can be
classified as one of
these kinds:</p>
<ol>
<li>Prose Correction: A clarification or correction to the text of the
document that improves it,
diff --git a/content/dfdl-extensions/index.html
b/content/dfdl-extensions/index.html
index 54e765e..91d5c43 100644
--- a/content/dfdl-extensions/index.html
+++ b/content/dfdl-extensions/index.html
@@ -523,6 +523,16 @@ different reserved values since when unparsed, the
constant string <code class="
<em>canonicalized</em> to integer 0.
Putting data into canonical form when unparsing generally improves data
security.</p>
+<blockquote>
+ <p><strong>Best Practices Note:</strong> Avoid whitespace of any kind in
enumerated constant values.
+It is best to replace spaces by underscores ("_").
+This avoids problems when the infoset, represented in XML, is pretty printed
or otherwise
+formatted.
+Whitespace is generally fungible in XML, and a space could be turned into a
line
+break by a variety of XML processing resulting in data that will
+not validate (as an XML document) nor unparse successfully.</p>
+</blockquote>
+
<h2 id="extended-behaviors-for-dfdl-types">Extended Behaviors for DFDL
Types</h2>
<h3 id="type-xshexbinary">Type <code class="language-plaintext
highlighter-rouge">xs:hexBinary</code></h3>
diff --git a/content/dfdl-training/index.html b/content/dfdl-training/index.html
index c3d06b2..e5133f7 100644
--- a/content/dfdl-training/index.html
+++ b/content/dfdl-training/index.html
@@ -121,6 +121,7 @@
</ol>
</li>
<li><a href="#exampleSchemas" id="markdown-toc-exampleSchemas">Learning from
Example DFDL Schemas</a></li>
+ <li><a href="#specific-dfdl-properties"
id="markdown-toc-specific-dfdl-properties">Specific DFDL Properties</a></li>
<li><a href="#other-learning-resources"
id="markdown-toc-other-learning-resources">Other Learning Resources</a> <ol>
<li><a href="#presentations-about-dfdldaffodil"
id="markdown-toc-presentations-about-dfdldaffodil">Presentations about
DFDL/Daffodil</a></li>
</ol>
@@ -317,6 +318,13 @@ showcasing:</p>
simultaneously.</li>
</ul>
+<h2 id="specific-dfdl-properties">Specific DFDL Properties</h2>
+<p>Short training slide decks or pages about specific properties.</p>
+<ul>
+ <li><a href="/tutorials/P-DFDL-Properties-lengthKind-bitOrder.pdf">DFDL
<code class="language-plaintext highlighter-rouge">lengthKind</code>, <code
class="language-plaintext highlighter-rouge">lengthUnits</code>, <code
class="language-plaintext highlighter-rouge">bitOrder</code>, and <code
class="language-plaintext highlighter-rouge">byteOrder</code>
properties</a></li>
+ <li><a href="/tutorials/P-Filling-vs-Padding-Trimming.pdf">DFDL Pad and Fill
(<code class="language-plaintext
highlighter-rouge">dfdl:fillByte</code>)</a></li>
+</ul>
+
<h2 id="other-learning-resources">Other Learning Resources</h2>
<p>There are a variety of other materials on the Internet that provide some
DFDL training:</p>
diff --git a/content/tutorials/P-DFDL-Properties-lengthKind-bitOrder.pdf
b/content/tutorials/P-DFDL-Properties-lengthKind-bitOrder.pdf
new file mode 100755
index 0000000..45ce110
Binary files /dev/null and
b/content/tutorials/P-DFDL-Properties-lengthKind-bitOrder.pdf differ
diff --git a/content/tutorials/P-DFDL-Properties-lengthKind-bitOrder.pptx
b/content/tutorials/P-DFDL-Properties-lengthKind-bitOrder.pptx
new file mode 100755
index 0000000..716d536
Binary files /dev/null and
b/content/tutorials/P-DFDL-Properties-lengthKind-bitOrder.pptx differ
diff --git a/content/tutorials/P-Filling-vs-Padding-Trimming.pdf
b/content/tutorials/P-Filling-vs-Padding-Trimming.pdf
new file mode 100755
index 0000000..481d34e
Binary files /dev/null and
b/content/tutorials/P-Filling-vs-Padding-Trimming.pdf differ
diff --git a/content/tutorials/P-Filling-vs-Padding-Trimming.pptx
b/content/tutorials/P-Filling-vs-Padding-Trimming.pptx
new file mode 100755
index 0000000..3402b2d
Binary files /dev/null and
b/content/tutorials/P-Filling-vs-Padding-Trimming.pptx differ