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 &amp; 
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">&lt;element</span> <span 
class="na">name=</span><span class="s">"myElement"</span><span 
class="nt">&gt;</span>
   <span class="nt">&lt;complexType&gt;</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">&lt;choice&gt;</span>
-  <span class="nt">&lt;element</span> <span class="na">name=</span><span 
class="s">"v1"</span><span class="nt">&gt;</span>
-     <span class="nt">&lt;complexType&gt;</span>
-        <span class="nt">&lt;sequence&gt;</span>
-           <span class="nt">&lt;element</span> <span 
class="na">name=</span><span class="s">"a"</span> <span 
class="err">...</span><span class="nt">/&gt;</span>
-           <span class="nt">&lt;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">/&gt;</span>
-        <span class="nt">&lt;/sequence&gt;</span>
-     <span class="nt">&lt;/complexType&gt;</span>
-  <span class="nt">&lt;/element&gt;</span>
-  <span class="nt">&lt;element</span> <span class="na">name=</span><span 
class="s">"v2"</span><span class="nt">&gt;</span>
-     <span class="nt">&lt;complexType&gt;</span>
-        <span class="nt">&lt;sequence&gt;</span>
-           <span class="nt">&lt;element</span> <span 
class="na">name=</span><span class="s">"b"</span> <span 
class="err">...</span><span class="nt">/&gt;</span>
-           <span class="nt">&lt;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">/&gt;</span>
-           <span class="nt">&lt;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">/&gt;</span>
-         <span class="nt">&lt;/sequence&gt;</span>
-     <span class="nt">&lt;/complexType&gt;</span>
-  <span class="nt">&lt;/element&gt;</span>
-<span class="nt">&lt;/choice&gt;</span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;complexType</span> <span 
class="na">name=</span><span class="s">"v1OrV2"</span><span 
class="nt">&gt;</span>
+  <span class="nt">&lt;choice&gt;</span>
+    <span class="nt">&lt;element</span> <span class="na">name=</span><span 
class="s">"v1"</span><span class="nt">&gt;</span>
+       <span class="nt">&lt;complexType&gt;</span>
+          <span class="nt">&lt;sequence&gt;</span>
+             <span class="nt">&lt;element</span> <span 
class="na">name=</span><span class="s">"a"</span> <span 
class="err">...</span><span class="nt">/&gt;</span>
+             <span class="nt">&lt;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">/&gt;</span>
+          <span class="nt">&lt;/sequence&gt;</span>
+       <span class="nt">&lt;/complexType&gt;</span>
+    <span class="nt">&lt;/element&gt;</span>
+    <span class="nt">&lt;element</span> <span class="na">name=</span><span 
class="s">"v2"</span><span class="nt">&gt;</span>
+       <span class="nt">&lt;complexType&gt;</span>
+            <span class="nt">&lt;sequence&gt;</span>
+             <span class="nt">&lt;element</span> <span 
class="na">name=</span><span class="s">"b"</span> <span 
class="err">...</span><span class="nt">/&gt;</span>
+             <span class="nt">&lt;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">/&gt;</span>
+             <span class="nt">&lt;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">/&gt;</span>
+           <span class="nt">&lt;/sequence&gt;</span>
+       <span class="nt">&lt;/complexType&gt;</span>
+    <span class="nt">&lt;/element&gt;</span>
+  <span class="nt">&lt;/choice&gt;</span>
+<span class="nt">&lt;/complexType&gt;</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">&lt;choice&gt;</span>
-  <span class="nt">&lt;sequence&gt;</span>
-    <span class="nt">&lt;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">/&gt;</span>
-    <span class="nt">&lt;element</span> <span class="na">name=</span><span 
class="s">"a"</span> <span class="err">...</span><span class="nt">/&gt;</span>
-    <span class="nt">&lt;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">/&gt;</span>
-  <span class="nt">&lt;/sequence&gt;</span>
-  <span class="nt">&lt;sequence&gt;</span>
-    <span class="nt">&lt;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">/&gt;</span>
-    <span class="nt">&lt;element</span> <span class="na">name=</span><span 
class="s">"b"</span> <span class="err">...</span><span class="nt">/&gt;</span>
-    <span class="nt">&lt;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">/&gt;</span>
-    <span class="nt">&lt;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">/&gt;</span>
-  <span class="nt">&lt;/sequence&gt;</span>
-<span class="nt">&lt;/choice&gt;</span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;complexType</span> <span 
class="na">name=</span><span class="s">"v1OrV2"</span><span 
class="nt">&gt;</span>
+  <span class="nt">&lt;choice&gt;</span>
+    <span class="nt">&lt;sequence&gt;</span>
+      <span class="nt">&lt;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">/&gt;</span>
+      <span class="nt">&lt;element</span> <span class="na">name=</span><span 
class="s">"a"</span> <span class="err">...</span><span class="nt">/&gt;</span>
+      <span class="nt">&lt;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">/&gt;</span>
+    <span class="nt">&lt;/sequence&gt;</span>
+    <span class="nt">&lt;sequence&gt;</span>
+      <span class="nt">&lt;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">/&gt;</span>
+      <span class="nt">&lt;element</span> <span class="na">name=</span><span 
class="s">"b"</span> <span class="err">...</span><span class="nt">/&gt;</span>
+      <span class="nt">&lt;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">/&gt;</span>
+      <span class="nt">&lt;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">/&gt;</span>
+    <span class="nt">&lt;/sequence&gt;</span>
+  <span class="nt">&lt;/choice&gt;</span>
+<span class="nt">&lt;/complexType&gt;</span>
 </code></pre></div></div>
 <p>This uses a marker element which will be <code class="language-plaintext 
highlighter-rouge">&lt;v1/&gt;</code> or <code class="language-plaintext 
highlighter-rouge">&lt;v2/&gt;</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

Reply via email to