You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by sl...@apache.org on 2019/06/17 13:52:30 UTC

[incubator-daffodil] branch master updated: Add support for namespacing DFDL extension properties and functions

This is an automated email from the ASF dual-hosted git repository.

slawrence pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-daffodil.git


The following commit(s) were added to refs/heads/master by this push:
     new 6a0cadb  Add support for namespacing DFDL extension properties and functions
6a0cadb is described below

commit 6a0cadbb5d7fe784b9c1740f0554be7b3f21f230
Author: Steve Lawrence <sl...@apache.org>
AuthorDate: Tue Jun 11 09:00:41 2019 -0400

    Add support for namespacing DFDL extension properties and functions
    
    Create a new dfdlx namespace and move a handful of extensions properties
    and functions to it. This is where all future extensions should go.
    
    Extensions that have not been part of an official Daffodil release just
    have their namespace changed to dfdlx--backwards compatibility is not
    maintained. For extensions that have been part of an official release,
    backwards compatibility is maintained, but now results in a deprecation
    warning if the old namespace is used. Below is the list of all extension
    properties and functions moved to the dfdlx namespace.
    
    Backwards compatibility is supported for:
    
      dfdl:layerTransform
      dfdl:layerEncoding
      dfdl:layerLengthKind
      dfdl:layerLength
      dfdl:layerLengthUnits
      dfdl:layerBoundaryMark
      daf:parseUnparsePolicy
      daf:trace()
      daf:error()
    
    Backwards compatibility is not supported for:
    
      dfdl:emptyElementParseUnparsePolicy
      dfdl:inputTypeCalc
      dfdl:outputTypeCalc
      dfdl:repType
      dfdl:repValueRanges
      dfdl:repValues
      dfdl:inputTypeCalcInt()
      dfdl:inputTypeCalcString()
      dfdl:logicalTypeValueInt()
      dfdl:logicalTypeValueString()
      dfdl:outputTypeCalcInt()
      dfdl:outputTypeCalcString()
      dfdl:repTypeValueInt()
      dfdl:repTypeValueString()
      dfdl:outputTypeCalcNextSiblingInt()
      dfdl:outputTypeCalcNextSiblingString()
      daf:lookahead()
    
    The daf namespace does still exist, but is only used for Daffodil
    specific things like tunables, configurations files, etc. Only its use
    in DFDL schemas is deprecated.
    
    DAFFODIL-2096
---
 .../org/apache/daffodil/dpath/Expression.scala     |  54 +++++-----
 .../daffodil/dsom/DFDLFormatAnnotation.scala       |  84 +++++++++++++--
 .../org/apache/daffodil/dsom/DFDLProperty.scala    |  29 ++++-
 .../org/apache/daffodil/dsom/ElementBase.scala     |   4 +-
 .../org/apache/daffodil/dsom/SequenceGroup.scala   |   2 +-
 .../org/apache/daffodil/dsom/SimpleTypes.scala     |   2 +-
 .../grammar/primitives/SequenceChild.scala         |   2 +-
 .../org/apache/daffodil/layers/TestLayers.scala    |  24 ++---
 .../main/resources/daffodil-built-in-catalog.xml   |   1 +
 .../src/main/resources/eclipse-xml-catalog.xml     |   2 +
 .../org/apache/daffodil/xsd/XMLSchema_for_DFDL.xsd |   6 +-
 .../resources/org/apache/daffodil/xsd/tdml.xsd     |   1 +
 .../schema/annotation/props/ByHandMixins.scala     |  11 +-
 .../org/apache/daffodil/util/SchemaUtils.scala     |   1 +
 .../scala/org/apache/daffodil/xml/XMLUtils.scala   |   9 ++
 .../apache/daffodil/xsd/DFDL_part1_simpletypes.xsd |   9 --
 .../apache/daffodil/xsd/DFDL_part2_attributes.xsd  |  55 +++-------
 .../org/apache/daffodil/xsd/DFDL_part3_model.xsd   |  22 ++--
 .../resources/org/apache/daffodil/xsd/dafext.xsd   |  34 +++---
 .../resources/org/apache/daffodil/xsd/dfdlx.xsd    | 119 +++++++++++++++++++++
 .../daffodil/propGen/PropertyGenerator.scala       |  68 ++++++++----
 .../apache/daffodil/propGen/TunableGenerator.scala |  18 ++--
 .../{DAFFunctions.scala => DFDLXFunctions.scala}   |  10 +-
 .../daffodil/dpath/DFDLXTypeCalcFunctions.scala    |  16 +--
 .../scala/org/apache/daffodil/dpath/NodeInfo.scala |   2 +-
 .../apache/daffodil/layers/Base64Transformer.scala |   6 +-
 .../daffodil/layers/ByteSwapTransformer.scala      |   4 +-
 .../apache/daffodil/layers/LayerTransformer.scala  |   4 +-
 .../daffodil/layers/LineFoldedTransformer.scala    |   4 +-
 .../daffodil/processors/parsers/Parser.scala       |   2 +-
 .../processors/parsers/SequenceChildBases.scala    |   6 +-
 .../daffodil/processors/unparsers/Unparser.scala   |   2 +-
 .../test-suite/tresys-contributed/AG.dfdl.xsd      |   9 +-
 .../test-suite/tresys-contributed/AM.dfdl.xsd      |  10 +-
 .../test-suite/tresys-contributed/AV.dfdl.xsd      |   9 +-
 .../tresys-contributed/sepSuppression.tdml         |  10 +-
 .../tresys-contributed/sepSuppression2.tdml        |   3 +-
 .../scala/org/apache/daffodil/TresysTests3.scala   |   2 +-
 .../daffodil/extensions/lookAhead/lookAhead.tdml   |  36 +++----
 .../extensions/type_calc/inputTypeCalc.tdml        |  37 +++----
 .../type_calc/inputTypeCalcExpression.tdml         |  14 +--
 .../type_calc/inputTypeCalc_malformed.tdml         |  10 +-
 .../type_calc/typeCalcFunctionErrors.tdml          |  74 ++++++-------
 .../extensions/type_calc/typeCalcFunctions.tdml    |  54 +++++-----
 .../resources/org/apache/daffodil/layers/ais.tdml  |   5 +-
 .../org/apache/daffodil/layers/layers.tdml         |  85 +++++++++++----
 .../section00/general/parseUnparsePolicy.tdml      |  26 ++---
 .../section07/escapeScheme/escapeScenarios.tdml    |   6 +-
 .../section07/property_syntax/PropertySyntax.tdml  |  64 +++++++++--
 .../property_scoping/PropertyScoping_01.tdml       |   2 +-
 .../section12/lengthKind/PrefixedTests.tdml        |  20 ++--
 .../section23/dfdl_expressions/expressions.tdml    |   9 +-
 .../section23/dfdl_expressions/expressions2.tdml   |   8 +-
 .../runtime_properties/runtime-properties.tdml     |  10 +-
 .../daffodil/unparser/parseUnparseMode.dfdl.xsd    |   4 +-
 .../daffodil/usertests/MultipartBody.dfdl.xsd      |   4 +-
 .../org/apache/daffodil/layers/TestLayers.scala    |   1 +
 .../property_syntax/TestPropertySyntax.scala       |   2 +
 58 files changed, 735 insertions(+), 392 deletions(-)

diff --git a/daffodil-core/src/main/scala/org/apache/daffodil/dpath/Expression.scala b/daffodil-core/src/main/scala/org/apache/daffodil/dpath/Expression.scala
index 4ce903b..c9ce721 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/dpath/Expression.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/dpath/Expression.scala
@@ -1332,6 +1332,7 @@ case class FunctionCallExpression(functionQNameString: String, expressions: List
 
   lazy val functionObject: Expression = {
     val DFDL = XMLUtils.DFDL_NAMESPACE
+    val DFDLX = XMLUtils.DFDLX_NAMESPACE
     val FUNC = XMLUtils.XPATH_FUNCTION_NAMESPACE
     val MATH = XMLUtils.XPATH_MATH_NAMESPACE
     val XSD = XMLUtils.XSD_NAMESPACE
@@ -1339,19 +1340,21 @@ case class FunctionCallExpression(functionQNameString: String, expressions: List
     val DAF_APACHE = XMLUtils.EXT_NS_APACHE
     val funcObj = (functionQName, expressions) match {
 
-      case (RefQName(_, "trace", DAF_NCSA), args) =>
-        DAFTraceExpr(functionQNameString, functionQName, args)
-
-      case (RefQName(_, "trace", DAF_APACHE), args) =>
-        DAFTraceExpr(functionQNameString, functionQName, args)
-
-      case (RefQName(_, "error", DAF_NCSA), args) => {
-        SDW(WarnID.DeprecatedFunctionDAFError, "Expression daf:error is deprecated. Use fn:error instead")
-        DAFErrorExpr(functionQNameString, functionQName, args)
+      case (RefQName(_, "trace", DFDLX | DAF_NCSA | DAF_APACHE), args) => {
+        if (functionQName.namespace != DFDLX) {
+          SDW(
+            WarnID.DeprecatedFunctionDAFError,
+            "Expression %s is deprecated. Use dfdlx:trace instead",
+            functionQNameString)
+        }
+        DFDLXTraceExpr(functionQNameString, functionQName, args)
       }
 
-      case (RefQName(_, "error", DAF_APACHE), args) => {
-        SDW(WarnID.DeprecatedFunctionDAFError, "Expression daf:error is deprecated. Use fn:error instead")
+      case (RefQName(_, "error", DFDLX | DAF_NCSA | DAF_APACHE), args) => {
+        SDW(
+          WarnID.DeprecatedFunctionDAFError,
+          "Expression %s is deprecated. Use fn:error instead",
+          functionQNameString)
         DAFErrorExpr(functionQNameString, functionQName, args)
       }
 
@@ -1550,51 +1553,52 @@ case class FunctionCallExpression(functionQNameString: String, expressions: List
       //Begin DFDLX functions
 
       //Begin TypeValueCalc related functions
-      case (RefQName(_, "inputTypeCalcInt", DFDL), args) =>
+      case (RefQName(_, "inputTypeCalcInt", DFDLX), args) =>
         FNTwoArgsExprInferedArgType(functionQNameString, functionQName, args,
           NodeInfo.Int, NodeInfo.String, args(1).inherentType, DFDLXInputTypeCalcInt(_))
 
-      case (RefQName(_, "inputTypeCalcString", DFDL), args) =>
+      case (RefQName(_, "inputTypeCalcString", DFDLX), args) => {
         FNTwoArgsExprInferedArgType(functionQNameString, functionQName, args,
           NodeInfo.String, NodeInfo.String, args(1).inherentType, DFDLXInputTypeCalcString(_))
+      }
 
-      case (RefQName(_, "outputTypeCalcInt", DFDL), args) =>
+      case (RefQName(_, "outputTypeCalcInt", DFDLX), args) =>
         FNTwoArgsExprInferedArgType(functionQNameString, functionQName, args,
           NodeInfo.Int, NodeInfo.String, args(1).inherentType, DFDLXOutputTypeCalcInt(_))
 
-      case (RefQName(_, "outputTypeCalcString", DFDL), args) =>
+      case (RefQName(_, "outputTypeCalcString", DFDLX), args) =>
         FNTwoArgsExprInferedArgType(functionQNameString, functionQName, args,
           NodeInfo.String, NodeInfo.String, args(1).inherentType, DFDLXOutputTypeCalcString(_))
 
-      case (RefQName(_, "outputTypeCalcNextSiblingInt", DFDL), args) =>
+      case (RefQName(_, "outputTypeCalcNextSiblingInt", DFDLX), args) =>
         FNZeroArgExpr(functionQNameString, functionQName,
           NodeInfo.Int, NodeInfo.AnyAtomic, DFDLXOutputTypeCalcNextSiblingInt(_, _))
 
-      case (RefQName(_, "outputTypeCalcNextSiblingString", DFDL), args) =>
+      case (RefQName(_, "outputTypeCalcNextSiblingString", DFDLX), args) =>
         FNZeroArgExpr(functionQNameString, functionQName,
           NodeInfo.String, NodeInfo.AnyAtomic, DFDLXOutputTypeCalcNextSiblingString(_, _))
 
-      case (RefQName(_, "repTypeValueInt", DFDL), args) =>
+      case (RefQName(_, "repTypeValueInt", DFDLX), args) =>
         FNZeroArgExpr(functionQNameString, functionQName,
           NodeInfo.Integer, NodeInfo.AnyAtomic, DFDLXRepTypeValueInt(_, _))
 
-      case (RefQName(_, "repTypeValueString", DFDL), args) =>
+      case (RefQName(_, "repTypeValueString", DFDLX), args) =>
         FNZeroArgExpr(functionQNameString, functionQName,
           NodeInfo.String, NodeInfo.AnyAtomic, DFDLXRepTypeValueString(_, _))
 
-      case (RefQName(_, "logicalTypeValueInt", DFDL), args) =>
+      case (RefQName(_, "logicalTypeValueInt", DFDLX), args) =>
         FNZeroArgExpr(functionQNameString, functionQName,
           NodeInfo.Integer, NodeInfo.AnyAtomic, DFDLXLogicalTypeValueInt(_, _))
 
-      case (RefQName(_, "logicalTypeValueString", DFDL), args) =>
+      case (RefQName(_, "logicalTypeValueString", DFDLX), args) =>
         FNZeroArgExpr(functionQNameString, functionQName,
           NodeInfo.String, NodeInfo.AnyAtomic, DFDLXLogicalTypeValueString(_, _))
 
       //End typeValueCalc related functions
 
-      case (RefQName(_, "lookAhead", DAF_APACHE), args) =>
+      case (RefQName(_, "lookAhead", DFDLX), args) =>
         FNTwoArgsExpr(functionQNameString, functionQName, args,
-          NodeInfo.NonNegativeInteger, NodeInfo.UnsignedInt, NodeInfo.UnsignedInt, DAFLookAhead(_))
+          NodeInfo.NonNegativeInteger, NodeInfo.UnsignedInt, NodeInfo.UnsignedInt, DFDLXLookAhead(_))
 
       //End DFDLX functions
 
@@ -2204,7 +2208,7 @@ case class ParenthesizedExpression(expression: Expression)
   override lazy val compiledDPath = expression.compiledDPath // no conversions because we passed on targetType to subexp
 }
 
-case class DAFTraceExpr(nameAsParsed: String, fnQName: RefQName, args: List[Expression])
+case class DFDLXTraceExpr(nameAsParsed: String, fnQName: RefQName, args: List[Expression])
   extends FunctionCallBase(nameAsParsed, fnQName, args) {
 
   requiredEvaluations(realArg)
@@ -2225,7 +2229,7 @@ case class DAFTraceExpr(nameAsParsed: String, fnQName: RefQName, args: List[Expr
   override def targetTypeForSubexpression(subExp: Expression): NodeInfo.Kind = targetType
 
   override lazy val compiledDPath = {
-    new CompiledDPath(DAFTrace(realArg.compiledDPath, msgText) +: conversions)
+    new CompiledDPath(DFDLXTrace(realArg.compiledDPath, msgText) +: conversions)
   }
 }
 
diff --git a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/DFDLFormatAnnotation.scala b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/DFDLFormatAnnotation.scala
index f696ba7..b2b8e8c 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/DFDLFormatAnnotation.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/DFDLFormatAnnotation.scala
@@ -19,12 +19,53 @@ package org.apache.daffodil.dsom
 
 import scala.collection.immutable.ListMap
 import scala.xml.Node
+
+import org.apache.daffodil.api.WarnID
+import org.apache.daffodil.exceptions.Assert
+import org.apache.daffodil.schema.annotation.props.LookupLocation
 import org.apache.daffodil.util.LogLevel
 import org.apache.daffodil.xml.NS
 import org.apache.daffodil.xml.NoNamespace
-import org.apache.daffodil.xml.XMLUtils
 import org.apache.daffodil.xml.RefQName
-import org.apache.daffodil.schema.annotation.props.LookupLocation
+import org.apache.daffodil.xml.XMLUtils
+
+case class DeprecatedProperty(namespace: NS, property: String, replacement: String)
+
+object DeprecatedProperty {
+
+  private val deprecatedProperties: Seq[DeprecatedProperty] = Seq(
+    DeprecatedProperty(XMLUtils.DFDL_NAMESPACE, "layerTransform", "dfdlx:layerTransform"),
+    DeprecatedProperty(XMLUtils.DFDL_NAMESPACE, "layerEncoding", "dfdlx:layerEncoding"),
+    DeprecatedProperty(XMLUtils.DFDL_NAMESPACE, "layerLengthKind", "dfdlx:layerLengthKind"),
+    DeprecatedProperty(XMLUtils.DFDL_NAMESPACE, "layerLength", "dfdlx:layerLength"),
+    DeprecatedProperty(XMLUtils.DFDL_NAMESPACE, "layerLengthUnits", "dfdlx:layerLengthUnits"),
+    DeprecatedProperty(XMLUtils.DFDL_NAMESPACE, "layerBoundaryMark","dfdlx:layerBoundaryMark"),
+    DeprecatedProperty(XMLUtils.EXT_NS_APACHE, "parseUnparsePolicy", "dfdlx:parseUnparsePolicy"),
+    DeprecatedProperty(XMLUtils.EXT_NS_NCSA, "parseUnparsePolicy", "dfdlx:parseUnparsePolicy")
+  )
+
+  def warnIfDeprecated(
+    propertyName: String,
+    propertyNS: NS,
+    context: SchemaComponent): Unit = {
+
+    val deprecation = deprecatedProperties.find { dp =>
+      dp.property == propertyName && dp.namespace == propertyNS
+    }
+
+    if (deprecation.isDefined) {
+      val warnID = propertyNS match {
+        case XMLUtils.DFDL_NAMESPACE => WarnID.DeprecatedPropertyDFDLError
+        case XMLUtils.DFDLX_NAMESPACE => WarnID.DeprecatedPropertyDFDLXError
+        case XMLUtils.EXT_NS_APACHE => WarnID.DeprecatedPropertyDAFError
+        case XMLUtils.EXT_NS_NCSA => WarnID.DeprecatedPropertyDAFError
+        case _ => Assert.impossible()
+      }
+
+      context.SDW(warnID, "Property %s is deprecated. Use %s instead.", propertyName, deprecation.get.replacement)
+    }
+  }
+}
 
 /**
  * Base class for annotations that carry format properties
@@ -152,10 +193,23 @@ abstract class DFDLFormatAnnotation(nodeArg: Node, annotatedSCArg: AnnotatedSche
     val dfdlKvPairs = XMLUtils.dfdlAttributes(annotatedSC.xml).asAttrMap.map {
       case (key: String, value: String) => (removePrefix(key), value)
     }
+    val dfdlxKvPairs = XMLUtils.dfdlxAttributes(annotatedSC.xml).asAttrMap.map {
+      case (key: String, value: String) => (removePrefix(key), value)
+    }
     val dafKvPairs = XMLUtils.dafAttributes(annotatedSC.xml).asAttrMap.map {
       case (key: String, value: String) => (removePrefix(key), value)
     }
-    val kvPairs = dfdlKvPairs ++ dafKvPairs
+    dfdlKvPairs.keys.foreach { propName =>
+      DeprecatedProperty.warnIfDeprecated(propName, XMLUtils.DFDL_NAMESPACE, this)
+    }
+    dfdlxKvPairs.keys.foreach { propName =>
+      DeprecatedProperty.warnIfDeprecated(propName, XMLUtils.DFDLX_NAMESPACE, this)
+    }
+    dafKvPairs.keys.foreach { propName =>
+      DeprecatedProperty.warnIfDeprecated(propName, XMLUtils.EXT_NS_APACHE, this)
+    }
+
+    val kvPairs = dfdlKvPairs ++ dfdlxKvPairs ++ dafKvPairs
     val kvPairsButNotRef = kvPairs.filterNot { _._1 == "ref" } // dfdl:ref is NOT a property
     val pairs = kvPairsButNotRef.map { case (k, v) => (k, (v, annotatedSC)).asInstanceOf[PropItem] }
     pairs.toSet
@@ -165,7 +219,10 @@ abstract class DFDLFormatAnnotation(nodeArg: Node, annotatedSCArg: AnnotatedSche
     // longForm Properties are not prefixed by dfdl
     val dfdlAttrs = dfdlAttributes(xml).asAttrMap
     schemaDefinitionUnless(dfdlAttrs.isEmpty, "long form properties are not prefixed by dfdl:")
-    // however, daf extension properties are prefixed, even in long form
+    // however, extension properties are prefixed, even in long form
+    val dfdlxAttrMap = dfdlxAttributes(xml).asAttrMap.map {
+      case (key: String, value: String) => (removePrefix(key), value)
+    }
     val dafAttrMap = dafAttributes(xml).asAttrMap.map {
       case (key: String, value: String) => (removePrefix(key), value)
     }
@@ -178,8 +235,19 @@ abstract class DFDLFormatAnnotation(nodeArg: Node, annotatedSCArg: AnnotatedSche
       case (k, v) if (!k.contains(":")) => (k, v)
     }
     val unqualifiedAttribs = kvPairs.filterNot { _._1 == "ref" } // get the ref off there. it is not a property.
-    val dfdlAndDafAttribs = unqualifiedAttribs ++ dafAttrMap
-    val res = dfdlAndDafAttribs.map { case (k, v) => (k, (v, this.asInstanceOf[LookupLocation])) }.toSet
+
+    unqualifiedAttribs.keys.foreach { propName =>
+      DeprecatedProperty.warnIfDeprecated(propName, XMLUtils.DFDL_NAMESPACE, this)
+    }
+    dfdlxAttrMap.keys.foreach { propName =>
+      DeprecatedProperty.warnIfDeprecated(propName, XMLUtils.DFDLX_NAMESPACE, this)
+    }
+    dafAttrMap.keys.foreach { propName =>
+      DeprecatedProperty.warnIfDeprecated(propName, XMLUtils.EXT_NS_APACHE, this)
+    }
+
+    val dfdlAndExtAttribs = unqualifiedAttribs ++ dfdlxAttrMap ++ dafAttrMap
+    val res = dfdlAndExtAttribs.map { case (k, v) => (k, (v, this.asInstanceOf[LookupLocation])) }.toSet
     res
   }.value
 
@@ -192,6 +260,10 @@ abstract class DFDLFormatAnnotation(nodeArg: Node, annotatedSCArg: AnnotatedSche
   }
 
   private lazy val elementFormProperties: Set[PropItem] = LV[Set[PropItem]]('elementFormProperties) {
+    elementFormPropertyAnnotations.foreach { p =>
+      DeprecatedProperty.warnIfDeprecated(p.name, p.propertyNamespace, p)
+    }
+
     elementFormPropertyAnnotations.map { p => (p.name, (p.value, p)) }.toSet
   }.value
 
diff --git a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/DFDLProperty.scala b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/DFDLProperty.scala
index e2eeb23..b1a17a7 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/DFDLProperty.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/DFDLProperty.scala
@@ -19,15 +19,38 @@ package org.apache.daffodil.dsom
 
 import scala.xml.Node
 import scala.xml.NodeSeq
+
+import org.apache.daffodil.api.WarnID
+import org.apache.daffodil.xml.NamedQName
+import org.apache.daffodil.xml.NS
 import org.apache.daffodil.xml.QName
 import org.apache.daffodil.xml.XMLUtils
-import org.apache.daffodil.xml.NamedQName
 
 final class DFDLProperty(xmlArg: Node, formatAnnotation: DFDLFormatAnnotation)
   extends DFDLAnnotation(xmlArg, formatAnnotation.annotatedSC)
   with LocalNonElementComponentMixin {
 
-  override lazy val namedQName: NamedQName = QName.createGlobal(name, XMLUtils.DFDL_NAMESPACE, xml.scope)
+  /**
+   * Variable use to differentiate between same properities that are provided
+   * via differnt means (i.e. daf:property, name="dfdlx:...").
+   */
+  lazy val propertyNamespace = {
+    if (super.name.startsWith("dfdlx:")) {
+      XMLUtils.DFDLX_NAMESPACE
+    } else {
+      NS(xml.namespace)
+    }
+  }
+
+  /**
+   * Extension properties are provided in the dfdl:property element, but the
+   * name field is prefixed with dfdlx:. Strip that off to get the actual
+   * property name. The propertyNamespace above can be used to determine if
+   * this property was defined as an extension or not.
+   */
+  override val name =  super.name.stripPrefix("dfdlx:")
+
+  override lazy val namedQName: NamedQName = QName.createGlobal(name, propertyNamespace, xml.scope)
 
   override lazy val path = formatAnnotation.path + "::" + diagnosticDebugName
 
@@ -83,6 +106,4 @@ final class DFDLProperty(xmlArg: Node, formatAnnotation: DFDLFormatAnnotation)
     }
   }
 
-  // override lazy val name = getAttributeRequired("name")
-
 }
diff --git a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/ElementBase.scala b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/ElementBase.scala
index 4a76249..9045db0 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/ElementBase.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/ElementBase.scala
@@ -1277,9 +1277,9 @@ trait ElementBase
       val isCompatible = policy == childPolicy || childPolicy == ParseUnparsePolicy.Both
       if (!isCompatible) {
         if (context.isDefined) {
-          context.get.SDE("Child element '%s' with daf:parseUnparsePolicy='%s' is not compatible with root elements daf:parseUnparsePolicy='%s'", child, childPolicy, policy)
+          context.get.SDE("Child element '%s' with dfdlx:parseUnparsePolicy='%s' is not compatible with root elements dfdlx:parseUnparsePolicy='%s'", child, childPolicy, policy)
         } else {
-          SDE("Element '%s' with daf:parseUnparsePolicy='%s' is not compatible with user supplied daf:parseUnparsePolicy='%s'", child, childPolicy, policy)
+          SDE("Element '%s' with dfdlx:parseUnparsePolicy='%s' is not compatible with user supplied dfdlx:parseUnparsePolicy='%s'", child, childPolicy, policy)
         }
       }
 
diff --git a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/SequenceGroup.scala b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/SequenceGroup.scala
index 4d1fd7e..3b1d46d 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/SequenceGroup.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/SequenceGroup.scala
@@ -261,7 +261,7 @@ abstract class SequenceGroupTermBase(
       val localKeys = localProps.keySet
       val disallowedKeys = localKeys.filterNot(k => layeredSequenceAllowedProps.contains(k))
       if (disallowedKeys.size > 0)
-        SDE("Sequence has dfdl:layerTransform specified, so cannot have non-layering properties: %s", disallowedKeys.mkString(", "))
+        SDE("Sequence has dfdlx:layerTransform specified, so cannot have non-layering properties: %s", disallowedKeys.mkString(", "))
 
       val lt = new LayerTransformerEv(
         maybeLayerTransformEv.get,
diff --git a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/SimpleTypes.scala b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/SimpleTypes.scala
index c132b1c..661c8ed 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/SimpleTypes.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/SimpleTypes.scala
@@ -68,7 +68,7 @@ sealed trait SimpleTypeBase extends TypeBase
 }
 
 /*
- * For components which can define dfdl:repValues and dfdl:repValueRanges
+ * For components which can define dfdlx:repValues and dfdlx:repValueRanges
  * Construct the repValueSet using only the above mentioned attributes on the element itself
  * Applies to simpleType and enumeration
  *
diff --git a/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/SequenceChild.scala b/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/SequenceChild.scala
index 703a1ad..d62c56f 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/SequenceChild.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/SequenceChild.scala
@@ -443,7 +443,7 @@ class ScalarOrderedSequenceChild(sq: SequenceTermBase, term: Term, groupIndex: I
 
   /**
    * Must deal with nils, emptyness and string/hexBinary exceptional behavior
-   * including the behavior for daf:emptyElementParsePolicy 'treatAsMissing' which special cases
+   * including the behavior for dfdlx:emptyElementParsePolicy 'treatAsMissing' which special cases
    * Required elements like scalars, iff they are emptyRep, emptyValueDelimiterPolicy,
    * nilValueDelimiterPolicy, complex elements that nillable, or fully defaultable.
    *
diff --git a/daffodil-core/src/test/scala/org/apache/daffodil/layers/TestLayers.scala b/daffodil-core/src/test/scala/org/apache/daffodil/layers/TestLayers.scala
index e17f481..81c1a0c 100644
--- a/daffodil-core/src/test/scala/org/apache/daffodil/layers/TestLayers.scala
+++ b/daffodil-core/src/test/scala/org/apache/daffodil/layers/TestLayers.scala
@@ -39,7 +39,7 @@ class TestLayers {
       <dfdl:format ref="tns:GeneralFormat"/>,
       <xs:element name="e1" dfdl:lengthKind="implicit">
         <xs:complexType>
-          <xs:sequence dfdl:layerTransform="base64_MIME" dfdl:layerLengthKind="boundaryMark" dfdl:layerBoundaryMark="!" dfdl:layerEncoding="iso-8859-1">
+          <xs:sequence dfdlx:layerTransform="base64_MIME" dfdlx:layerLengthKind="boundaryMark" dfdlx:layerBoundaryMark="!" dfdlx:layerEncoding="iso-8859-1">
             <xs:element name="s1" type="xs:string" dfdl:lengthKind="explicit" dfdl:length="3"/>
           </xs:sequence>
         </xs:complexType>
@@ -62,7 +62,7 @@ class TestLayers {
       <dfdl:format ref="tns:GeneralFormat" lengthKind='delimited'/>,
       <xs:element name="e1" dfdl:lengthKind="implicit">
         <xs:complexType>
-          <xs:sequence dfdl:layerTransform="base64_MIME" dfdl:layerLengthKind="boundaryMark" dfdl:layerBoundaryMark="!" dfdl:layerEncoding="iso-8859-1">
+          <xs:sequence dfdlx:layerTransform="base64_MIME" dfdlx:layerLengthKind="boundaryMark" dfdlx:layerBoundaryMark="!" dfdlx:layerEncoding="iso-8859-1">
             <xs:element name="s1" type="xs:string"/>
           </xs:sequence>
         </xs:complexType>
@@ -86,7 +86,7 @@ class TestLayers {
       <xs:element name="e1" dfdl:lengthKind="implicit">
         <xs:complexType>
           <xs:sequence>
-            <xs:sequence dfdl:layerTransform="base64_MIME" dfdl:layerLengthKind="boundaryMark" dfdl:layerBoundaryMark="!" dfdl:layerEncoding="iso-8859-1">
+            <xs:sequence dfdlx:layerTransform="base64_MIME" dfdlx:layerLengthKind="boundaryMark" dfdlx:layerBoundaryMark="!" dfdlx:layerEncoding="iso-8859-1">
               <xs:element name="s1" type="xs:string"/>
             </xs:sequence>
             <xs:element name="s2" type="xs:string"/>
@@ -132,14 +132,14 @@ a few lines of pointless text like this.""".replace("\r\n", "\n").replace("\n",
   val GZIPLayer1Schema =
     SchemaUtils.dfdlTestSchema(
       <xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>,
-      <dfdl:format ref="tns:GeneralFormat" layerLengthUnits="bytes" representation="binary"/>,
+      <dfdl:format ref="tns:GeneralFormat" dfdlx:layerLengthUnits="bytes" representation="binary"/>,
       <xs:element name="e1" dfdl:lengthKind="implicit">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="len" type="xs:int" dfdl:lengthKind="explicit" dfdl:length="4" dfdl:outputValueCalc="{ dfdl:contentLength(../x1, 'bytes') }"/>
             <xs:element name="x1" dfdl:lengthKind="implicit">
               <xs:complexType>
-                <xs:sequence dfdl:layerTransform="gzip" dfdl:layerLengthKind="explicit" dfdl:layerLength="{ ../len }">
+                <xs:sequence dfdlx:layerTransform="gzip" dfdlx:layerLengthKind="explicit" dfdlx:layerLength="{ ../len }">
                   <xs:element name="s1" type="xs:string" dfdl:lengthKind="delimited"/>
                 </xs:sequence>
               </xs:complexType>
@@ -175,17 +175,17 @@ a few lines of pointless text like this.""".replace("\r\n", "\n").replace("\n",
 
   def makeB64GZIPSchema(term: String, layerTerm: String) = SchemaUtils.dfdlTestSchema(
     <xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>,
-    <dfdl:format ref="tns:GeneralFormat" layerLengthUnits="bytes" representation="binary" layerEncoding="iso-8859-1"/>,
+    <dfdl:format ref="tns:GeneralFormat" dfdlx:layerLengthUnits="bytes" representation="binary" dfdlx:layerEncoding="iso-8859-1"/>,
     <xs:element name="e1" dfdl:lengthKind="implicit">
       <xs:complexType>
         <xs:sequence>
           <xs:element name="s1" type="xs:string" dfdl:lengthKind="delimited" dfdl:terminator={ term }/>
-          <xs:sequence dfdl:layerTransform="base64_MIME" dfdl:layerLengthKind="boundaryMark" dfdl:layerBoundaryMark={ layerTerm }>
+          <xs:sequence dfdlx:layerTransform="base64_MIME" dfdlx:layerLengthKind="boundaryMark" dfdlx:layerBoundaryMark={ layerTerm }>
             <xs:sequence>
               <xs:element name="len" type="xs:int" dfdl:outputValueCalc="{ dfdl:contentLength(../x1, 'bytes') }"/>
               <xs:element name="x1" dfdl:lengthKind="implicit">
                 <xs:complexType>
-                  <xs:sequence dfdl:layerTransform="gzip" dfdl:layerLengthKind="explicit" dfdl:layerLength="{ ../len }">
+                  <xs:sequence dfdlx:layerTransform="gzip" dfdlx:layerLengthKind="explicit" dfdlx:layerLength="{ ../len }">
                     <xs:element name="s2" type="xs:string" dfdl:lengthKind="delimited"/>
                   </xs:sequence>
                 </xs:complexType>
@@ -243,7 +243,7 @@ a few lines of pointless text like this.""".replace("\r\n", "\n").replace("\n",
       <dfdl:format ref="tns:GeneralFormat"/>,
       <xs:element name="e1" dfdl:lengthKind="implicit">
         <xs:complexType>
-          <xs:sequence dfdl:layerTransform="lineFolded_IMF" dfdl:layerLengthKind="implicit">
+          <xs:sequence dfdlx:layerTransform="lineFolded_IMF" dfdlx:layerLengthKind="implicit">
             <xs:element name="s1" type="xs:string" dfdl:lengthKind="delimited"/>
           </xs:sequence>
         </xs:complexType>
@@ -286,7 +286,7 @@ a few lines of pointless text like this.""".replace("\r\n", "\n").replace("\n",
       <dfdl:format ref="tns:GeneralFormat"/>,
       <xs:element name="e1" dfdl:lengthKind="implicit">
         <xs:complexType>
-          <xs:sequence dfdl:layerTransform="lineFolded_IMF" dfdl:layerLengthKind="boundaryMark">
+          <xs:sequence dfdlx:layerTransform="lineFolded_IMF" dfdlx:layerLengthKind="boundaryMark">
             <xs:element name="s1" type="xs:string" dfdl:lengthKind="delimited"/>
           </xs:sequence>
         </xs:complexType>
@@ -333,7 +333,7 @@ a few lines of pointless text like this.""".replace("\r\n", "\n").replace("\n",
       <dfdl:format ref="tns:GeneralFormat"/>,
       <xs:element name="e1" dfdl:lengthKind="explicit" dfdl:length="100">
         <xs:complexType>
-          <xs:sequence dfdl:layerTransform="lineFolded_IMF" dfdl:layerLengthKind="implicit">
+          <xs:sequence dfdlx:layerTransform="lineFolded_IMF" dfdlx:layerLengthKind="implicit">
             <xs:element name="s1" type="xs:string" dfdl:lengthKind="delimited"/>
           </xs:sequence>
         </xs:complexType>
@@ -383,7 +383,7 @@ a few lines of pointless text like this.""".replace("\r\n", "\n").replace("\n",
           <xs:sequence>
             <xs:element name="s0" type="xs:hexBinary" dfdl:length="4" dfdl:byteOrder="bigEndian" dfdl:bitOrder="mostSignificantBitFirst"/>
             <xs:element name="s1" type="xs:hexBinary" dfdl:length="4" dfdl:byteOrder="bigEndian" dfdl:bitOrder="mostSignificantBitFirst"/>
-            <xs:sequence dfdl:layerTransform="fourbyteswap" dfdl:layerLengthKind="explicit" dfdl:layerLengthUnits="bytes" dfdl:layerLength="6">
+            <xs:sequence dfdlx:layerTransform="fourbyteswap" dfdlx:layerLengthKind="explicit" dfdlx:layerLengthUnits="bytes" dfdlx:layerLength="6">
               <xs:sequence>
                 <xs:element name="s2" type="xs:hexBinary" dfdl:length="4"/>
                 <xs:element name="s3" type="xs:hexBinary" dfdl:length="24"/>
diff --git a/daffodil-lib/src/main/resources/daffodil-built-in-catalog.xml b/daffodil-lib/src/main/resources/daffodil-built-in-catalog.xml
index 7858db6..bc59ea5 100644
--- a/daffodil-lib/src/main/resources/daffodil-built-in-catalog.xml
+++ b/daffodil-lib/src/main/resources/daffodil-built-in-catalog.xml
@@ -25,6 +25,7 @@
   <uri name="http://www.ibm.com/xmlns/dfdl/testData"
 	  uri="org/apache/daffodil/xsd/tdml.xsd" />
   <uri name="http://www.ogf.org/dfdl/dfdl-1.0/" uri="org/apache/daffodil/xsd/DFDL_part3_model.xsd" />
+  <uri name="http://www.ogf.org/dfdl/dfdl-1.0/extensions" uri="org/apache/daffodil/xsd/dfdlx.xsd" />
  <!-- <uri name="http://www.ogf.org/dfdl/dfdl-1.0/XMLSchemaSubset"
     uri="org/apache/daffodil/xsd/DFDLSubsetOfXMLSchema_v1_036.xsd" /> -->
   <uri name="http://www.w3.org/2001/XMLSchema"
diff --git a/daffodil-lib/src/main/resources/eclipse-xml-catalog.xml b/daffodil-lib/src/main/resources/eclipse-xml-catalog.xml
index 20f97ff..0cd4034 100644
--- a/daffodil-lib/src/main/resources/eclipse-xml-catalog.xml
+++ b/daffodil-lib/src/main/resources/eclipse-xml-catalog.xml
@@ -21,6 +21,8 @@
 		uri="platform:/resource/daffodil-lib/src/main/resources/xsd/tdml.xsd" />
 	<uri name="http://www.ogf.org/dfdl/dfdl-1.0/"
 		uri="platform:/resource/daffodil-lib/resource_managed/main/xsd/DFDL_part3_model.xsd" />
+	<uri name="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
+		uri="platform:/resource/daffodil-lib/resource_managed/main/xsd/dfdlx.xsd" />
 	<uri name="http://www.w3.org/2001/XMLSchema"
 		uri="platform:/resource/daffodil-lib/src/main/resources/xsd/XMLSchema_for_DFDL.xsd" />
 	<public publicId="-//W3C//DTD XMLSCHEMA 200102//EN"
diff --git a/daffodil-lib/src/main/resources/org/apache/daffodil/xsd/XMLSchema_for_DFDL.xsd b/daffodil-lib/src/main/resources/org/apache/daffodil/xsd/XMLSchema_for_DFDL.xsd
index 6c06162..fa03f52 100644
--- a/daffodil-lib/src/main/resources/org/apache/daffodil/xsd/XMLSchema_for_DFDL.xsd
+++ b/daffodil-lib/src/main/resources/org/apache/daffodil/xsd/XMLSchema_for_DFDL.xsd
@@ -33,12 +33,16 @@ this to validate when we load a DFDL Schema.
   xmlns:sub="http://www.w3.org/2001/XMLSchema"
   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"
   xsi:schemaLocation="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int dafint.xsd">
   <!-- Use the real URI for this, not the subset URI
    "http://www.w3.org/2001/XMLSchema"
   -->
 
   <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/" />
+
+  <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
+    schemaLocation="dfdlx.xsd" />
     
   <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int"
     schemaLocation="dafint.xsd"/>
@@ -1746,7 +1750,7 @@ this to validate when we load a DFDL Schema.
     <xsd:complexType>
       <xsd:complexContent>
         <xsd:extension base="sub:facet">
-          <xsd:attributeGroup ref="dfdl:RepValuesAGQualified" />
+          <xsd:attributeGroup ref="dfdlx:RepValuesAGQualified" />
           <xsd:attributeGroup ref="sub:anyOther" />
         </xsd:extension>
       </xsd:complexContent>
diff --git a/daffodil-lib/src/main/resources/org/apache/daffodil/xsd/tdml.xsd b/daffodil-lib/src/main/resources/org/apache/daffodil/xsd/tdml.xsd
index 2b0cdfd..d054278 100644
--- a/daffodil-lib/src/main/resources/org/apache/daffodil/xsd/tdml.xsd
+++ b/daffodil-lib/src/main/resources/org/apache/daffodil/xsd/tdml.xsd
@@ -32,6 +32,7 @@
   <xsd:import namespace="http://www.w3.org/2001/XMLSchema" schemaLocation="XMLSchema_for_DFDL.xsd"/>
   <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" schemaLocation="org/apache/daffodil/xsd/dafext.xsd"/>
   <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/" schemaLocation="org/apache/daffodil/xsd/DFDL_part3_model.xsd"/>
+  <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions" schemaLocation="org/apache/daffodil/xsd/dfdlx.xsd"/>
 
   <xs:attribute name="tutorialInclude" type="xs:string" fixed="no"/>
   
diff --git a/daffodil-lib/src/main/scala/org/apache/daffodil/schema/annotation/props/ByHandMixins.scala b/daffodil-lib/src/main/scala/org/apache/daffodil/schema/annotation/props/ByHandMixins.scala
index 98771e3..3d6d92b 100644
--- a/daffodil-lib/src/main/scala/org/apache/daffodil/schema/annotation/props/ByHandMixins.scala
+++ b/daffodil-lib/src/main/scala/org/apache/daffodil/schema/annotation/props/ByHandMixins.scala
@@ -443,10 +443,19 @@ trait EmptyElementParsePolicyMixin extends PropertyMixin {
       val defaultEmptyElementParsePolicy = this.tunable.defaultEmptyElementParsePolicy
       SDW(
         WarnID.EmptyElementParsePolicyError,
-        "Property 'daf:emptyElementParsePolicy' is required but not defined, using tunable '%s' by default.",
+        "Property 'dfdlx:emptyElementParsePolicy' is required but not defined, using tunable '%s' by default.",
         defaultEmptyElementParsePolicy)
       defaultEmptyElementParsePolicy
     }
   }
 
 }
+
+/**
+ * Code generated by the property generator for the dfdl layering and dfdlx
+ * layering properties results in duplicates. To resolve this, the dfdlx schema
+ * defines the traits as Ext*, but the property generator is told to not
+ * generated traits for these. So we must create the by hand.
+ */
+trait ExtLayeringAGMixin
+trait ExtLayeringAGQualifiedMixin
diff --git a/daffodil-lib/src/main/scala/org/apache/daffodil/util/SchemaUtils.scala b/daffodil-lib/src/main/scala/org/apache/daffodil/util/SchemaUtils.scala
index cd9ef17..a9c8a72 100644
--- a/daffodil-lib/src/main/scala/org/apache/daffodil/util/SchemaUtils.scala
+++ b/daffodil-lib/src/main/scala/org/apache/daffodil/util/SchemaUtils.scala
@@ -92,6 +92,7 @@ object SchemaUtils {
     scope = XMLUtils.combineScopes(null, defaultNamespace, scope)
     scope = XMLUtils.combineScopes("tns", targetNamespace, scope)
     scope = XMLUtils.combineScopes("ex", targetNamespace, scope)
+    scope = XMLUtils.combineScopes("dfdlx", XMLUtils.DFDLX_NAMESPACE, scope)
 
     val schemaNode =
       <xs:schema elementFormDefault={ elementFormDefault }>
diff --git a/daffodil-lib/src/main/scala/org/apache/daffodil/xml/XMLUtils.scala b/daffodil-lib/src/main/scala/org/apache/daffodil/xml/XMLUtils.scala
index e62b0ff..4fd7512 100644
--- a/daffodil-lib/src/main/scala/org/apache/daffodil/xml/XMLUtils.scala
+++ b/daffodil-lib/src/main/scala/org/apache/daffodil/xml/XMLUtils.scala
@@ -323,6 +323,7 @@ object XMLUtils {
   val XPATH_FUNCTION_NAMESPACE = NS("http://www.w3.org/2005/xpath-functions")
   val XPATH_MATH_NAMESPACE = NS("http://www.w3.org/2005/xpath-functions/math")
   val DFDL_NAMESPACE = NS("http://www.ogf.org/dfdl/dfdl-1.0/") // dfdl ns does have a trailing slash
+  val DFDLX_NAMESPACE = NS("http://www.ogf.org/dfdl/dfdl-1.0/extensions")
   val TDML_NAMESPACE = NS("http://www.ibm.com/xmlns/dfdl/testData")
   val EXAMPLE_NAMESPACE = NS("http://example.com")
   val XHTML_NAMESPACE = NS("http://www.w3.org/1999/xhtml")
@@ -379,6 +380,7 @@ object XMLUtils {
   // shorter forms, to make constructing XML literals,... make the lines shorter.
   val xsdURI = XSD_NAMESPACE
   val dfdlURI = DFDL_NAMESPACE
+  val dfdlxURI = DFDLX_NAMESPACE
   val dfdlAppinfoSource = NS("http://www.ogf.org/dfdl/")
   val targetNS = EXAMPLE_NAMESPACE // we use this for tests.
   val xsiURI = XSI_NAMESPACE
@@ -434,6 +436,12 @@ object XMLUtils {
     }
   }
 
+  def dfdlxAttributes(n: Node) = {
+    n.attributes.filter {
+      _.getNamespace(n) == DFDLX_NAMESPACE.toString
+    }
+  }
+
   def dafAttributes(n: Node) = {
     n.attributes.filter { a =>
       a.getNamespace(n) == XMLUtils.EXT_NS_NCSA.toString ||
@@ -1097,6 +1105,7 @@ trait GetAttributesMixin extends ThrowsSDE {
    * For picking off the short-form annotations.
    */
   def dfdlAttributes(n: Node) = XMLUtils.dfdlAttributes(n)
+  def dfdlxAttributes(n: Node) = XMLUtils.dfdlxAttributes(n)
   def dafAttributes(n: Node) = XMLUtils.dafAttributes(n)
 
 }
diff --git a/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part1_simpletypes.xsd b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part1_simpletypes.xsd
index 26cbdd2..7fec2ac 100644
--- a/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part1_simpletypes.xsd
+++ b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part1_simpletypes.xsd
@@ -584,15 +584,6 @@
     </xsd:restriction>
   </xsd:simpleType>
   
-  <xsd:simpleType name="ChoiceKeyKindType">
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="byType"/>
-      <xsd:enumeration value="explicit"/>
-      <xsd:enumeration value="speculative"/>
-      <xsd:enumeration value="implicit"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
   <!-- A pattern is used instead of an enumeration for compactness -->
   <xsd:simpleType name="BinaryPackedSignCodes">
     <xsd:restriction base="dfdl:DFDLStringLiteral">
diff --git a/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part2_attributes.xsd b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part2_attributes.xsd
index 94f168e..32271e2 100644
--- a/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part2_attributes.xsd
+++ b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part2_attributes.xsd
@@ -19,12 +19,15 @@
 <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"
   xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd">
 
 <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" schemaLocation="org/apache/daffodil/xsd/dafext.xsd"/>
+<xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions" schemaLocation="org/apache/daffodil/xsd/dfdlx.xsd"/>
+
   <xsd:include schemaLocation="DFDL_part1_simpletypes.xsd" />
 
   <!-- ==================================================================== -->
@@ -95,8 +98,9 @@
       type="dfdl:ByteOrderEnum_Or_DFDLExpression" />
       
     <xsd:attribute name="bitOrder" type="dfdl:BitOrderEnum"/>
-    <xsd:attribute ref="daf:parseUnparsePolicy"/>
-    <xsd:attribute ref="daf:emptyElementParsePolicy"/>
+    <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" />
@@ -189,18 +193,6 @@
     <xsd:attribute name="escapeSchemeRef" type="dfdl:DFDLQName" />
   </xsd:attributeGroup>
 
-  <xsd:attributeGroup name="SimpleTypeValueCalcAG">
-    <xsd:attribute name="repType" type="dfdl:DFDLQName" />
-    <xsd:attribute name="inputTypeCalc" type="dfdl:DFDLExpression" />
-    <xsd:attribute name="outputTypeCalc" type="dfdl:DFDLExpression" />
-    <xsd:attributeGroup ref="dfdl:RepValuesAG" />
-  </xsd:attributeGroup>
-
-  <xsd:attributeGroup name="RepValuesAG">
-    <xsd:attribute name="repValues" type="dfdl:NonEmptyListofDFDLStringLiteralOrNonEmptyListOfInteger" />
-    <xsd:attribute name="repValueRanges" type="dfdl:NonEmptyListOfInteger" />
-  </xsd:attributeGroup>
-  
   <!-- 13.2.1 Escape Scheme -->
   <!-- Note that these can never appear in short form -->
   <xsd:attributeGroup name="EscapeSchemeAG">
@@ -481,8 +473,8 @@
     <xsd:attribute name="choiceLengthKind" type="dfdl:ChoiceLengthKindEnum" />
     <xsd:attribute name="choiceLength" type="dfdl:DFDLNonNegativeInteger" />
     <xsd:attribute name="choiceDispatchKey" type="dfdl:DFDLExpression" />
-    <xsd:attribute name="choiceBranchKeyKind" type="dfdl:ChoiceKeyKindType"/>
-    <xsd:attribute name="choiceDispatchKeyKind" type="dfdl:ChoiceKeyKindType"/>
+    <xsd:attribute ref="dfdlx:choiceBranchKeyKind" />
+    <xsd:attribute ref="dfdlx:choiceDispatchKeyKind" />
   </xsd:attributeGroup>
 
   <!--16 Arrays and Optional Elements: Properties for Repeating and Variable-Occurrence 
@@ -656,8 +648,6 @@
       <xsd:enumeration value="choiceLength" />
       <xsd:enumeration value="choiceDispatchKey" />
       <xsd:enumeration value="choiceBranchKey" />
-      <xsd:enumeration value="choiceBranchKeyKind" />
-      <xsd:enumeration value="choiceDispatchKeyKind" />
 
       <xsd:enumeration value="occursCountKind" />
       <xsd:enumeration value="occursCount" />
@@ -666,12 +656,6 @@
       <xsd:enumeration value="truncateSpecifiedLengthString" />
 
       <xsd:enumeration value="decimalSigned" />
-      
-      <xsd:enumeration value="repType"/>
-      <xsd:enumeration value="repValues"/>
-      <xsd:enumeration value="repValueRanges"/>
-      <xsd:enumeration value="inputTypeCalc"/>
-      <xsd:enumeration value="outputTypeCalc"/>
     </xsd:restriction>
   </xsd:simpleType>
 
@@ -772,18 +756,6 @@
       type="dfdl:DFDLQName" />
   </xsd:attributeGroup>
 
-  <xsd:attributeGroup name="SimpleTypeValueCalcAGQualified">
-    <xsd:attribute form="qualified" name="repType" type="dfdl:DFDLQName" />
-    <xsd:attribute form="qualified" name="inputTypeCalc" type="dfdl:DFDLExpression" />
-    <xsd:attribute form="qualified" name="outputTypeCalc" type="dfdl:DFDLExpression" />
-    <xsd:attributeGroup ref="dfdl:RepValuesAGQualified" />
-  </xsd:attributeGroup>
-
-  <xsd:attributeGroup name="RepValuesAGQualified">
-    <xsd:attribute form="qualified" name="repValues" type="dfdl:NonEmptyListofDFDLStringLiteralOrNonEmptyListOfInteger" />
-    <xsd:attribute form="qualified" name="repValueRanges" type="dfdl:NonEmptyListOfInteger" />
-  </xsd:attributeGroup>
-
   <!-- 13.2.1 Escape Scheme -->
   <!-- Note that these can never appear in short form -->
   <xsd:attributeGroup name="EscapeSchemeAGQualified">
@@ -1023,10 +995,8 @@
       type="dfdl:DFDLNonNegativeInteger" />
     <xsd:attribute form="qualified" name="choiceDispatchKey"
       type="dfdl:DFDLExpression" />
-    <xsd:attribute form="qualified" name="choiceBranchKeyKind"
-      type="dfdl:ChoiceKeyKindType"/>
-    <xsd:attribute form="qualified" name="choiceDispatchKeyKind" 
-      type="dfdl:ChoiceKeyKindType"/>
+    <xsd:attribute ref="dfdlx:choiceBranchKeyKind" />
+    <xsd:attribute ref="dfdlx:choiceDispatchKeyKind" />
   </xsd:attributeGroup>
 
   <!--16 Arrays and Optional Elements: Properties for Repeating and Variable-Occurrence 
@@ -1070,7 +1040,8 @@
   <xsd:attributeGroup name="GroupAGQualified">
     <xsd:attributeGroup ref="dfdl:GroupCommonAGQualified" />
     <xsd:attributeGroup ref="dfdl:SequenceAGQualified" />
-    <xsd:attributeGroup ref="dfdl:LayeringAGQualified" />
+    <xsd:attributeGroup ref="dfdl:LayeringAGQualified" /> <!-- backwards compatibility -->
+    <xsd:attributeGroup ref="dfdlx:ExtLayeringAGQualified" />
     <xsd:attributeGroup ref="dfdl:ChoiceAGQualified" />
     <xsd:attributeGroup ref="dfdl:SeparatorAGQualified" />
   </xsd:attributeGroup>
@@ -1092,7 +1063,7 @@
     <xsd:attributeGroup ref="dfdl:CalendarFormatAGQualified" />
     <xsd:attributeGroup ref="dfdl:BooleanTextAGQualified" />
     <xsd:attributeGroup ref="dfdl:BooleanBinaryAGQualified" />
-    <xsd:attributeGroup ref="dfdl:SimpleTypeValueCalcAGQualified" />
+    <xsd:attributeGroup ref="dfdlx:SimpleTypeValueCalcAGQualified" />
   </xsd:attributeGroup>
 
   <xsd:attributeGroup name="LayeringAGQualified">
diff --git a/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part3_model.xsd b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part3_model.xsd
index 1d5b48e..524087e 100644
--- a/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part3_model.xsd
+++ b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/DFDL_part3_model.xsd
@@ -19,16 +19,20 @@
 <xsd:schema targetNamespace="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dafint="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int"
   attributeFormDefault="unqualified" elementFormDefault="qualified"
   xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd 
   urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int org/apache/daffodil/xsd/dafint.xsd
-  urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int org/apache/daffodil/xsd/dafext.xsd">
+  urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int org/apache/daffodil/xsd/dafext.xsd>
+  http://www.ogf.org/dfdl/dfdl-1.0/extensions org/apache/daffodil/xsd/dfdlx.xsd">
+  
 
   <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int" schemaLocation="org/apache/daffodil/xsd/dafint.xsd" />
   <xsd:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" schemaLocation="org/apache/daffodil/xsd/dafext.xsd" />
+  <xsd:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions" schemaLocation="org/apache/daffodil/xsd/dfdlx.xsd" />
   <xsd:include schemaLocation="DFDL_part2_attributes.xsd" />
 
   <!-- all the dfdl: elements that can appear inside an xs:appinfo element -->
@@ -107,7 +111,11 @@
   <xsd:complexType name="PropertyType">
     <xsd:simpleContent>
       <xsd:extension base="xsd:string">
-        <xsd:attribute name="name" type="dfdl:PropertyNameType" use='required'/>
+        <xsd:attribute name="name" use='required'>
+          <xsd:simpleType>
+            <xsd:union memberTypes="dfdl:PropertyNameType dfdlx:PropertyNameType" />
+          </xsd:simpleType>
+        </xsd:attribute>
         <xsd:attributeGroup ref="dafint:daffodilAG"/>
       </xsd:extension>
     </xsd:simpleContent>
@@ -267,7 +275,8 @@
         <xsd:sequence />
         <xsd:attributeGroup ref="dfdl:GroupCommonAG" />
         <xsd:attributeGroup ref="dfdl:SequenceAG" />
-        <xsd:attributeGroup ref="dfdl:LayeringAG" />
+        <xsd:attributeGroup ref="dfdl:LayeringAG" /> <!-- backwards compatibility -->
+        <xsd:attributeGroup ref="dfdlx:ExtLayeringAG" />
         <xsd:attributeGroup ref="dfdl:SeparatorAG" />
       </xsd:extension>
     </xsd:complexContent>
@@ -293,7 +302,7 @@
   </xsd:complexType>
 
   <xsd:complexType name="DFDLEnumerationType">
-    <xsd:attributeGroup ref="dfdl:RepValuesAG" />
+    <xsd:attributeGroup ref="dfdlx:RepValuesAG" />
   </xsd:complexType>
 
   <xsd:complexType name="DFDLGroupType">
@@ -332,7 +341,8 @@
   <xsd:attributeGroup name="GroupAG">
     <xsd:attributeGroup ref="dfdl:GroupCommonAG" />
     <xsd:attributeGroup ref="dfdl:SequenceAG" />
-    <xsd:attributeGroup ref="dfdl:LayeringAG" />
+    <xsd:attributeGroup ref="dfdl:LayeringAG" /> <!-- backwards compatibility -->
+    <xsd:attributeGroup ref="dfdlx:ExtLayeringAG" />
     <xsd:attributeGroup ref="dfdl:ChoiceAG" />
     <xsd:attributeGroup ref="dfdl:SeparatorAG" />
   </xsd:attributeGroup>
@@ -354,7 +364,7 @@
     <xsd:attributeGroup ref="dfdl:CalendarFormatAG" />
     <xsd:attributeGroup ref="dfdl:BooleanTextAG" />
     <xsd:attributeGroup ref="dfdl:BooleanBinaryAG" />
-    <xsd:attributeGroup ref="dfdl:SimpleTypeValueCalcAG" />
+    <xsd:attributeGroup ref="dfdlx:SimpleTypeValueCalcAG" />
   </xsd:attributeGroup>
 
 </xsd:schema>
diff --git a/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/dafext.xsd b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/dafext.xsd
index f6da790..795d172 100644
--- a/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/dafext.xsd
+++ b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/dafext.xsd
@@ -22,31 +22,18 @@
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:dafint="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   attributeFormDefault="unqualified"
   elementFormDefault="qualified"
   xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd
+  http://www.ogf.org/dfdl/dfdl-1.0/extensions xsd/dfdlx.xsd
   urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int xsd/dafint.xsd">
-
+  
+  <xs:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions"/>
   <xs:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int"/>
 
-  <xs:attribute name="parseUnparsePolicy" type="daf:ParseUnparsePolicyEnum"/>
-
-  <xs:simpleType name="ParseUnparsePolicyEnum">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="both" />
-      <xs:enumeration value="parseOnly" />
-      <xs:enumeration value="unparseOnly" />
-    </xs:restriction>
-  </xs:simpleType>
-  
-  <xs:attribute name="emptyElementParsePolicy" type="daf:EmptyElementParsePolicyEnum"/>
-  
-  <xs:simpleType name="EmptyElementParsePolicyEnum">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="treatAsEmpty" />
-      <xs:enumeration value="treatAsMissing" />
-    </xs:restriction>
-  </xs:simpleType>
+  <!-- needed for backwards compatability with daf:parseUnparsePolicy -->
+  <xs:attribute name="parseUnparsePolicy" type="dfdlx:ParseUnparsePolicyEnum"/>
 
   <xs:element name="property" type="daf:PropertyType" />
 
@@ -61,11 +48,11 @@
 
   <xs:simpleType name="PropertyNameType">
     <xs:restriction base="xs:string">
-      <xs:enumeration value="emptyElementParsePolicy"/>
       <xs:enumeration value="parseUnparsePolicy"/>
     </xs:restriction>
   </xs:simpleType>
 
+
   <!-- properties related to daffodil configuration -->
 
   <xs:element name="externalVariableBindings" type="daf:externalVarType" />
@@ -379,7 +366,7 @@
   </xs:element>
 
   <xs:simpleType name="TunableEmptyElementParsePolicy">
-    <xs:restriction base="daf:EmptyElementParsePolicyEnum" />
+    <xs:restriction base="dfdlx:EmptyElementParsePolicyEnum" />
   </xs:simpleType>
 
   <!--
@@ -391,7 +378,7 @@
   <xs:simpleType name="TunableParseUnparsePolicyTunable">
     <xs:union>
       <xs:simpleType>
-        <xs:restriction base="daf:ParseUnparsePolicyEnum" />
+        <xs:restriction base="dfdlx:ParseUnparsePolicyEnum" />
       </xs:simpleType>
       <xs:simpleType>
         <xs:restriction base="xs:string">
@@ -422,6 +409,9 @@
           <xs:enumeration value="deprecatedEncodingNameUSASCII7BitPacked" />
           <xs:enumeration value="deprecatedExpressionResultCoercion" />
           <xs:enumeration value="deprecatedFunctionDAFError" />
+          <xs:enumeration value="deprecatedPropertyDAFError" />
+          <xs:enumeration value="deprecatedPropertyDFDLXError" />
+          <xs:enumeration value="deprecatedPropertyDFDLError" />
           <xs:enumeration value="deprecatedPropertySeparatorPolicy" />
           <xs:enumeration value="emptyElementParsePolicyError" />
           <xs:enumeration value="encodingErrorPolicyError" />
diff --git a/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/dfdlx.xsd b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/dfdlx.xsd
new file mode 100644
index 0000000..2d743c1
--- /dev/null
+++ b/daffodil-propgen/src/main/resources/org/apache/daffodil/xsd/dfdlx.xsd
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<xs:schema
+  targetNamespace="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
+  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
+  xmlns:dafint="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int"
+  attributeFormDefault="unqualified"
+  elementFormDefault="qualified">
+
+  <xs:import namespace="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:int" schemaLocation="xsd/dafint.xsd" />
+  <xs:import namespace="http://www.ogf.org/dfdl/dfdl-1.0/" schemaLocation="xsd/DFDL_part3_model.xsd" />
+
+  <!-- dfdl:property="..." extension values. Extension properties must start with dfdlx: -->
+
+  <xs:simpleType name="PropertyNameType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="dfdlx:choiceBranchKeyKind" />
+      <xs:enumeration value="dfdlx:choiceDispatchKeyKind" />
+      <xs:enumeration value="dfdlx:emptyElementParsePolicy"/>
+      <xs:enumeration value="dfdlx:inputTypeCalc"/>
+      <xs:enumeration value="dfdlx:outputTypeCalc"/>
+      <xs:enumeration value="dfdlx:parseUnparsePolicy"/>
+      <xs:enumeration value="dfdlx:repType"/>
+      <xs:enumeration value="dfdlx:repValueRanges"/>
+      <xs:enumeration value="dfdlx:repValues"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:attribute name="parseUnparsePolicy" type="dfdlx:ParseUnparsePolicyEnum"/>
+  <xs:simpleType name="ParseUnparsePolicyEnum">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="both" />
+      <xs:enumeration value="parseOnly" />
+      <xs:enumeration value="unparseOnly" />
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:attribute name="emptyElementParsePolicy" type="dfdlx:EmptyElementParsePolicyEnum"/>
+  <xs:simpleType name="EmptyElementParsePolicyEnum">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="treatAsEmpty" />
+      <xs:enumeration value="treatAsMissing" />
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:attribute name="choiceBranchKeyKind" type="dfdlx:ChoiceKeyKindType"/>
+  <xs:attribute name="choiceDispatchKeyKind"  type="dfdlx:ChoiceKeyKindType"/>
+  <xs:simpleType name="ChoiceKeyKindType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="byType"/>
+      <xs:enumeration value="explicit"/>
+      <xs:enumeration value="speculative"/>
+      <xs:enumeration value="implicit"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:attributeGroup name="SimpleTypeValueCalcAG">
+    <xs:attribute form="qualified" name="repType" type="dfdl:DFDLQName" />
+    <xs:attribute form="qualified" name="inputTypeCalc" type="dfdl:DFDLExpression" />
+    <xs:attribute form="qualified" name="outputTypeCalc" type="dfdl:DFDLExpression" />
+    <xs:attributeGroup ref="dfdlx:RepValuesAG" />
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="RepValuesAG">
+    <xs:attribute form="qualified" name="repValues" type="dfdl:NonEmptyListofDFDLStringLiteralOrNonEmptyListOfInteger" />
+    <xs:attribute form="qualified" name="repValueRanges" type="dfdl:NonEmptyListOfInteger" />
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="SimpleTypeValueCalcAGQualified">
+    <xs:attribute form="qualified" name="repType" type="dfdl:DFDLQName" />
+    <xs:attribute form="qualified" name="inputTypeCalc" type="dfdl:DFDLExpression" />
+    <xs:attribute form="qualified" name="outputTypeCalc" type="dfdl:DFDLExpression" />
+    <xs:attributeGroup ref="dfdlx:RepValuesAGQualified" />
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="RepValuesAGQualified">
+    <xs:attribute form="qualified" name="repValues" type="dfdl:NonEmptyListofDFDLStringLiteralOrNonEmptyListOfInteger" />
+    <xs:attribute form="qualified" name="repValueRanges" type="dfdl:NonEmptyListOfInteger" />
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="ExtLayeringAG">
+    <xs:attribute form="qualified" name="layerTransform" type="dfdl:LayerTransformType_Or_DFDLExpression" />
+    <xs:attribute form="qualified" name="layerEncoding" type="dfdl:EncodingEnum_Or_DFDLExpression" />
+    <xs:attribute form="qualified" name="layerLengthKind" type="dfdl:LayerLengthKindEnum" />
+    <xs:attribute form="qualified" name="layerLength" type="dfdl:DFDLNonNegativeInteger_Or_DFDLExpression" />
+    <xs:attribute form="qualified" name="layerLengthUnits" type="dfdl:LayerLengthUnitsEnum" />
+    <xs:attribute form="qualified" name="layerBoundaryMark" type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" />
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="ExtLayeringAGQualified">
+    <xs:attribute form="qualified" name="layerTransform" type="dfdl:LayerTransformType_Or_DFDLExpression" />
+    <xs:attribute form="qualified" name="layerEncoding" type="dfdl:EncodingEnum_Or_DFDLExpression" />
+    <xs:attribute form="qualified" name="layerLengthKind" type="dfdl:LayerLengthKindEnum" />
+    <xs:attribute form="qualified" name="layerLength" type="dfdl:DFDLNonNegativeInteger_Or_DFDLExpression" />
+    <xs:attribute form="qualified" name="layerLengthUnits" type="dfdl:LayerLengthUnitsEnum" />
+    <xs:attribute form="qualified" name="layerBoundaryMark" type="dfdl:ListOfDFDLStringLiteral_Or_DFDLExpression" />
+  </xs:attributeGroup>
+
+</xs:schema>
diff --git a/daffodil-propgen/src/main/scala/org/apache/daffodil/propGen/PropertyGenerator.scala b/daffodil-propgen/src/main/scala/org/apache/daffodil/propGen/PropertyGenerator.scala
index ce092c2..0a8c5f1 100644
--- a/daffodil-propgen/src/main/scala/org/apache/daffodil/propGen/PropertyGenerator.scala
+++ b/daffodil-propgen/src/main/scala/org/apache/daffodil/propGen/PropertyGenerator.scala
@@ -36,14 +36,33 @@ class PropertyGenerator(arg: Node) {
 
   val dfdlSchema = arg
 
-  val excludedTypes = List("Property", "EmptyElementParsePolicy", "TextNumberBase", "AlignmentType", "FillByteType", "BinaryBooleanTrueRepType", "BinaryBooleanFalseRepType",
-    "SeparatorSuppressionPolicy", "dafint:daffodilAG", "TextStandardExponentRep", "TextOutputMinLength", // Do these by hand.
-    "PropertyNameType", "PropertyType", // Not used and causes conflict with daf namespace
-    "externalVariableBindings", "externalVarType", "bind", "bindNameType", "bindType", "tunables", // Ignore daffodil configuration types
-    "TunableEmptyElementParsePolicy", "TunableParseUnparsePolicyTunable", "TunableSuppressSchemaDefinitionWarnings", "TunableUnqualifiedPathStepPolicy") // Ignore tunable types
-
-  val excludedAttributes = List("EmptyElementParsePolicy", "TextNumberBase",
-    "SeparatorSuppressionPolicy", "TextStandardExponentRep", "TextOutputMinLength") // Do these by hand.
+  val excludedTypes = List(
+    "AlignmentType",
+    "BinaryBooleanFalseRepType",
+    "BinaryBooleanTrueRepType",
+    "EmptyElementParsePolicy",
+    "ExtLayeringAG",
+    "ExtLayeringAGQualified",
+    "FillByteType",
+    "Property",
+    "PropertyNameType",
+    "PropertyType",
+    "SeparatorSuppressionPolicy",
+    "TextNumberBase",
+    "TextOutputMinLength",
+    "TextStandardExponentRep",
+    "TunableEmptyElementParsePolicy",
+    "TunableParseUnparsePolicyTunable",
+    "TunableSuppressSchemaDefinitionWarnings",
+    "TunableUnqualifiedPathStepPolicy",
+    "dafint:daffodilAG")
+
+  val excludedAttributes = List(
+    "EmptyElementParsePolicy",
+    "SeparatorSuppressionPolicy",
+    "TextNumberBase",
+    "TextOutputMinLength",
+    "TextStandardExponentRep")
 
   def excludeType(name: String) = {
     excludedTypes.exists { _.toUpperCase == name.toUpperCase() }
@@ -178,17 +197,25 @@ class PropertyGenerator(arg: Node) {
     //
     // for each attribute that is an Enum type, we want to use a Mixin of that type
     //
-    val attribsNoDafRefs = attribs.map { attrNode =>
+    val attribsNoDafRefs = attribs.flatMap { attrNode =>
       val rawRef = attr(attrNode, "ref")
       if (rawRef.isDefined) {
         // this is referencing a Daffodil Extension, go find that attribute
-        val refWithoutPrefix = stripPrefix("daf:", rawRef.get)
-        val dafAttrNode = (PropertyGenerator.daffodilExtensionsXML \ "attribute").find { node =>
-          attr(node, "name").get == refWithoutPrefix
-        }.get
-        dafAttrNode
+
+        if (rawRef.get.startsWith("daf:")) {
+          // ignore daf prefix and the dfdlx:Layer attribute group. These are
+          // duplicated in dfdlx for backwards compatability, so this ignores
+          // the duplicate.
+          None
+        } else {
+          val refWithoutPrefix = stripPrefix("dfdlx:", rawRef.get)
+          val dafAttrNode = (PropertyGenerator.daffodilExtensionsXML \ "attribute").find { node =>
+            attr(node, "name").get == refWithoutPrefix
+          }.get
+          Some(dafAttrNode)
+        }
       } else {
-        attrNode
+        Some(attrNode)
       }
     }
 
@@ -275,7 +302,7 @@ class PropertyGenerator(arg: Node) {
 
   def stripDFDLPrefix(s: String) = {
     val s1 = stripPrefix("dfdl:", s)
-    val s2 = stripPrefix("daf:", s1)
+    val s2 = stripPrefix("dfdlx:", s1)
     s2
   }
 
@@ -629,9 +656,10 @@ object PropertyGenerator {
   val dfdlSchemasForDFDLAnnotations = List("/org/apache/daffodil/xsd/DFDL_part1_simpletypes.xsd",
     "/org/apache/daffodil/xsd/DFDL_part2_attributes.xsd",
     "/org/apache/daffodil/xsd/DFDL_part3_model.xsd",
-    "/org/apache/daffodil/xsd/dafext.xsd")
+    "/org/apache/daffodil/xsd/dfdlx.xsd")
 
-  val daffodilExtensionsXML = getSchemaAsNode("/org/apache/daffodil/xsd/dafext.xsd")
+  val daffodilConfigXML = getSchemaAsNode("/org/apache/daffodil/xsd/dafext.xsd")
+  val daffodilExtensionsXML = getSchemaAsNode("/org/apache/daffodil/xsd/dfdlx.xsd")
 
   def getSchemaAsNode(name: String): Node = {
     val is = getResourceOrFileStream(name)
@@ -706,12 +734,12 @@ import org.apache.daffodil.exceptions.ThrowsSDE
     System.out.println(generatedCodePath)
 
     val tunablePath = getGeneratedFilePath(args(0), tunableCodePackage, tunableCodeFilename)
-    val tunableGenerator = new TunableGenerator(daffodilExtensionsXML)
+    val tunableGenerator = new TunableGenerator(daffodilConfigXML, daffodilExtensionsXML)
     tunableGenerator.writeGeneratedCode(new java.io.FileWriter(tunablePath))
     System.out.println(tunablePath)
 
     val warnIdPath = getGeneratedFilePath(args(0), warnIdCodePackage, warnIdCodeFilename)
-    val warnIdGenerator = new WarnIDGenerator(daffodilExtensionsXML)
+    val warnIdGenerator = new WarnIDGenerator(daffodilConfigXML)
     warnIdGenerator.writeGeneratedCode(new java.io.FileWriter(warnIdPath))
     System.out.println(warnIdPath)
 
diff --git a/daffodil-propgen/src/main/scala/org/apache/daffodil/propGen/TunableGenerator.scala b/daffodil-propgen/src/main/scala/org/apache/daffodil/propGen/TunableGenerator.scala
index c4e0145..d62e280 100644
--- a/daffodil-propgen/src/main/scala/org/apache/daffodil/propGen/TunableGenerator.scala
+++ b/daffodil-propgen/src/main/scala/org/apache/daffodil/propGen/TunableGenerator.scala
@@ -19,7 +19,7 @@ package org.apache.daffodil.propGen
 
 import scala.xml.XML
 
-class TunableGenerator(schema: scala.xml.Node) {
+class TunableGenerator(schemaRootConfig: scala.xml.Node, schemaRootExt: scala.xml.Node) {
 
   val top = """
     |/*
@@ -122,14 +122,14 @@ class TunableGenerator(schema: scala.xml.Node) {
     |}
     """.trim.stripMargin
 
-  val tunablesRoot = (schema \ "element").find(_ \@ "name" == "tunables").get
+  val tunablesRoot = (schemaRootConfig \ "element").find(_ \@ "name" == "tunables").get
   val tunableNodes = tunablesRoot \\ "all" \ "element"
 
   val excludedSimpleTypes = Seq(
     "TunableEmptyElementParsePolicy",
     "TunableSuppressSchemaDefinitionWarnings"
   )
-  val tunableSimpleTypeNodes = (schema \ "simpleType")
+  val tunableSimpleTypeNodes = (schemaRootConfig \ "simpleType")
     .filter { st => (st \@ "name").startsWith("Tunable") }
     .filter { st => !excludedSimpleTypes.contains(st \@ "name") }
 
@@ -168,7 +168,7 @@ class TunableGenerator(schema: scala.xml.Node) {
 
     val tunableDefinitions =
       tunableSimpleTypeNodes.map { n =>
-        new TunableEnumDefinition(schema, n)
+        new TunableEnumDefinition(schemaRootConfig, schemaRootExt, n)
       }
 
     w.write(tunableDefinitions.map(_.scalaEnumeration).mkString("\n"))
@@ -243,7 +243,7 @@ class EnumListTunable(name: String, schemaType: String, schemaDefault: String, l
     """.trim.stripMargin
 }
 
-class TunableEnumDefinition(schemaRoot: scala.xml.Node, simpleTypeNode: scala.xml.Node) {
+class TunableEnumDefinition(schemaRootConfig: scala.xml.Node, schemaRootExt: scala.xml.Node, simpleTypeNode: scala.xml.Node) {
   private val nodeName = (simpleTypeNode \@ "name").stripPrefix("Tunable")
   private val scalaType = nodeName.head.toUpper + nodeName.tail
 
@@ -260,9 +260,13 @@ class TunableEnumDefinition(schemaRoot: scala.xml.Node, simpleTypeNode: scala.xm
         if (base.startsWith("xs:")) {
           (r \ "enumeration").map(_ \@ "value")
         } else {
-          val local = base.split(":")(1)
+          val Array(pre, local) = base.split(":")
+          val schemaToSearch = pre match {
+            case "daf" => schemaRootConfig
+            case "dfdlx" => schemaRootExt
+          }
           val restrictionSimpleTypeNode =
-            (schemaRoot \ "simpleType").find(_ \@ "name" == base.split(":")(1)).get
+            (schemaToSearch \ "simpleType").find(_ \@ "name" == base.split(":")(1)).get
           getAllEnumerationValues(restrictionSimpleTypeNode)
         }
       enumerationValues
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DAFFunctions.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DFDLXFunctions.scala
similarity index 93%
rename from daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DAFFunctions.scala
rename to daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DFDLXFunctions.scala
index 4a9be1d..51d2ace 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DAFFunctions.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DFDLXFunctions.scala
@@ -30,7 +30,7 @@ import org.apache.daffodil.processors.parsers.ParseError
 import org.apache.daffodil.exceptions.Assert
 import org.apache.daffodil.processors.unparsers.UState
 
-case class DAFTrace(recipe: CompiledDPath, msg: String)
+case class DFDLXTrace(recipe: CompiledDPath, msg: String)
   extends RecipeOpWithSubRecipes(recipe) {
 
   private def asXMLString(ie: InfosetCommon) = {
@@ -79,7 +79,7 @@ case object DAFError extends RecipeOp {
   }
 }
 
-case class DAFLookAhead(recipes: List[CompiledDPath])
+case class DFDLXLookAhead(recipes: List[CompiledDPath])
   extends FNTwoArgs(recipes) {
 
   def computeValue(arg1: AnyRef, arg2: AnyRef, dstate: DState): AnyRef = {
@@ -87,7 +87,7 @@ case class DAFLookAhead(recipes: List[CompiledDPath])
     val lBitSize = arg2.asInstanceOf[JLong]
 
     /*
-     * Since daf:lookAhead is defined to take unsigned arguements, the DPath interperater
+     * Since dfdlx:lookAhead is defined to take unsigned arguements, the DPath interperater
      * will error out on the cast if a negative arguement is supplied, so we do not need to SDE here.
      */
 
@@ -119,7 +119,7 @@ case class DAFLookAhead(recipes: List[CompiledDPath])
           if (dstate.runtimeData.isDefined) One(dstate.runtimeData.get.schemaFileLocation)
           else Nope
         throw new ParseError(maybeSFL, dstate.contextLocation, Nope,
-          One("Insufficient bits available to satisfy daf:lookAhead(%s,%s)."),
+          One("Insufficient bits available to satisfy dfdlx:lookAhead(%s,%s)."),
           offset, bitSize, totalLookahead)
       }
       val mark = dis.markPos
@@ -135,7 +135,7 @@ case class DAFLookAhead(recipes: List[CompiledDPath])
       ans
     } else {
       Assert.invariant(dstate.parseOrUnparseState.get.isInstanceOf[UState])
-      dstate.SDE("Cannot call daf:lookAhead() during unparse")
+      dstate.SDE("Cannot call dfdlx:lookAhead() during unparse")
     }
   }
 }
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DFDLXTypeCalcFunctions.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DFDLXTypeCalcFunctions.scala
index eee022f..a4e7046 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DFDLXTypeCalcFunctions.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/DFDLXTypeCalcFunctions.scala
@@ -190,8 +190,8 @@ case class DFDLXRepTypeValueInt(a: CompiledDPath, b: NodeInfo.Kind)
   extends RecipeOp
   with DFDLXWithExtractTypedValue {
   override val returnType = Integer
-  override val functionName = "dfdl:repTypeValueInt()"
-  override val legalContext = "dfdl:inputTypeCalc"
+  override val functionName = "dfdlx:repTypeValueInt()"
+  override val legalContext = "dfdlx:inputTypeCalc"
   override val repOrLogicalType = "repType"
 
   override def run(dstate: DState): Unit = {
@@ -205,8 +205,8 @@ case class DFDLXRepTypeValueString(a: CompiledDPath, b: NodeInfo.Kind)
   with DFDLXWithExtractTypedValue {
 
   override val returnType = String
-  override val functionName = "dfdl:repTypeValueString()"
-  override val legalContext = "dfdl:inputTypeCalc"
+  override val functionName = "dfdlx:repTypeValueString()"
+  override val legalContext = "dfdlx:inputTypeCalc"
   override val repOrLogicalType = "repType"
 
   override def run(dstate: DState): Unit = {
@@ -220,8 +220,8 @@ case class DFDLXLogicalTypeValueInt(a: CompiledDPath, b: NodeInfo.Kind)
   with DFDLXWithExtractTypedValue {
 
   override val returnType = Integer
-  override val functionName = "dfdl:logicalTypeValueInt()"
-  override val legalContext = "dfdl:outputTypeCalc"
+  override val functionName = "dfdlx:logicalTypeValueInt()"
+  override val legalContext = "dfdlx:outputTypeCalc"
   override val repOrLogicalType = "logical type"
 
   override def run(dstate: DState): Unit = {
@@ -233,8 +233,8 @@ case class DFDLXLogicalTypeValueString(a: CompiledDPath, b: NodeInfo.Kind)
   extends RecipeOp
   with DFDLXWithExtractTypedValue {
   override val returnType = String
-  override val functionName = "dfdl:logicalTypeValueString()"
-  override val legalContext = "dfdl:outputTypeCalc"
+  override val functionName = "dfdlx:logicalTypeValueString()"
+  override val legalContext = "dfdlx:outputTypeCalc"
   override val repOrLogicalType = "logical type"
 
   override def run(dstate: DState): Unit = {
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/NodeInfo.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/NodeInfo.scala
index 64d7f7e..b7799e0 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/NodeInfo.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/dpath/NodeInfo.scala
@@ -224,7 +224,7 @@ object NodeInfo extends Enum {
   /**
    * Nothing is the bottom of the type lattice.
    *
-   * It is the return type of the daf:error() function. It's a subtype of
+   * It is the return type of the dfdlx:error() function. It's a subtype of
    * every type (except some special singletons like ArrayType).
    */
   case object Nothing
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/Base64Transformer.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/Base64Transformer.scala
index 55b9a35..e14731a 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/Base64Transformer.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/Base64Transformer.scala
@@ -83,14 +83,14 @@ object Base64MIMETransformerFactory
       "Base64 layer support requires Java 8 (aka Java 1.8).")
 
     trd.schemaDefinitionUnless(maybeLayerBoundaryMarkEv.isDefined,
-      "Property dfdl:layerBoundaryMark was not defined.")
+      "Property dfdlx:layerBoundaryMark was not defined.")
     trd.schemaDefinitionUnless(maybeLayerLengthKind.isEmpty ||
       (maybeLayerLengthKind.get eq LayerLengthKind.BoundaryMark),
-      "Only dfdl:layerLengthKind 'boundaryMark' is supported, but '%s' was specified",
+      "Only dfdlx:layerLengthKind 'boundaryMark' is supported, but '%s' was specified",
       maybeLayerLengthKind.get.toString)
 
     trd.schemaDefinitionUnless(maybeLayerCharsetEv.isDefined,
-      "Property dfdl:layerEncoding must be defined.")
+      "Property dfdlx:layerEncoding must be defined.")
 
     val xformer = new Base64MIMETransformer(maybeLayerCharsetEv.get, maybeLayerBoundaryMarkEv.get)
     xformer
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/ByteSwapTransformer.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/ByteSwapTransformer.scala
index 858510c..938de6c 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/ByteSwapTransformer.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/ByteSwapTransformer.scala
@@ -201,7 +201,7 @@ sealed abstract class ByteSwapTransformerFactory(wordsize: Int, name: String)
     trd: TermRuntimeData): LayerTransformer = {
 
     trd.schemaDefinitionUnless(maybeLayerLengthKind.isDefined,
-      "The propert dfdl:layerLengthKind must be defined.")
+      "The propert dfdlx:layerLengthKind must be defined.")
 
     val xformer =
       maybeLayerLengthKind.get match {
@@ -209,7 +209,7 @@ sealed abstract class ByteSwapTransformerFactory(wordsize: Int, name: String)
           new ByteSwapTransformer(wordsize, maybeLayerLengthInBytesEv.get)
         }
         case x =>
-          trd.SDE("Property dfdl:layerLengthKind can only be 'explicit', but was '%s'",
+          trd.SDE("Property dfdlx:layerLengthKind can only be 'explicit', but was '%s'",
             x.toString)
       }
     xformer
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LayerTransformer.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LayerTransformer.scala
index 1e62410..9c9e950 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LayerTransformer.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LayerTransformer.scala
@@ -63,7 +63,7 @@ abstract class LayerTransformerFactory(nom: String)
 
 /**
  * Transformers have factories. This lets you find the transformer factory
- * by the name obtained from dfdl:layerTransform.
+ * by the name obtained from dfdlx:layerTransform.
  */
 object LayerTransformerFactory {
 
@@ -81,7 +81,7 @@ object LayerTransformerFactory {
     val maybeFactory = transformerMap.get(name)
     if (maybeFactory.isEmpty) {
       val choices = transformerMap.keySet.mkString(", ")
-      state.SDE("The dfdl:layerTransform '%s' was not found. Available choices are: %s", name, choices)
+      state.SDE("The dfdlx:layerTransform '%s' was not found. Available choices are: %s", name, choices)
     } else {
       maybeFactory.get
     }
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LineFoldedTransformer.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LineFoldedTransformer.scala
index 48d388b..fe8cd21 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LineFoldedTransformer.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LineFoldedTransformer.scala
@@ -163,7 +163,7 @@ sealed abstract class LineFoldedTransformerFactory(mode: LineFoldMode, name: Str
     trd: TermRuntimeData): LayerTransformer = {
 
     trd.schemaDefinitionUnless(maybeLayerLengthKind.isDefined,
-      "The propert dfdl:layerLengthKind must be defined.")
+      "The property dfdlx:layerLengthKind must be defined.")
 
     val xformer =
       maybeLayerLengthKind.get match {
@@ -174,7 +174,7 @@ sealed abstract class LineFoldedTransformerFactory(mode: LineFoldMode, name: Str
           new LineFoldedTransformerImplicit(mode)
         }
         case x =>
-          trd.SDE("Property dfdl:layerLengthKind can only be 'implicit' or 'boundaryMark', but was '%s'",
+          trd.SDE("Property dfdlx:layerLengthKind can only be 'implicit' or 'boundaryMark', but was '%s'",
             x.toString)
       }
     xformer
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/Parser.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/Parser.scala
index e7d80a8..e3b3526 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/Parser.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/Parser.scala
@@ -336,7 +336,7 @@ case class NotParsableParser(context: ElementRuntimeData) extends PrimParserNoDa
     // We can't use state.SDE because that needs the infoset to determine the
     // context. No infoset will exist when this is called, so we'll manually
     // create an SDE and toss it
-    val rsde = new RuntimeSchemaDefinitionError(context.schemaFileLocation, state, "This schema was compiled without parse support. Check the parseUnparsePolicy tunable or daf:parseUnparsePolicy property.")
+    val rsde = new RuntimeSchemaDefinitionError(context.schemaFileLocation, state, "This schema was compiled without parse support. Check the parseUnparsePolicy tunable or dfdlx:parseUnparsePolicy property.")
     context.toss(rsde)
   }
 
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceChildBases.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceChildBases.scala
index 833b3a8..610f0c1 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceChildBases.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/SequenceChildBases.scala
@@ -76,11 +76,11 @@ object ParseAttemptStatus {
    *
    * The EmptyRep for simpleTypes enables default values to be substituted at parse time.
    *
-   * For simple types xs:string and xs:hexBinary, the property daf:emptyElementParsePolicy controls
+   * For simple types xs:string and xs:hexBinary, the property dfdlx:emptyElementParsePolicy controls
    * whether the EmptyRep is allowed for strings and hexBinary. In required positions, when
-   * daf:emptyElementParsePolicy is 'treatAsMissing', a required string/hexBinary that has EmptyRep
+   * dfdlx:emptyElementParsePolicy is 'treatAsMissing', a required string/hexBinary that has EmptyRep
    * causes a Parse Error, and an optional EmptyRep causes nothing to be added to the infoset (the empty string
-   * or hexBinary value is suppressed). When daf:emptyElementParsePolicy is 'treatAsEmpty', a required
+   * or hexBinary value is suppressed). When dfdlx:emptyElementParsePolicy is 'treatAsEmpty', a required
    * string/hexBinary with EmptyRep creates an empty string or zero-length byte array in the infoset.
    * An optional EmptyRep behaves differently depending on whether the EmptyRep is truly zero-length, or
    * dfdl:emptyValueDelimiterPolicy is such that EmptyRep is non-zero-length. When truly zero-length, no
diff --git a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/unparsers/Unparser.scala b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/unparsers/Unparser.scala
index 34168f6..af49da1 100644
--- a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/unparsers/Unparser.scala
+++ b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/unparsers/Unparser.scala
@@ -199,7 +199,7 @@ case class NotUnparsableUnparser(override val context: ElementRuntimeData) exten
     // We can't use state.SDE because that needs the infoset to determine the
     // context. No infoset will exist when this is called, so we'll manually
     // create an SDE and toss it
-    val rsde = new RuntimeSchemaDefinitionError(context.schemaFileLocation, state, "This schema was compiled without unparse support. Check the parseUnparsePolicy tunable or daf:parseUnparsePolicy property.")
+    val rsde = new RuntimeSchemaDefinitionError(context.schemaFileLocation, state, "This schema was compiled without unparse support. Check the parseUnparsePolicy tunable or dfdlx:parseUnparsePolicy property.")
     context.toss(rsde)
   }
 
diff --git a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AG.dfdl.xsd b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AG.dfdl.xsd
index 4c322f3..93224e7 100644
--- a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AG.dfdl.xsd
+++ b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AG.dfdl.xsd
@@ -17,11 +17,12 @@
 -->
 
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-  targetNamespace="http://example.com" xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
+  targetNamespace="http://example.com"
+  xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://example.com"
-  xmlns:fn="http://www.w3.org/2005/xpath-functions"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext">
+  xmlns:fn="http://www.w3.org/2005/xpath-functions">
 
 <include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
 
@@ -76,7 +77,7 @@
 if (fn:exists(../zone1)) then 1
 else if (fn:exists(../zone2)) then 2
 else if (fn:exists(../zone3)) then 3
-else daf:error()
+else dfdlx:error()
 }" />
     </sequence>
   </group>
diff --git a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AM.dfdl.xsd b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AM.dfdl.xsd
index 2063930..0e528ae 100644
--- a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AM.dfdl.xsd
+++ b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AM.dfdl.xsd
@@ -17,10 +17,12 @@
 -->
 
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-  targetNamespace="http://example.com" xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
+  targetNamespace="http://example.com"
+  xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://example.com"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext">
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:tns="http://example.com">
 
   <include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
 
@@ -32,7 +34,7 @@
         separatorSuppressionPolicy="anyEmpty" separatorPosition="infix"
         byteOrder="bigEndian" binaryNumberRep="binary"
         alignment="implicit" alignmentUnits="bytes" trailingSkip="0"
-        representation="text" daf:parseUnparsePolicy="parseOnly"/>
+        representation="text" dfdlx:parseUnparsePolicy="parseOnly"/>
     </appinfo>
   </annotation>
   <!-- MIME type detect -->
diff --git a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AV.dfdl.xsd b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AV.dfdl.xsd
index 1b0a69f..1a99761 100644
--- a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AV.dfdl.xsd
+++ b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/AV.dfdl.xsd
@@ -17,12 +17,13 @@
 -->
 
 <schema xmlns="http://www.w3.org/2001/XMLSchema"
-  targetNamespace="http://example.com" xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
+  targetNamespace="http://example.com"
+  xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
-  xmlns:tns="http://example.com"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext">
+  xmlns:tns="http://example.com">
 
 <include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
 
@@ -44,7 +45,7 @@
         calendarLanguage='en' 
         escapeSchemeRef=''
         encodingErrorPolicy="error"
-        daf:parseUnparsePolicy="parseOnly" />
+        dfdlx:parseUnparsePolicy="parseOnly" />
     </appinfo>
   </annotation>
 
diff --git a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/sepSuppression.tdml b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/sepSuppression.tdml
index 1c43c37..b96b332 100644
--- a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/sepSuppression.tdml
+++ b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/sepSuppression.tdml
@@ -221,7 +221,7 @@ a,,,d,,,g
           <record>
             <required1>a</required1>
             <!-- 
-              On Daffodil, because we are using daf:emptyElementParsePolicy='treatAsMissing'
+              On Daffodil, because we are using dfdlx:emptyElementParsePolicy='treatAsMissing'
               This test should not create any empty-string-valued elements.
               That should be consistent with IBM DFDL behavior (as of 2019-05-04 version).              
             <positional2/>
@@ -262,7 +262,7 @@ a,,,d,,,g,
         <ptg1>
           <record>
             <required1>a</required1>
-            <!-- daf:emptyElementParsePolicy='treatAsMissing'
+            <!-- dfdlx:emptyElementParsePolicy='treatAsMissing'
               <positional2/>
               <positional3/>
             -->
@@ -272,7 +272,7 @@ a,,,d,,,g,
           </record>
           <record>
             <required1>a</required1>
-            <!-- daf:emptyElementParsePolicy='treatAsMissing'
+            <!-- dfdlx:emptyElementParsePolicy='treatAsMissing'
               <positional2/>
               <positional3/>
             -->
@@ -301,7 +301,7 @@ a,,,d
             <!-- 
               Because these are optional, and their dfdl:emptyValueDelimiterPolicy is 'none'
               an empty representation does not create an element.
-              This is true for daf:emptyElementParsePolicy="treatAsEmpty".
+              This is true for dfdlx:emptyElementParsePolicy="treatAsEmpty".
               If you want empty elements, there has to be a non-zero-length 
               syntax in the data stream
               <positional2/>
@@ -698,7 +698,7 @@ a,,,,
         <ptg3>
           <record>
             <required1>a</required1>
-            <!-- empty string has no syntax, so even when daf:emptyElementParsePolicy is 'treatAsEmpty'
+            <!-- empty string has no syntax, so even when dfdlx:emptyElementParsePolicy is 'treatAsEmpty'
                  we still don't create optional empty string elements.
             <positional2/>
             <positional3/>
diff --git a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/sepSuppression2.tdml b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/sepSuppression2.tdml
index 9f806c0..4f555b7 100644
--- a/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/sepSuppression2.tdml
+++ b/daffodil-test-ibm1/src/test/resources/test-suite/tresys-contributed/sepSuppression2.tdml
@@ -21,6 +21,7 @@
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" 
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:ex="http://example.com"
@@ -298,7 +299,7 @@ a
         <xs:sequence dfdl:separator="," dfdl:separatorSuppressionPolicy="anyEmpty">
           <xs:element name="foo" type="xs:string" dfdl:lengthKind="delimited" />
           <xs:element name="bar" type="xs:string" dfdl:lengthKind="delimited"
-            minOccurs="0" dfdl:occursCountKind="implicit" daf:emptyElementParsePolicy="treatAsEmpty" />
+            minOccurs="0" dfdl:occursCountKind="implicit" dfdlx:emptyElementParsePolicy="treatAsEmpty" />
         </xs:sequence>
       </xs:complexType>
     </xs:element>
diff --git a/daffodil-test-ibm1/src/test/scala/org/apache/daffodil/TresysTests3.scala b/daffodil-test-ibm1/src/test/scala/org/apache/daffodil/TresysTests3.scala
index 704356b..e8fbfef 100644
--- a/daffodil-test-ibm1/src/test/scala/org/apache/daffodil/TresysTests3.scala
+++ b/daffodil-test-ibm1/src/test/scala/org/apache/daffodil/TresysTests3.scala
@@ -61,7 +61,7 @@ class TresysTests3 {
   // group. Because everything inside a hidden group must be either default or
   // OVC, and arrays can't have either, they cannot be in hidden groups.
   // This is fixed by specifying daffodil-specific property
-  // daf:parseUnparsePolicy="parseOnly", which suppresses the check for this
+  // dfdlx:parseUnparsePolicy="parseOnly", which suppresses the check for this
   // constraint.
 
   @Test def test_AM000() { runnerAM.runOneTest("AM000") }
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/lookAhead/lookAhead.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/lookAhead/lookAhead.tdml
index 44efff5..ab86e81 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/lookAhead/lookAhead.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/lookAhead/lookAhead.tdml
@@ -19,8 +19,8 @@
 <tdml:testSuite xmlns:ex="http://example.com" xmlns="http://example.com"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   >
 
   <tdml:defineSchema name="lookAhead-Embedded.dfdl.xsd">
@@ -28,18 +28,18 @@
     <xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
     <dfdl:format ref="ex:GeneralFormat"
       lengthUnits="bits"
-      daf:emptyElementParsePolicy="treatAsEmpty"
+      dfdlx:emptyElementParsePolicy="treatAsEmpty"
       />
 
    <xs:element name="lookAhead_01">
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:int" name="byte1" dfdl:inputValueCalc="{ daf:lookAhead(0,8) }" />
-         <xs:element type="xs:int" name="byte2" dfdl:inputValueCalc="{ daf:lookAhead(8,8) }" />
-         <xs:element type="xs:int" name="bit7" dfdl:inputValueCalc="{ daf:lookAhead(6,1) }" />
-         <xs:element type="xs:int" name="bit9" dfdl:inputValueCalc="{ daf:lookAhead(8,1) }" />
-         <xs:element type="xs:int" name="bit16" dfdl:inputValueCalc="{ daf:lookAhead(15,1) }" />
-         <xs:element type="xs:int" name="bits4to15" dfdl:inputValueCalc="{ daf:lookAhead(3,12) }" />
+         <xs:element type="xs:int" name="byte1" dfdl:inputValueCalc="{ dfdlx:lookAhead(0,8) }" />
+         <xs:element type="xs:int" name="byte2" dfdl:inputValueCalc="{ dfdlx:lookAhead(8,8) }" />
+         <xs:element type="xs:int" name="bit7" dfdl:inputValueCalc="{ dfdlx:lookAhead(6,1) }" />
+         <xs:element type="xs:int" name="bit9" dfdl:inputValueCalc="{ dfdlx:lookAhead(8,1) }" />
+         <xs:element type="xs:int" name="bit16" dfdl:inputValueCalc="{ dfdlx:lookAhead(15,1) }" />
+         <xs:element type="xs:int" name="bits4to15" dfdl:inputValueCalc="{ dfdlx:lookAhead(3,12) }" />
          <xs:element type="xs:hexBinary" name="data" dfdl:length="16" dfdl:lengthKind="explicit" />
        </xs:sequence>
      </xs:complexType>
@@ -48,7 +48,7 @@
    <xs:element name="lookAhead_03" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:int" name="bit512" dfdl:inputValueCalc="{ daf:lookAhead(511, 1) }" />
+         <xs:element type="xs:int" name="bit512" dfdl:inputValueCalc="{ dfdlx:lookAhead(511, 1) }" />
          <xs:element type="xs:hexBinary" name="data8Bytes" dfdl:length="64" minOccurs="8" maxOccurs="8" dfdl:lengthKind="explicit" />
          <xs:element type="xs:hexBinary" name="data1Byte" dfdl:length="8" dfdl:lengthKind="explicit" />
        </xs:sequence>
@@ -58,7 +58,7 @@
    <xs:element name="lookAhead_04" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:integer" name="bits0to62" dfdl:inputValueCalc="{ daf:lookAhead(0, 63) }" />
+         <xs:element type="xs:integer" name="bits0to62" dfdl:inputValueCalc="{ dfdlx:lookAhead(0, 63) }" />
          <xs:element type="xs:hexBinary" name="data" dfdl:length="64" dfdl:lengthKind="explicit" />
        </xs:sequence>
      </xs:complexType>
@@ -67,7 +67,7 @@
    <xs:element name="lookAhead_05" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:integer" name="bits0to63" dfdl:inputValueCalc="{ daf:lookAhead(0, 64) }" />
+         <xs:element type="xs:integer" name="bits0to63" dfdl:inputValueCalc="{ dfdlx:lookAhead(0, 64) }" />
          <xs:element type="xs:hexBinary" name="data" dfdl:length="64" dfdl:lengthKind="explicit" />
        </xs:sequence>
      </xs:complexType>
@@ -76,7 +76,7 @@
    <xs:element name="lookAhead_06" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:integer" name="bits0to64" dfdl:inputValueCalc="{ daf:lookAhead(0, 65) }" />
+         <xs:element type="xs:integer" name="bits0to64" dfdl:inputValueCalc="{ dfdlx:lookAhead(0, 65) }" />
          <xs:element type="xs:hexBinary" name="data" dfdl:length="72" dfdl:lengthKind="explicit" />
        </xs:sequence>
      </xs:complexType>
@@ -85,7 +85,7 @@
    <xs:element name="lookAhead_tooFar_01" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:int" name="byte65" dfdl:inputValueCalc="{ daf:lookAhead(512, 8) }" />
+         <xs:element type="xs:int" name="byte65" dfdl:inputValueCalc="{ dfdlx:lookAhead(512, 8) }" />
          <xs:element type="xs:hexBinary" name="data8Bytes" dfdl:length="64" minOccurs="8" maxOccurs="8" dfdl:lengthKind="explicit" />
          <xs:element type="xs:hexBinary" name="data1Byte" dfdl:length="8" dfdl:lengthKind="explicit" />
        </xs:sequence>
@@ -95,7 +95,7 @@
    <xs:element name="lookAhead_tooFar_02" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:int" name="bit513" dfdl:inputValueCalc="{ daf:lookAhead(512, 1) }" />
+         <xs:element type="xs:int" name="bit513" dfdl:inputValueCalc="{ dfdlx:lookAhead(512, 1) }" />
          <xs:element type="xs:hexBinary" name="data8Bytes" dfdl:length="64" minOccurs="8" maxOccurs="8" dfdl:lengthKind="explicit" />
          <xs:element type="xs:hexBinary" name="data1Byte" dfdl:length="8" dfdl:lengthKind="explicit" />
        </xs:sequence>
@@ -105,7 +105,7 @@
    <xs:element name="lookAhead_tooFar_03" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:int" name="bit9" dfdl:inputValueCalc=" { daf:lookAhead(8, 1) }" />
+         <xs:element type="xs:int" name="bit9" dfdl:inputValueCalc=" { dfdlx:lookAhead(8, 1) }" />
          <xs:element type="xs:hexBinary" name="data" dfdl:length="8" dfdl:lengthKind="explicit" />
        </xs:sequence>
      </xs:complexType>
@@ -114,7 +114,7 @@
    <xs:element name="lookAhead_negativeOffset_01" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:int" name="illegal" dfdl:inputValueCalc=" { daf:lookAhead(-1, 8) }" />
+         <xs:element type="xs:int" name="illegal" dfdl:inputValueCalc=" { dfdlx:lookAhead(-1, 8) }" />
          <xs:element type="xs:hexBinary" name="data" dfdl:length="8" dfdl:lengthKind="explicit" />
        </xs:sequence>
      </xs:complexType>
@@ -123,7 +123,7 @@
    <xs:element name="lookAhead_negativeBitsize_01" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:int" name="illegal" dfdl:inputValueCalc=" { daf:lookAhead(0, -1) }" />
+         <xs:element type="xs:int" name="illegal" dfdl:inputValueCalc=" { dfdlx:lookAhead(0, -1) }" />
          <xs:element type="xs:hexBinary" name="data" dfdl:length="8" dfdl:lengthKind="explicit" />
        </xs:sequence>
      </xs:complexType>
@@ -132,7 +132,7 @@
    <xs:element name="lookAhead_zeroBitsize_01" >
      <xs:complexType>
        <xs:sequence>
-         <xs:element type="xs:int" name="zero" dfdl:inputValueCalc=" { daf:lookAhead(0, 0) }" />
+         <xs:element type="xs:int" name="zero" dfdl:inputValueCalc=" { dfdlx:lookAhead(0, 0) }" />
          <xs:element type="xs:hexBinary" name="data" dfdl:length="8" dfdl:lengthKind="explicit" />
        </xs:sequence>
      </xs:complexType>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalc.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalc.tdml
index 6e21fb8..c217c77 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalc.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalc.tdml
@@ -19,6 +19,7 @@
 <tdml:testSuite xmlns:ex="http://example.com" xmlns="http://example.com"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
   >
 
@@ -52,24 +53,24 @@
       <xs:restriction base="xs:unsignedInt"/>
     </xs:simpleType>
 
-    <xs:simpleType name="keysetValue_01" dfdl:repType="tns:uint8">
+    <xs:simpleType name="keysetValue_01" dfdlx:repType="tns:uint8">
       <xs:restriction base="xs:string">
-        <xs:enumeration value="zero" dfdl:repValues="0" />
-        <xs:enumeration value="one" dfdl:repValues="1" />
-        <xs:enumeration value="2-100" dfdl:repValueRanges="2 100" />
-        <xs:enumeration value="101 103-110 115 120-125" dfdl:repValues="101 115" dfdl:repValueRanges="103 110 120 125"/>
+        <xs:enumeration value="zero" dfdlx:repValues="0" />
+        <xs:enumeration value="one" dfdlx:repValues="1" />
+        <xs:enumeration value="2-100" dfdlx:repValueRanges="2 100" />
+        <xs:enumeration value="101 103-110 115 120-125" dfdlx:repValues="101 115" dfdlx:repValueRanges="103 110 120 125"/>
       </xs:restriction>
     </xs:simpleType>
 
-    <xs:simpleType name="_1_to_string" dfdl:repType="tns:uint8">
+    <xs:simpleType name="_1_to_string" dfdlx:repType="tns:uint8">
       <xs:restriction base="xs:string">
-        <xs:enumeration value="one" dfdl:repValues="1"/>
+        <xs:enumeration value="one" dfdlx:repValues="1"/>
       </xs:restriction>
     </xs:simpleType>
 
-    <xs:simpleType name="_2through100_to_string" dfdl:repType="tns:uint8">
+    <xs:simpleType name="_2through100_to_string" dfdlx:repType="tns:uint8">
       <xs:restriction base="xs:string">
-        <xs:enumeration value="2-100" dfdl:repValueRanges="2 100"/>
+        <xs:enumeration value="2-100" dfdlx:repValueRanges="2 100"/>
       </xs:restriction>
     </xs:simpleType>
 
@@ -77,7 +78,7 @@
       <xs:union memberTypes="tns:_1_to_string tns:_2through100_to_string tns:unreachableRepTypeuint8" />
     </xs:simpleType>
 
-    <xs:simpleType name="_2through100_to_int" dfdl:repType="tns:uint8">
+    <xs:simpleType name="_2through100_to_int" dfdlx:repType="tns:uint8">
       <xs:restriction base="xs:unsignedInt">
         <xs:minInclusive value="2"/>
         <xs:maxInclusive value="100"/>
@@ -85,26 +86,26 @@
     </xs:simpleType>
 
     <!-- Used to verify that a branch of a choice statement is not considered. -->
-    <xs:simpleType name="unreachableRepTypeuint8" dfdl:repType="tns:uint8">
+    <xs:simpleType name="unreachableRepTypeuint8" dfdlx:repType="tns:uint8">
       <xs:annotation>
         <xs:appinfo source="http://www.ogf.org/dfdl/">
           <dfdl:discriminator>{ fn:true() }</dfdl:discriminator>
         </xs:appinfo>
       </xs:annotation>
       <xs:restriction base="xs:string">
-        <xs:enumeration value="unreachable" dfdl:repValues="-1"/>
+        <xs:enumeration value="unreachable" dfdlx:repValues="-1"/>
       </xs:restriction>
     </xs:simpleType>
 
-    <xs:simpleType name="complexSet_to_string" dfdl:repType="tns:uint8">
+    <xs:simpleType name="complexSet_to_string" dfdlx:repType="tns:uint8">
       <xs:restriction base="xs:string">
-        <xs:enumeration value="101 103-110 115 120-125" dfdl:repValues="101 115" dfdl:repValueRanges="103 110 120 125"/>
+        <xs:enumeration value="101 103-110 115 120-125" dfdlx:repValues="101 115" dfdlx:repValueRanges="103 110 120 125"/>
       </xs:restriction>
     </xs:simpleType>
 
     <xs:element name="choice_dispatchKeyByType_01">
       <xs:complexType>
-        <xs:choice dfdl:choiceBranchKeyKind="explicit" dfdl:choiceDispatchKeyKind="byType" >
+        <xs:choice dfdlx:choiceBranchKeyKind="explicit" dfdlx:choiceDispatchKeyKind="byType" >
           <xs:element name="unreachable" type="tns:unreachableRepTypeuint8" dfdl:choiceBranchKey="-1"/>
           <xs:element name="one" type="tns:_1_to_string" dfdl:choiceBranchKey="1"/>
           <xs:element name="two" type="tns:_2through100_to_string" dfdl:choiceBranchKey="2"/>
@@ -119,7 +120,7 @@
         <xs:sequence>
           <xs:element name="byte" dfdl:occursCountKind="parsed" maxOccurs="unbounded">
             <xs:complexType>
-              <xs:choice dfdl:choiceBranchKeyKind="explicit" dfdl:choiceDispatchKeyKind="byType" >
+              <xs:choice dfdlx:choiceBranchKeyKind="explicit" dfdlx:choiceDispatchKeyKind="byType" >
                 <xs:element name="unreachable" type="tns:unreachableRepTypeuint8" dfdl:choiceBranchKey="255"/>
                 <xs:element name="one" type="tns:_1_to_string" dfdl:choiceBranchKey="1"/>
                 <xs:element name="two" type="tns:_2through100_to_string" dfdl:choiceBranchKey="2"/>
@@ -145,7 +146,7 @@
                     </xs:appinfo>
                   </xs:annotation>
                 </xs:element>
-                <xs:choice dfdl:choiceBranchKeyKind="byType" dfdl:choiceDispatchKeyKind="explicit" dfdl:choiceDispatchKey="{ ex:dispatchKey }">
+                <xs:choice dfdlx:choiceBranchKeyKind="byType" dfdlx:choiceDispatchKeyKind="explicit" dfdl:choiceDispatchKey="{ ex:dispatchKey }">
                   <xs:element name="unreachable" type="tns:unreachableRepTypeuint8"/>
                   <xs:element name="many" type="tns:_2through100_to_int"/>
                   <xs:element name="one" type="tns:_1_to_string"/>
@@ -170,7 +171,7 @@
         <xs:sequence>
           <xs:element name="byte" maxOccurs="unbounded" dfdl:occursCountKind="parsed">
             <xs:complexType>
-              <xs:choice dfdl:choiceBranchKeyKind="byType" dfdl:choiceDispatchKeyKind="byType">
+              <xs:choice dfdlx:choiceBranchKeyKind="byType" dfdlx:choiceDispatchKeyKind="byType">
                 <xs:element name="a" type="tns:_1through100_union_to_string"/>
                 <xs:element name="b" type="tns:complexSet_to_string"/>
               </xs:choice>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalcExpression.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalcExpression.tdml
index 342dd75..c3239bd 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalcExpression.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalcExpression.tdml
@@ -19,8 +19,8 @@
 <tdml:testSuite xmlns:ex="http://example.com" xmlns="http://example.com"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   >
 
   <tdml:defineSchema name="inputTypeCalc-Embedded.dfdl.xsd">
@@ -36,26 +36,26 @@
   </xs:simpleType>
 
 
-  <xs:element name="inputTypeCalc_expression_01" daf:parseUnparsePolicy="parseOnly">
-    <xs:simpleType dfdl:inputTypeCalc="{ 7 }" dfdl:repType="tns:uint8">
+  <xs:element name="inputTypeCalc_expression_01" dfdlx:parseUnparsePolicy="parseOnly">
+    <xs:simpleType dfdlx:inputTypeCalc="{ 7 }" dfdlx:repType="tns:uint8">
       <xs:restriction base="xs:int"/>
     </xs:simpleType>
   </xs:element>
 
-  <xs:element name="outputTypeCalc_expression_01" daf:parseUnparsePolicy="unparseOnly">
-    <xs:simpleType dfdl:outputTypeCalc="{ 7 }" dfdl:repType="tns:uint8">
+  <xs:element name="outputTypeCalc_expression_01" dfdlx:parseUnparsePolicy="unparseOnly">
+    <xs:simpleType dfdlx:outputTypeCalc="{ 7 }" dfdlx:repType="tns:uint8">
       <xs:restriction base="xs:int"/>
     </xs:simpleType>
   </xs:element>
 
   <xs:element name="inputTypeCalc_expression_02">
-    <xs:simpleType dfdl:inputTypeCalc="{ 7 }" dfdl:repType="tns:uint8">
+    <xs:simpleType dfdlx:inputTypeCalc="{ 7 }" dfdlx:repType="tns:uint8">
       <xs:restriction base="xs:int"/>
     </xs:simpleType>
   </xs:element>
 
   <xs:element name="outputTypeCalc_expression_02">
-    <xs:simpleType dfdl:outputTypeCalc="{ 7 }" dfdl:repType="tns:uint8">
+    <xs:simpleType dfdlx:outputTypeCalc="{ 7 }" dfdlx:repType="tns:uint8">
       <xs:restriction base="xs:int"/>
     </xs:simpleType>
   </xs:element>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalc_malformed.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalc_malformed.tdml
index 1914130..824e076 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalc_malformed.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/inputTypeCalc_malformed.tdml
@@ -42,12 +42,12 @@
       <xs:restriction base="xs:unsignedInt"/>
     </xs:simpleType>
 
-    <xs:simpleType name="keysetValue_01" dfdl:repType="tns:keysetValue_01_repType">
+    <xs:simpleType name="keysetValue_01" dfdlx:repType="tns:keysetValue_01_repType">
       <xs:restriction base="xs:string">
-        <xs:enumeration value="zero" dfdl:repValues="0" />
-        <xs:enumeration value="one" dfdl:repValues="1" />
-        <xs:enumeration value="2-100" dfdl:repValueRanges="2 100" />
-        <xs:enumeration value="101 103-110 115 120-125" dfdl:repValues="101 115" dfdl:repValueRanges="103 110 120 125"/>
+        <xs:enumeration value="zero" dfdlx:repValues="0" />
+        <xs:enumeration value="one" dfdlx:repValues="1" />
+        <xs:enumeration value="2-100" dfdlx:repValueRanges="2 100" />
+        <xs:enumeration value="101 103-110 115 120-125" dfdlx:repValues="101 115" dfdlx:repValueRanges="103 110 120 125"/>
       </xs:restriction>
     </xs:simpleType>
 
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/typeCalcFunctionErrors.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/typeCalcFunctionErrors.tdml
index 0f78911..729877d 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/typeCalcFunctionErrors.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/typeCalcFunctionErrors.tdml
@@ -19,8 +19,8 @@
 <tdml:testSuite xmlns:ex="http://example.com" xmlns="http://example.com"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   >
 
   <tdml:defineSchema name="inputTypeCalcFunctionErrors-Embedded.dfdl.xsd">
@@ -30,14 +30,14 @@
       lengthUnits="bytes" encoding="UTF-8" separator="" initiator=""
       terminator="" occursCountKind="parsed" ignoreCase="no"
       textNumberRep="standard" representation="binary" 
-      daf:parseUnparsePolicy="parseOnly"
+      dfdlx:parseUnparsePolicy="parseOnly"
       />
 
-    <xs:simpleType name="intToString" dfdl:repType="xs:int" dfdl:inputTypeCalc="{ 'a' }" dfdl:outputTypeCalc="{ 0 }">
+    <xs:simpleType name="intToString" dfdlx:repType="xs:int" dfdlx:inputTypeCalc="{ 'a' }" dfdlx:outputTypeCalc="{ 0 }">
       <xs:restriction base="xs:string"/>
     </xs:simpleType>
 
-    <xs:simpleType name="stringToInt" dfdl:repType="xs:string" dfdl:inputTypeCalc="{ 0 }" dfdl:outputTypeCalc="{ 'a' }">
+    <xs:simpleType name="stringToInt" dfdlx:repType="xs:string" dfdlx:inputTypeCalc="{ 0 }" dfdlx:outputTypeCalc="{ 'a' }">
       <xs:restriction base="xs:int"/>
     </xs:simpleType>
 
@@ -50,82 +50,82 @@
     </xs:simpleType>
 
     <!--
-    <xs:element name="typeCalcDispatch_typeError_baseline" type="xs:string" dfdl:inputValueCalc="{ dfdl:inputTypeCalcString('tns:intToString', 0) }" />
+    <xs:element name="typeCalcDispatch_typeError_baseline" type="xs:string" dfdl:inputValueCalc="{ dfdlx:inputTypeCalcString('tns:intToString', 0) }" />
     -->
-    <xs:element name="typeCalcDispatch_typeError_01" type="xs:int" dfdl:inputValueCalc="{ dfdl:inputTypeCalcString('tns:intToString', 0) }" />
-    <xs:element name="typeCalcDispatch_typeError_02" type="xs:int" dfdl:inputValueCalc="{ dfdl:inputTypeCalcInt('tns:intToString', 0) }" />
-    <xs:element name="typeCalcDispatch_typeError_03" type="xs:int" dfdl:inputValueCalc="{ dfdl:inputTypeCalcInt('tns:stringToInt', 0) }" />
+    <xs:element name="typeCalcDispatch_typeError_01" type="xs:int" dfdl:inputValueCalc="{ dfdlx:inputTypeCalcString('tns:intToString', 0) }" />
+    <xs:element name="typeCalcDispatch_typeError_02" type="xs:int" dfdl:inputValueCalc="{ dfdlx:inputTypeCalcInt('tns:intToString', 0) }" />
+    <xs:element name="typeCalcDispatch_typeError_03" type="xs:int" dfdl:inputValueCalc="{ dfdlx:inputTypeCalcInt('tns:stringToInt', 0) }" />
     <!--
-    <xs:element name="typeCalcDispatch_typeError_baseline" type="xs:string" dfdl:outputValueCalc="{ dfdl:outputTypeCalcString('tns:stringToInt', 0) }" />
+    <xs:element name="typeCalcDispatch_typeError_baseline" type="xs:string" dfdl:outputValueCalc="{ dfdlx:outputTypeCalcString('tns:stringToInt', 0) }" />
     -->
-    <xs:element name="typeCalcDispatch_typeError_04" type="xs:int" dfdl:inputValueCalc="{ dfdl:outputTypeCalcString('tns:stringToInt', 0) }" />
-    <xs:element name="typeCalcDispatch_typeError_05" type="xs:int" dfdl:inputValueCalc="{ dfdl:outputTypeCalcInt('tns:stringToInt', 0) }" />
-    <xs:element name="typeCalcDispatch_typeError_06" type="xs:int" dfdl:inputValueCalc="{ dfdl:outputTypeCalcInt('tns:intToString', 0) }" />
+    <xs:element name="typeCalcDispatch_typeError_04" type="xs:int" dfdl:inputValueCalc="{ dfdlx:outputTypeCalcString('tns:stringToInt', 0) }" />
+    <xs:element name="typeCalcDispatch_typeError_05" type="xs:int" dfdl:inputValueCalc="{ dfdlx:outputTypeCalcInt('tns:stringToInt', 0) }" />
+    <xs:element name="typeCalcDispatch_typeError_06" type="xs:int" dfdl:inputValueCalc="{ dfdlx:outputTypeCalcInt('tns:intToString', 0) }" />
 
-    <xs:element name="typeCalcDispatch_typeError_07" daf:parseUnparsePolicy="unparseOnly">
+    <xs:element name="typeCalcDispatch_typeError_07" dfdlx:parseUnparsePolicy="unparseOnly">
       <xs:complexType>
         <xs:sequence>
-          <xs:element name="raw" dfdl:outputValueCalc="{ dfdl:outputTypeCalcNextSiblingInt() }" type="tns:uint8" daf:parseUnparsePolicy="unparseOnly"/>
-          <xs:element name="stringToInt" type="stringToInt" daf:parseUnparsePolicy="unparseOnly" dfdl:inputValueCalc="{ 0 }"/>
+          <xs:element name="raw" dfdl:outputValueCalc="{ dfdlx:outputTypeCalcNextSiblingInt() }" type="tns:uint8" dfdlx:parseUnparsePolicy="unparseOnly"/>
+          <xs:element name="stringToInt" type="stringToInt" dfdlx:parseUnparsePolicy="unparseOnly" dfdl:inputValueCalc="{ 0 }"/>
         </xs:sequence>
       </xs:complexType>
     </xs:element>
 
-    <xs:element name="typeCalcDispatch_typeError_08" daf:parseUnparsePolicy="unparseOnly">
+    <xs:element name="typeCalcDispatch_typeError_08" dfdlx:parseUnparsePolicy="unparseOnly">
       <xs:complexType>
         <xs:sequence>
-          <xs:element name="raw" dfdl:outputValueCalc="{ dfdl:outputTypeCalcNextSiblingString() }" type="tns:uint8" daf:parseUnparsePolicy="unparseOnly"/>
-          <xs:element name="stringToInt" type="stringToInt" daf:parseUnparsePolicy="unparseOnly" dfdl:inputValueCalc="{ 0 }"/>
+          <xs:element name="raw" dfdl:outputValueCalc="{ dfdlx:outputTypeCalcNextSiblingString() }" type="tns:uint8" dfdlx:parseUnparsePolicy="unparseOnly"/>
+          <xs:element name="stringToInt" type="stringToInt" dfdlx:parseUnparsePolicy="unparseOnly" dfdl:inputValueCalc="{ 0 }"/>
         </xs:sequence>
       </xs:complexType>
     </xs:element>
 
     <xs:element name="typeCalcDispatch_typeError_09">
-      <xs:simpleType dfdl:repType="tns:string8" dfdl:inputTypeCalc="{ dfdl:repTypeValueString() }">
+      <xs:simpleType dfdlx:repType="tns:string8" dfdlx:inputTypeCalc="{ dfdlx:repTypeValueString() }">
         <xs:restriction base="xs:int"/>
       </xs:simpleType>
     </xs:element>
 
     <xs:element name="typeCalcDispatch_typeError_10">
-      <xs:simpleType dfdl:repType="tns:string8" dfdl:inputTypeCalc="{ dfdl:repTypeValueInt() }">
+      <xs:simpleType dfdlx:repType="tns:string8" dfdlx:inputTypeCalc="{ dfdlx:repTypeValueInt() }">
         <xs:restriction base="xs:int"/>
       </xs:simpleType>
     </xs:element>
 
-    <xs:element name="typeCalcDispatch_typeError_11" daf:parseUnparsePolicy="unparseOnly" >
-      <xs:simpleType dfdl:repType="tns:uint8" dfdl:outputTypeCalc="{ dfdl:logicalTypeValueInt() }">
+    <xs:element name="typeCalcDispatch_typeError_11" dfdlx:parseUnparsePolicy="unparseOnly" >
+      <xs:simpleType dfdlx:repType="tns:uint8" dfdlx:outputTypeCalc="{ dfdlx:logicalTypeValueInt() }">
         <xs:restriction base="xs:string"/>
       </xs:simpleType>
     </xs:element>
 
-    <xs:element name="typeCalcDispatch_typeError_12" daf:parseUnparsePolicy="unparseOnly">
-      <xs:simpleType dfdl:repType="tns:uint8" dfdl:outputTypeCalc="{ dfdl:logicalTypeValueString() }">
+    <xs:element name="typeCalcDispatch_typeError_12" dfdlx:parseUnparsePolicy="unparseOnly">
+      <xs:simpleType dfdlx:repType="tns:uint8" dfdlx:outputTypeCalc="{ dfdlx:logicalTypeValueString() }">
         <xs:restriction base="xs:string"/>
       </xs:simpleType>
     </xs:element>
 
-    <xs:element name="repTypeValue_bad_context_01" type="xs:string" dfdl:inputValueCalc="{ dfdl:repTypeValueString() }"/>
-    <xs:element name="repTypeValue_bad_context_02" type="xs:int" dfdl:inputValueCalc="{ dfdl:repTypeValueInt() }"/>
-    <xs:element name="logicalTypeValue_bad_context_01" type="xs:string" dfdl:inputValueCalc="{ dfdl:logicalTypeValueString() }"/>
-    <xs:element name="logicalTypeValue_bad_context_02" type="xs:int" dfdl:inputValueCalc="{ dfdl:logicalTypeValueInt() }"/>
+    <xs:element name="repTypeValue_bad_context_01" type="xs:string" dfdl:inputValueCalc="{ dfdlx:repTypeValueString() }"/>
+    <xs:element name="repTypeValue_bad_context_02" type="xs:int" dfdl:inputValueCalc="{ dfdlx:repTypeValueInt() }"/>
+    <xs:element name="logicalTypeValue_bad_context_01" type="xs:string" dfdl:inputValueCalc="{ dfdlx:logicalTypeValueString() }"/>
+    <xs:element name="logicalTypeValue_bad_context_02" type="xs:int" dfdl:inputValueCalc="{ dfdlx:logicalTypeValueInt() }"/>
 
     <xs:element name="nonexistant_reptype_01">
-      <xs:simpleType dfdl:repType="tns:nonExistant" dfdl:inputTypeCalc="{ 0 }">
+      <xs:simpleType dfdlx:repType="tns:nonExistant" dfdlx:inputTypeCalc="{ 0 }">
         <xs:restriction base="xs:int"/>
       </xs:simpleType>
     </xs:element>
 
-    <xs:simpleType name="inputConversionOnly" dfdl:repType="tns:uint8" dfdl:inputTypeCalc="{ 1 }">
+    <xs:simpleType name="inputConversionOnly" dfdlx:repType="tns:uint8" dfdlx:inputTypeCalc="{ 1 }">
       <xs:restriction base="xs:int"/>
     </xs:simpleType>
 
-    <xs:element name="nonexistantOutputTypeCalc_01" type="xs:int" dfdl:inputValueCalc="{dfdl:outputTypeCalcInt('tns:inputConversionOnly', 7)}"/>
+    <xs:element name="nonexistantOutputTypeCalc_01" type="xs:int" dfdl:inputValueCalc="{dfdlx:outputTypeCalcInt('tns:inputConversionOnly', 7)}"/>
 
-    <xs:simpleType name="outputConversionOnly" dfdl:repType="tns:uint8" dfdl:outputTypeCalc="{ 1 }">
+    <xs:simpleType name="outputConversionOnly" dfdlx:repType="tns:uint8" dfdlx:outputTypeCalc="{ 1 }">
       <xs:restriction base="xs:int"/>
     </xs:simpleType>
 
-    <xs:element name="nonexistantInputTypeCalc_01" type="xs:int" dfdl:inputValueCalc="{dfdl:inputTypeCalcInt('tns:outputConversionOnly', 7)}"/>
+    <xs:element name="nonexistantInputTypeCalc_01" type="xs:int" dfdl:inputValueCalc="{dfdlx:inputTypeCalcInt('tns:outputConversionOnly', 7)}"/>
 
   </tdml:defineSchema>
 
@@ -302,7 +302,7 @@
     </tdml:document>
     <tdml:errors>
       <tdml:error>Schema Definition Error</tdml:error>
-      <tdml:error>dfdl:repTypeValueString() may only be called from within a dfdl:inputTypeCalc annotation</tdml:error>
+      <tdml:error>dfdlx:repTypeValueString() may only be called from within a dfdlx:inputTypeCalc annotation</tdml:error>
     </tdml:errors>
   </tdml:parserTestCase>
 
@@ -313,7 +313,7 @@
     </tdml:document>
     <tdml:errors>
       <tdml:error>Schema Definition Error</tdml:error>
-      <tdml:error>dfdl:repTypeValueInt() may only be called from within a dfdl:inputTypeCalc annotation</tdml:error>
+      <tdml:error>dfdlx:repTypeValueInt() may only be called from within a dfdlx:inputTypeCalc annotation</tdml:error>
     </tdml:errors>
   </tdml:parserTestCase>
 
@@ -324,7 +324,7 @@
     </tdml:document>
     <tdml:errors>
       <tdml:error>Schema Definition Error</tdml:error>
-      <tdml:error>dfdl:logicalTypeValueString() may only be called from within a dfdl:outputTypeCalc annotation</tdml:error>
+      <tdml:error>dfdlx:logicalTypeValueString() may only be called from within a dfdlx:outputTypeCalc annotation</tdml:error>
     </tdml:errors>
   </tdml:parserTestCase>
 
@@ -335,7 +335,7 @@
     </tdml:document>
     <tdml:errors>
       <tdml:error>Schema Definition Error</tdml:error>
-      <tdml:error>dfdl:logicalTypeValueInt() may only be called from within a dfdl:outputTypeCalc annotation</tdml:error>
+      <tdml:error>dfdlx:logicalTypeValueInt() may only be called from within a dfdlx:outputTypeCalc annotation</tdml:error>
     </tdml:errors>
   </tdml:parserTestCase>
 
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/typeCalcFunctions.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/typeCalcFunctions.tdml
index f63c028..8b74ffe 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/typeCalcFunctions.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/extensions/type_calc/typeCalcFunctions.tdml
@@ -19,9 +19,8 @@
 <tdml:testSuite xmlns:ex="http://example.com" xmlns="http://example.com"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
-  xmlns:fn="http://www.w3.org/2005/xpath-functions"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
-  >
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
+  xmlns:fn="http://www.w3.org/2005/xpath-functions">
 
   <tdml:defineSchema name="inputTypeCalc-Embedded.dfdl.xsd">
 
@@ -35,65 +34,66 @@
     <xs:restriction base="xs:unsignedInt"/>
   </xs:simpleType>
 
-  <xs:simpleType name="AbstractIntTo1" dfdl:repType="xs:int" dfdl:inputTypeCalc="{ 1 }">
+  <xs:simpleType name="AbstractIntTo1" dfdlx:repType="xs:int" dfdlx:inputTypeCalc="{ 1 }">
     <xs:restriction base="xs:int"/>
   </xs:simpleType>
 
-  <xs:simpleType name="AbstractIntToXYZ" dfdl:repType="xs:int" dfdl:inputTypeCalc="{ 'xyz' }">
+  <xs:simpleType name="AbstractIntToXYZ" dfdlx:repType="xs:int" dfdlx:inputTypeCalc="{ 'xyz' }">
     <xs:restriction base="xs:string"/>
   </xs:simpleType>
 
-  <xs:simpleType name="Abstract1FromInt" dfdl:repType="xs:int" dfdl:outputTypeCalc="{ 1 }">
+  <xs:simpleType name="Abstract1FromInt" dfdlx:repType="xs:int" dfdlx:outputTypeCalc="{ 1 }">
     <xs:restriction base="xs:int"/>
   </xs:simpleType>
 
-  <xs:simpleType name="AbstractXYZFromInt" dfdl:repType="xs:string" dfdl:outputTypeCalc="{ 'xyz' }">
+  <xs:simpleType name="AbstractXYZFromInt" dfdlx:repType="xs:string" dfdlx:outputTypeCalc="{ 'xyz' }">
     <xs:restriction base="xs:int"/>
   </xs:simpleType>
 
-  <xs:simpleType name="AbstractIntToMulitiply2" dfdl:repType="xs:int" dfdl:inputTypeCalc="{ dfdl:repTypeValueInt() * 2 }">
+  <xs:simpleType name="AbstractIntToMulitiply2" dfdlx:repType="xs:int" dfdlx:inputTypeCalc="{ dfdlx:repTypeValueInt() * 2 }">
     <xs:restriction base="xs:int"/>
   </xs:simpleType>
 
-  <xs:simpleType name="AbstractStringToPrefixedString" dfdl:repType="xs:string" dfdl:inputTypeCalc="{ fn:concat('x',dfdl:repTypeValueString()) }">
+  <xs:simpleType name="AbstractStringToPrefixedString" dfdlx:repType="xs:string" dfdlx:inputTypeCalc="{ fn:concat('x',dfdlx:repTypeValueString()) }">
     <xs:restriction base="xs:string"/>
   </xs:simpleType>
 
-  <xs:simpleType name="AbstractMulitiply2FromInt" dfdl:repType="xs:int" dfdl:outputTypeCalc="{ dfdl:logicalTypeValueInt() * 2 }">
+  <xs:simpleType name="AbstractMulitiply2FromInt" dfdlx:repType="xs:int" dfdlx:outputTypeCalc="{ dfdlx:logicalTypeValueInt() * 2 }">
     <xs:restriction base="xs:int"/>
   </xs:simpleType>
 
-  <xs:simpleType name="AbstractPrefixedStringFromInt" dfdl:repType="xs:string" dfdl:outputTypeCalc="{ fn:concat('x',xs:string(dfdl:logicalTypeValueInt())) }">
+  <xs:simpleType name="AbstractPrefixedStringFromInt" dfdlx:repType="xs:string" dfdlx:outputTypeCalc="{ fn:concat('x',xs:string(dfdlx:logicalTypeValueInt())) }">
     <xs:restriction base="xs:int"/>
   </xs:simpleType>
 
-  <xs:simpleType name="AbstractIntToStringByKeyset" dfdl:repType="xs:int">
+  <xs:simpleType name="AbstractIntToStringByKeyset" dfdlx:repType="xs:int">
     <xs:restriction base="xs:string">
-      <xs:enumeration value="one" dfdl:repValues="1"/>
-      <xs:enumeration value="zero" dfdl:repValues="0"/>
+      <xs:enumeration value="one" dfdlx:repValues="1"/>
+      <xs:enumeration value="zero" dfdlx:repValues="0"/>
     </xs:restriction>
   </xs:simpleType>
 
-  <xs:element name="inputTypeCalcInt_01" type="xs:int" dfdl:inputValueCalc="{ dfdl:inputTypeCalcInt('tns:AbstractIntTo1', 7) }" />
-  <xs:element name="inputTypeCalcString_01" type="xs:string" dfdl:inputValueCalc="{ dfdl:inputTypeCalcString('tns:AbstractIntToXYZ', 7) }" />
+  <xs:element name="inputTypeCalcInt_01" type="xs:int" dfdl:inputValueCalc="{ dfdlx:inputTypeCalcInt('tns:AbstractIntTo1', 7) }" />
+  <xs:element name="inputTypeCalcString_01" type="xs:string" dfdl:inputValueCalc="{ dfdlx:inputTypeCalcString('tns:AbstractIntToXYZ', 7) }" />
+
   <xs:element name="outputTypeCalcInt_01">
     <xs:complexType>
       <xs:sequence>
-        <xs:element name="inner" type="tns:uint8" dfdl:outputValueCalc="{ dfdl:outputTypeCalcInt('tns:Abstract1FromInt', 7) }" />
+        <xs:element name="inner" type="tns:uint8" dfdl:outputValueCalc="{ dfdlx:outputTypeCalcInt('tns:Abstract1FromInt', 7) }" />
       </xs:sequence>
     </xs:complexType>
   </xs:element>
-  <xs:element name="outputTypeCalcString_01" type="xs:string" dfdl:inputValueCalc="{ dfdl:outputTypeCalcString('tns:AbstractXYZFromInt', 7) }" />
-  <xs:element name="repTypeValueInt_01" type="xs:int" dfdl:inputValueCalc="{ dfdl:inputTypeCalcInt('tns:AbstractIntToMulitiply2', 7) }" />
-  <xs:element name="repTypeValueString_01" type="xs:string" dfdl:inputValueCalc="{ dfdl:inputTypeCalcString('tns:AbstractStringToPrefixedString', 'y') }" />
-  <xs:element name="logicalTypeValueInt_01" daf:parseUnparsePolicy="parseOnly" type="xs:int" 
-    dfdl:inputValueCalc="{ dfdl:outputTypeCalcInt('tns:AbstractMulitiply2FromInt', 7) }" />
-  <xs:element name="logicalTypeValueString_01" daf:parseUnparsePolicy="parseOnly" type="xs:string" 
-    dfdl:inputValueCalc="{ dfdl:outputTypeCalcString('tns:AbstractPrefixedStringFromInt', 7) }" />
+  <xs:element name="outputTypeCalcString_01" type="xs:string" dfdl:inputValueCalc="{ dfdlx:outputTypeCalcString('tns:AbstractXYZFromInt', 7) }" />
+  <xs:element name="repTypeValueInt_01" type="xs:int" dfdl:inputValueCalc="{ dfdlx:inputTypeCalcInt('tns:AbstractIntToMulitiply2', 7) }" />
+  <xs:element name="repTypeValueString_01" type="xs:string" dfdl:inputValueCalc="{ dfdlx:inputTypeCalcString('tns:AbstractStringToPrefixedString', 'y') }" />
+  <xs:element name="logicalTypeValueInt_01" dfdlx:parseUnparsePolicy="parseOnly" type="xs:int" 
+    dfdl:inputValueCalc="{ dfdlx:outputTypeCalcInt('tns:AbstractMulitiply2FromInt', 7) }" />
+  <xs:element name="logicalTypeValueString_01" dfdlx:parseUnparsePolicy="parseOnly" type="xs:string" 
+    dfdl:inputValueCalc="{ dfdlx:outputTypeCalcString('tns:AbstractPrefixedStringFromInt', 7) }" />
   <xs:element name="outputTypeCalcNextSiblingInt_01">
     <xs:complexType>
       <xs:sequence>
-        <xs:element name="raw" type="tns:uint8" dfdl:outputValueCalc="{ dfdl:outputTypeCalcNextSiblingInt() }"/>
+        <xs:element name="raw" type="tns:uint8" dfdl:outputValueCalc="{ dfdlx:outputTypeCalcNextSiblingInt() }"/>
         <xs:element name="logic" type="tns:AbstractMulitiply2FromInt" dfdl:length="1" dfdl:inputValueCalc="{ 0 }"/>
       </xs:sequence>
     </xs:complexType>
@@ -101,13 +101,13 @@
   <xs:element name="outputTypeCalcNextSiblingString_01">
     <xs:complexType>
       <xs:sequence>
-        <xs:element name="raw" type="xs:string" dfdl:outputValueCalc="{ dfdl:outputTypeCalcNextSiblingString() }"/>
+        <xs:element name="raw" type="xs:string" dfdl:outputValueCalc="{ dfdlx:outputTypeCalcNextSiblingString() }"/>
         <xs:element name="logic" type="tns:AbstractXYZFromInt" dfdl:length="1" dfdl:inputValueCalc="{ 0 }"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
 
-  <xs:element name="abstractIntToStringByKeyset_01" type="xs:string" dfdl:inputValueCalc="{dfdl:inputTypeCalcString('AbstractIntToStringByKeyset',0)}"/>
+  <xs:element name="abstractIntToStringByKeyset_01" type="xs:string" dfdl:inputValueCalc="{dfdlx:inputTypeCalcString('AbstractIntToStringByKeyset',0)}"/>
 
   </tdml:defineSchema>
 
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/layers/ais.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/layers/ais.tdml
index 21bd837..5b15f67 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/layers/ais.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/layers/ais.tdml
@@ -17,6 +17,7 @@
 -->
 <tdml:testSuite xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:ex="http://example.com" xmlns:tns="http://example.com" defaultRoundTrip="true">
 
 <!-- 
@@ -51,7 +52,7 @@ Example Multifragment sentence:
       <dfdl:format ref="ex:GeneralFormat" lengthKind="delimited" />
     </dfdl:defineFormat>
     <dfdl:defineFormat name="aisEncoding">
-      <dfdl:format ref="ex:GeneralFormat" layerTransform="aisPayloadArmor" layerLengthUnits="bytes" />
+      <dfdl:format ref="ex:GeneralFormat" dfdlx:layerTransform="aisPayloadArmor" dfdlx:layerLengthUnits="bytes" />
     </dfdl:defineFormat>
     <dfdl:defineFormat name="aisBinary">
       <dfdl:format ref="ex:GeneralFormat" lengthKind="explicit" lengthUnits="bits" alignment="1" alignmentUnits="bits"
@@ -137,4 +138,4 @@ Example Multifragment sentence:
     </tdml:infoset>
   </tdml:parserTestCase>
 
-</tdml:testSuite>
\ No newline at end of file
+</tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/layers/layers.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/layers/layers.tdml
index 1253475..bd9cf75 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/layers/layers.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/layers/layers.tdml
@@ -18,6 +18,8 @@
 
 <tdml:testSuite xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:ex="http://example.com" xmlns:tns="http://example.com" defaultRoundTrip="true">
 
   <tdml:defineSchema name="s1" elementFormDefault="unqualified">
@@ -26,7 +28,7 @@
       <dfdl:format ref="ex:GeneralFormat" />
     </dfdl:defineFormat>
     <dfdl:defineFormat name="compressed">
-      <dfdl:format ref="ex:general" layerTransform="gzip" layerLengthKind="explicit" layerLengthUnits="bytes" />
+      <dfdl:format ref="ex:general" dfdlx:layerTransform="gzip" dfdlx:layerLengthKind="explicit" dfdlx:layerLengthUnits="bytes" />
     </dfdl:defineFormat>
     <dfdl:format ref="ex:general" />
 
@@ -44,7 +46,7 @@
 
           <xs:element name="compressedPayload">
             <xs:complexType>
-              <xs:sequence dfdl:ref="tns:compressed" dfdl:layerLength="{ ../compressedPayloadLength }">
+              <xs:sequence dfdl:ref="tns:compressed" dfdlx:layerLength="{ ../compressedPayloadLength }">
                 <xs:group ref="tns:compressedGroupContents" />
               </xs:sequence>
             </xs:complexType>
@@ -97,12 +99,12 @@
       <dfdl:format ref="ex:GeneralFormat" lengthKind="delimited" outputNewLine="%CR;%LF;" />
     </dfdl:defineFormat>
     <dfdl:defineFormat name="base64">
-      <dfdl:format ref="ex:general" layerTransform="base64_MIME" layerLengthKind="boundaryMark" layerLengthUnits="bytes"
-        layerEncoding="iso-8859-1" />
+      <dfdl:format ref="ex:general" dfdlx:layerTransform="base64_MIME" dfdlx:layerLengthKind="boundaryMark" dfdlx:layerLengthUnits="bytes"
+        dfdlx:layerEncoding="iso-8859-1" />
     </dfdl:defineFormat>
     <dfdl:defineFormat name="folded">
-      <dfdl:format ref="ex:general" layerTransform="lineFolded_IMF" layerLengthKind="implicit" layerLengthUnits="bytes"
-        layerEncoding="iso-8859-1" />
+      <dfdl:format ref="ex:general" dfdlx:layerTransform="lineFolded_IMF" dfdlx:layerLengthKind="implicit" dfdlx:layerLengthUnits="bytes"
+        dfdlx:layerEncoding="iso-8859-1" />
     </dfdl:defineFormat>
     <dfdl:format ref="ex:general" />
 
@@ -124,7 +126,7 @@
                       <xs:choice dfdl:choiceDispatchKey="{ ../contentTransferEncoding }">
                         <xs:sequence dfdl:choiceBranchKey="base64">
                           <xs:sequence dfdl:ref="tns:base64"
-                            dfdl:layerBoundaryMark="{ 
+                            dfdlx:layerBoundaryMark="{ 
                               fn:concat(dfdl:decodeDFDLEntities('%CR;%LF;'),'--', ../../marker, '--')
                              }">
                             <xs:element name="value" type="xs:string" />
@@ -177,8 +179,47 @@
       <dfdl:format ref="ex:GeneralFormat" lengthKind="delimited" outputNewLine="%CR;%LF;" />
     </dfdl:defineFormat>
     <dfdl:defineFormat name="base64">
-      <dfdl:format ref="ex:general" layerTransform="base64_MIME" layerLengthKind="boundaryMark" layerLengthUnits="bytes"
-        layerEncoding="iso-8859-1" />
+      <dfdl:format ref="ex:general" dfdlx:layerTransform="base64_MIME" dfdlx:layerLengthKind="boundaryMark" dfdlx:layerLengthUnits="bytes"
+        dfdlx:layerEncoding="iso-8859-1" />
+    </dfdl:defineFormat>
+    <dfdl:defineFormat name="folded">
+      <dfdl:format ref="ex:general" dfdlx:layerTransform="lineFolded_IMF" dfdlx:layerLengthKind="implicit" dfdlx:layerLengthUnits="bytes"
+        dfdlx:layerEncoding="iso-8859-1" />
+    </dfdl:defineFormat>
+    <dfdl:format ref="ex:general" />
+
+
+    <xs:element name="root" dfdl:lengthKind="implicit">
+      <xs:complexType>
+        <xs:sequence dfdl:ref="folded" xmlns:foo="urn:Foo" foo:bar="shouldBeIgnored">
+          <xs:sequence>
+            <xs:element name="marker" dfdl:initiator="boundary=" type="xs:string" dfdl:terminator="%CR;%LF;" />
+            <xs:element name="nothing" type="xs:string" dfdl:initiator="xxx" />
+          </xs:sequence>
+        </xs:sequence>
+      </xs:complexType>
+    </xs:element>
+
+  </tdml:defineSchema>
+
+  <tdml:parserTestCase name="layers3" root="root" model="s3" roundTrip="true">
+    <tdml:document>
+      <tdml:documentPart type="text" replaceDFDLEntities="true"><![CDATA[boundary=frontier%CR;%LF;xxx]]></tdml:documentPart>
+    </tdml:document>
+    <tdml:infoset>
+      <tdml:dfdlInfoset>
+        <ex:root>
+          <marker>frontier</marker>
+          <nothing />
+        </ex:root>
+      </tdml:dfdlInfoset>
+    </tdml:infoset>
+  </tdml:parserTestCase>
+
+  <tdml:defineSchema name="s3_deprecated" elementFormDefault="unqualified">
+    <xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
+    <dfdl:defineFormat name="general">
+      <dfdl:format ref="ex:GeneralFormat" lengthKind="delimited" outputNewLine="%CR;%LF;" />
     </dfdl:defineFormat>
     <dfdl:defineFormat name="folded">
       <dfdl:format ref="ex:general" layerTransform="lineFolded_IMF" layerLengthKind="implicit" layerLengthUnits="bytes"
@@ -200,10 +241,16 @@
 
   </tdml:defineSchema>
 
-  <tdml:parserTestCase name="layers3" root="root" model="s3" roundTrip="true">
+  <tdml:parserTestCase name="layers3_deprecated" root="root" model="s3_deprecated" roundTrip="true">
     <tdml:document>
       <tdml:documentPart type="text" replaceDFDLEntities="true"><![CDATA[boundary=frontier%CR;%LF;xxx]]></tdml:documentPart>
     </tdml:document>
+    <tdml:warnings>
+      <tdml:warning>layerTransform is deprecated</tdml:warning>
+      <tdml:warning>layerLengthUnits is deprecated</tdml:warning>
+      <tdml:warning>layerEncoding is deprecated</tdml:warning>
+      <tdml:warning>layerLengthKind is deprecated</tdml:warning>
+    </tdml:warnings>
     <tdml:infoset>
       <tdml:dfdlInfoset>
         <ex:root>
@@ -220,8 +267,8 @@
       <dfdl:format ref="ex:GeneralFormat" lengthKind="delimited" outputNewLine="%CR;%LF;" />
     </dfdl:defineFormat>
     <dfdl:defineFormat name="folded">
-      <dfdl:format ref="ex:general" layerTransform="lineFolded_IMF" layerLengthKind="implicit" layerLengthUnits="bytes"
-        layerEncoding="iso-8859-1" />
+      <dfdl:format ref="ex:general" dfdlx:layerTransform="lineFolded_IMF" dfdlx:layerLengthKind="implicit" dfdlx:layerLengthUnits="bytes"
+        dfdlx:layerEncoding="iso-8859-1" />
     </dfdl:defineFormat>
     <dfdl:format ref="ex:general" />
 
@@ -250,16 +297,16 @@
   <tdml:defineSchema name="s4" elementFormDefault="unqualified">
     <xs:include schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
     <dfdl:defineFormat name="general">
-      <dfdl:format ref="ex:GeneralFormat" lengthKind="delimited" outputNewLine="%CR;%LF;" layerEncoding="iso-8859-1"
-        layerLengthUnits='bytes' />
+      <dfdl:format ref="ex:GeneralFormat" lengthKind="delimited" outputNewLine="%CR;%LF;" dfdlx:layerEncoding="iso-8859-1"
+        dfdlx:layerLengthUnits='bytes' />
     </dfdl:defineFormat>
 
     <dfdl:defineFormat name="base64">
-      <dfdl:format ref="ex:general" layerTransform="base64_MIME" layerLengthKind="boundaryMark" />
+      <dfdl:format ref="ex:general" dfdlx:layerTransform="base64_MIME" dfdlx:layerLengthKind="boundaryMark" />
     </dfdl:defineFormat>
 
     <dfdl:defineFormat name="gzip">
-      <dfdl:format ref="ex:general" layerTransform="gzip" layerLengthKind="explicit" />
+      <dfdl:format ref="ex:general" dfdlx:layerTransform="gzip" dfdlx:layerLengthKind="explicit" />
     </dfdl:defineFormat>
 
     <dfdl:format ref="ex:general" />
@@ -272,7 +319,7 @@
       <!--
            first we have the base64 details
        -->
-      <xs:sequence dfdl:ref="ex:base64" dfdl:layerBoundaryMark="--END--">
+      <xs:sequence dfdl:ref="ex:base64" dfdlx:layerBoundaryMark="--END--">
         <xs:sequence>
           <!--
               now the gzip details, including the 4-byte gzLength element that stores how long
@@ -290,7 +337,7 @@
               <!--
                  now the gzipped layered sequence itself
                -->
-              <xs:sequence dfdl:ref="ex:gzip" dfdl:layerLength="{ ../gzLength }">
+              <xs:sequence dfdl:ref="ex:gzip" dfdlx:layerLength="{ ../gzLength }">
                 <!--
                   finally, inside that, we have the original fileTypeGroup group reference.
                   -->
@@ -373,4 +420,4 @@ We gzip that, and then we must prepend that with the length (as a binary 4-byte
     </tdml:infoset>
   </tdml:unparserTestCase>
   
-</tdml:testSuite>
\ No newline at end of file
+</tdml:testSuite>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section00/general/parseUnparsePolicy.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section00/general/parseUnparsePolicy.tdml
index cbf2317..330395c 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section00/general/parseUnparsePolicy.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section00/general/parseUnparsePolicy.tdml
@@ -19,7 +19,7 @@
 <tdml:testSuite suiteName="General" description="Section 00 - General tests"
   xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
-  xmlns:ex="http://example.com" xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext">
+  xmlns:ex="http://example.com" xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions">
 
   <!-- This file is for general purpose tests that are not related 
        to any specific requirements. /!-->
@@ -30,12 +30,12 @@
         lengthUnits="bytes" encoding="US-ASCII" initiator="" terminator=""
         separator="" ignoreCase="no" textNumberRep="standard" leadingSkip="0" />
 
-    <xs:element name="parseOnly" type="xs:int" daf:parseUnparsePolicy="parseOnly" />
-    <xs:element name="unparseOnly" type="xs:int" daf:parseUnparsePolicy="unparseOnly" />
-    <xs:element name="both" type="xs:int" daf:parseUnparsePolicy="both" />
+    <xs:element name="parseOnly" type="xs:int" dfdlx:parseUnparsePolicy="parseOnly" />
+    <xs:element name="unparseOnly" type="xs:int" dfdlx:parseUnparsePolicy="unparseOnly" />
+    <xs:element name="both" type="xs:int" dfdlx:parseUnparsePolicy="both" />
 
 
-    <xs:element name="pb" daf:parseUnparsePolicy="parseOnly">
+    <xs:element name="pb" dfdlx:parseUnparsePolicy="parseOnly">
       <xs:complexType>
         <xs:sequence>
           <xs:element ref="both" />
@@ -43,7 +43,7 @@
       </xs:complexType>
     </xs:element>
 
-    <xs:element name="pp" daf:parseUnparsePolicy="parseOnly">
+    <xs:element name="pp" dfdlx:parseUnparsePolicy="parseOnly">
       <xs:complexType>
         <xs:sequence>
           <xs:element ref="parseOnly" />
@@ -51,7 +51,7 @@
       </xs:complexType>
     </xs:element>
 
-    <xs:element name="pu" daf:parseUnparsePolicy="parseOnly">
+    <xs:element name="pu" dfdlx:parseUnparsePolicy="parseOnly">
       <xs:complexType>
         <xs:sequence>
           <xs:element ref="unparseOnly" />
@@ -60,7 +60,7 @@
     </xs:element>
 
 
-    <xs:element name="ub" daf:parseUnparsePolicy="unparseOnly">
+    <xs:element name="ub" dfdlx:parseUnparsePolicy="unparseOnly">
       <xs:complexType>
         <xs:sequence>
           <xs:element ref="both" />
@@ -68,7 +68,7 @@
       </xs:complexType>
     </xs:element>
 
-    <xs:element name="up" daf:parseUnparsePolicy="unparseOnly">
+    <xs:element name="up" dfdlx:parseUnparsePolicy="unparseOnly">
       <xs:complexType>
         <xs:sequence>
           <xs:element ref="parseOnly" />
@@ -76,7 +76,7 @@
       </xs:complexType>
     </xs:element>
 
-    <xs:element name="uu" daf:parseUnparsePolicy="unparseOnly">
+    <xs:element name="uu" dfdlx:parseUnparsePolicy="unparseOnly">
       <xs:complexType>
         <xs:sequence>
           <xs:element ref="unparseOnly" />
@@ -85,7 +85,7 @@
     </xs:element>
 
 
-    <xs:element name="bb" daf:parseUnparsePolicy="both">
+    <xs:element name="bb" dfdlx:parseUnparsePolicy="both">
       <xs:complexType>
         <xs:sequence>
           <xs:element ref="both" />
@@ -93,7 +93,7 @@
       </xs:complexType>
     </xs:element>
 
-    <xs:element name="bp" daf:parseUnparsePolicy="both">
+    <xs:element name="bp" dfdlx:parseUnparsePolicy="both">
       <xs:complexType>
         <xs:sequence>
           <xs:element ref="parseOnly" />
@@ -101,7 +101,7 @@
       </xs:complexType>
     </xs:element>
 
-    <xs:element name="bu" daf:parseUnparsePolicy="both">
+    <xs:element name="bu" dfdlx:parseUnparsePolicy="both">
       <xs:complexType>
         <xs:sequence>
           <xs:element ref="unparseOnly" />
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section07/escapeScheme/escapeScenarios.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section07/escapeScheme/escapeScenarios.tdml
index c6bfced..58df6b6 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section07/escapeScheme/escapeScenarios.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section07/escapeScheme/escapeScenarios.tdml
@@ -19,7 +19,7 @@
 <testSuite suiteName="escapeScheme" xmlns="http://www.ibm.com/xmlns/dfdl/testData"
   xmlns:tns="http://example.com"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" 
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   defaultRoundTrip="true">
@@ -344,7 +344,7 @@
         <xs:sequence dfdl:separator="$;" dfdl:separatorPosition="infix">
           <xs:element name="x" type="xs:string" dfdl:escapeSchemeRef="tns:scenario2" />
           <xs:element name="y" type="xs:string" minOccurs="0" dfdl:escapeSchemeRef="tns:scenario2"
-            daf:emptyElementParsePolicy="treatAsEmpty" />
+            dfdlx:emptyElementParsePolicy="treatAsEmpty" />
         </xs:sequence>
       </xs:complexType>
     </xs:element>
@@ -588,7 +588,7 @@
       <dfdlInfoset>
         <tns:e_infix_keepEmpty>
           <x>foo$/</x>
-          <!-- daf:emptyElementParsePolicy 'treatAsEmpty' only creates empty
+          <!-- dfdlx:emptyElementParsePolicy 'treatAsEmpty' only creates empty
                string elements if there is some non-zero-length syntax
           <y></y>
           -->
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section07/property_syntax/PropertySyntax.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section07/property_syntax/PropertySyntax.tdml
index b34dab7..05c1af8 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section07/property_syntax/PropertySyntax.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section07/property_syntax/PropertySyntax.tdml
@@ -20,7 +20,8 @@
   description="Section 12 - lengthKind=delimited" xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
   xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ct="http://w3.ibm.com/xmlns/dfdl/ctInfoset"
-  xmlns:ex="http://example.com" xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext">
+  xmlns:ex="http://example.com" xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
+  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext">
 
   <tdml:defineSchema name="PropertySyntax">
 
@@ -116,13 +117,25 @@
       <xs:annotation>
         <xs:appinfo source="http://www.ogf.org/dfdl/">
           <dfdl:element>
+             <dfdl:property name="dfdlx:parseUnparsePolicy">unparseOnly</dfdl:property>
+           </dfdl:element>
+        </xs:appinfo>
+      </xs:annotation>
+    </xs:element>
+
+    <xs:element name="root5_deprecated" type="xs:int">
+      <xs:annotation>
+        <xs:appinfo source="http://www.ogf.org/dfdl/">
+          <dfdl:element>
              <daf:property name="parseUnparsePolicy">unparseOnly</daf:property>
            </dfdl:element>
         </xs:appinfo>
       </xs:annotation>
     </xs:element>
 
-    <xs:element name="root6" type="xs:int" daf:parseUnparsePolicy="unparseOnly" />
+    <xs:element name="root6" type="xs:int" dfdlx:parseUnparsePolicy="unparseOnly" />
+
+    <xs:element name="root6_deprecated" type="xs:int" daf:parseUnparsePolicy="unparseOnly" />
 
 </tdml:defineSchema>
     
@@ -169,27 +182,60 @@
 
   </tdml:parserTestCase>
 
-  <!-- This tests that parseUnparsePolicy works via daf:property option.
+  <!-- This tests that parseUnparsePolicy works via dfdl:property option.
        This is a parserTestCase, but the shcema is built only for unparsing -->
-  <tdml:parserTestCase name="dafProperty1" root="root5"
-    model="PropertySyntax" description="daf:property setting of parseUnparsePolicy"
+  <tdml:parserTestCase name="dfdlxProperty1" root="root5"
+    model="PropertySyntax" description="dfdl:property setting of parseUnparsePolicy"
     roundTrip="true">
     <tdml:document><![CDATA[1]]></tdml:document>
     <tdml:errors>
       <tdml:error>Schema Definition Error</tdml:error>
-      <tdml:error>daf:parseUnparsePolicy</tdml:error>
+      <tdml:error>dfdlx:parseUnparsePolicy</tdml:error>
+    </tdml:errors>
+  </tdml:parserTestCase>
+
+  <!-- This tests that parseUnparsePolicy works via the deprecatd daf:property option.
+       This is a parserTestCase, but the shcema is built only for unparsing -->
+  <tdml:parserTestCase name="dafProperty1" root="root5_deprecated"
+    model="PropertySyntax" description="dfdl:property setting of parseUnparsePolicy"
+    roundTrip="true">
+    <tdml:document><![CDATA[1]]></tdml:document>
+    <tdml:warnings>
+      <tdml:warning>daf:parseUnparsePolicy</tdml:warning>
+      <tdml:warning>deprecated</tdml:warning>
+      <tdml:warning>dfdlx:parseUnparsePolicy</tdml:warning>
+    </tdml:warnings>
+    <tdml:errors>
+      <tdml:error>Schema Definition Error</tdml:error>
+      <tdml:error>dfdlx:parseUnparsePolicy</tdml:error>
+    </tdml:errors>
+  </tdml:parserTestCase>
+
+  <!-- This tests that parseUnparsePolicy works via dfdlx:parseUnpaasePolicy option.
+       This is a parserTestCase, but the shcema is built only for unparsing -->
+  <tdml:parserTestCase name="dfdlxProperty2" root="root6"
+    model="PropertySyntax" description="dfdlx:parseUnparsePolicy setting"
+    roundTrip="true">
+    <tdml:document><![CDATA[118]]></tdml:document>
+    <tdml:errors>
+      <tdml:error>Schema Definition Error</tdml:error>
+      <tdml:error>dfdlx:parseUnparsePolicy</tdml:error>
     </tdml:errors>
   </tdml:parserTestCase>
 
-  <!-- This tests that parseUnparsePolicy works via daf:property option.
+  <!-- This tests that parseUnparsePolicy works via the deprecated daf:parseUnparsePolicy option.
        This is a parserTestCase, but the shcema is built only for unparsing -->
-  <tdml:parserTestCase name="dafProperty2" root="root6"
+  <tdml:parserTestCase name="dafProperty2" root="root6_deprecated"
     model="PropertySyntax" description="daf:parseUnparsePolicy setting"
     roundTrip="true">
     <tdml:document><![CDATA[118]]></tdml:document>
+    <tdml:warnings>
+      <tdml:warning>deprecated</tdml:warning>
+      <tdml:warning>dfdlx:parseUnparsePolicy</tdml:warning>
+    </tdml:warnings>
     <tdml:errors>
       <tdml:error>Schema Definition Error</tdml:error>
-      <tdml:error>daf:parseUnparsePolicy</tdml:error>
+      <tdml:error>dfdlx:parseUnparsePolicy</tdml:error>
     </tdml:errors>
   </tdml:parserTestCase>
   
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section08/property_scoping/PropertyScoping_01.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section08/property_scoping/PropertyScoping_01.tdml
index 5efbc75..0bfab1a 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section08/property_scoping/PropertyScoping_01.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section08/property_scoping/PropertyScoping_01.tdml
@@ -716,7 +716,7 @@
     <tdml:document>-1009</tdml:document>
     <tdml:errors>
       <tdml:error>Schema Definition Error</tdml:error>
-      <tdml:error>Value 'ref' is not facet-valid with respect to</tdml:error>
+      <tdml:error>'ref' is not a valid value</tdml:error>
     </tdml:errors>
   </tdml:parserTestCase>
 
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section12/lengthKind/PrefixedTests.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section12/lengthKind/PrefixedTests.tdml
index 10a6f97..182cad8 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section12/lengthKind/PrefixedTests.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section12/lengthKind/PrefixedTests.tdml
@@ -23,7 +23,7 @@
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
   xmlns:ex="http://example.com"
   xmlns:tns="http://example.com"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   defaultRoundTrip="onePass">
 
   <tdml:defineSchema name="lengthKindPrefixed-text.dfdl.xsd">
@@ -99,14 +99,14 @@
     <xs:element name="pl_text_string_txt_bits"  type="xs:string" dfdl:ref="prefixedTxtBits"
       nillable="true" />
     <xs:element name="pl_text_string_txt_chars" type="xs:string" dfdl:ref="prefixedTxtChar"
-      nillable="true" daf:parseUnparsePolicy="parseOnly" />
+      nillable="true" dfdlx:parseUnparsePolicy="parseOnly" />
 
     <xs:element name="pl_text_string_txt_bytes_includes" type="xs:string" dfdl:ref="prefixedTxtByte"
       nillable="true" dfdl:prefixIncludesPrefixLength="yes" />
     <xs:element name="pl_text_string_txt_bits_includes" type="xs:string" dfdl:ref="prefixedTxtBits"
       nillable="true" dfdl:prefixIncludesPrefixLength="yes" />
     <xs:element name="pl_text_string_txt_chars_includes" type="xs:string" dfdl:ref="prefixedTxtChar"
-      nillable="true"  dfdl:prefixIncludesPrefixLength="yes" daf:parseUnparsePolicy="parseOnly" />
+      nillable="true"  dfdl:prefixIncludesPrefixLength="yes" dfdlx:parseUnparsePolicy="parseOnly" />
 
     <xs:element name="pl_text_string_bin_bytes" type="xs:string" dfdl:ref="prefixedBinByte"
       nillable="true" />
@@ -116,7 +116,7 @@
     <xs:element name="pl_text_int_txt_bytes" type="xs:int" dfdl:ref="prefixedTxtByte" />
     <xs:element name="pl_text_int_txt_bits" type="xs:int" dfdl:ref="prefixedTxtBits" />
     <xs:element name="pl_text_int_txt_chars" type="xs:int" dfdl:ref="prefixedTxtChar"
-      daf:parseUnparsePolicy="parseOnly" />
+      dfdlx:parseUnparsePolicy="parseOnly" />
 
     <xs:element name="pl_text_int_bin_bytes" type="xs:int" dfdl:ref="prefixedBinByte" />
     <xs:element name="pl_text_int_bin_bits" type="xs:int" dfdl:ref="prefixedBinBits" />
@@ -134,10 +134,10 @@
 
     <xs:element name="pl_text_int_txt_chars_plbits" type="xs:int" dfdl:ref="prefixedTxtChar"
       dfdl:prefixLengthType="ex:twentyFourBitsTextInt"
-      daf:parseUnparsePolicy="parseOnly" />
+      dfdlx:parseUnparsePolicy="parseOnly" />
     <xs:element name="pl_text_int_txt_chars_plbytes" type="xs:int" dfdl:ref="prefixedTxtChar"
       dfdl:prefixLengthType="ex:threeCharTextInt"
-      daf:parseUnparsePolicy="parseOnly" />
+      dfdlx:parseUnparsePolicy="parseOnly" />
 
     <xs:element name="pl_text_int_bin_bytes_plbits" type="xs:int" dfdl:ref="prefixedBinByte"
       dfdl:prefixLengthType="ex:twentyFourBitsBinInt" />
@@ -153,7 +153,7 @@
     <xs:element name="pl_text_int_txt_bits_includes" type="xs:int" dfdl:ref="prefixedTxtBits"
       dfdl:prefixIncludesPrefixLength="yes" />
     <xs:element name="pl_text_int_txt_chars_includes" type="xs:int" dfdl:ref="prefixedTxtChar"
-      dfdl:prefixIncludesPrefixLength="yes" daf:parseUnparsePolicy="parseOnly" />
+      dfdl:prefixIncludesPrefixLength="yes" dfdlx:parseUnparsePolicy="parseOnly" />
 
     <xs:element name="pl_text_int_bin_bytes_includes" type="xs:int" dfdl:ref="prefixedBinByte"
       dfdl:prefixIncludesPrefixLength="yes" />
@@ -163,7 +163,7 @@
     <xs:element name="pl_text_dec_txt_bytes" type="xs:decimal" dfdl:ref="prefixedTxtByte" />
     <xs:element name="pl_text_dec_txt_bits" type="xs:decimal" dfdl:ref="prefixedTxtBits" />
     <xs:element name="pl_text_dec_txt_chars" type="xs:decimal" dfdl:ref="prefixedTxtChar"
-      daf:parseUnparsePolicy="parseOnly" />
+      dfdlx:parseUnparsePolicy="parseOnly" />
 
     <xs:element name="pl_text_dec_bin_bytes" type="xs:decimal" dfdl:ref="prefixedBinByte" />
     <xs:element name="pl_text_dec_bin_bits" type="xs:decimal" dfdl:ref="prefixedBinBits" />
@@ -171,7 +171,7 @@
     <xs:element name="pl_text_date_txt_bytes" type="xs:dateTime" dfdl:ref="prefixedTxtByte" />
     <xs:element name="pl_text_date_txt_bits" type="xs:dateTime" dfdl:ref="prefixedTxtBits" />
     <xs:element name="pl_text_date_txt_chars" type="xs:dateTime" dfdl:ref="prefixedTxtChar"
-      daf:parseUnparsePolicy="parseOnly" />
+      dfdlx:parseUnparsePolicy="parseOnly" />
 
     <xs:element name="pl_text_date_bin_bytes" type="xs:dateTime" dfdl:ref="prefixedBinByte" />
     <xs:element name="pl_text_date_bin_bits" type="xs:dateTime" dfdl:ref="prefixedBinBits" />
@@ -179,7 +179,7 @@
     <xs:element name="pl_text_bool_txt_bytes" type="xs:boolean" dfdl:ref="prefixedTxtByte" />
     <xs:element name="pl_text_bool_txt_bits" type="xs:boolean" dfdl:ref="prefixedTxtBits" />
     <xs:element name="pl_text_bool_txt_chars" type="xs:boolean" dfdl:ref="prefixedTxtChar"
-      daf:parseUnparsePolicy="parseOnly" />
+      dfdlx:parseUnparsePolicy="parseOnly" />
 
     <xs:element name="pl_text_bool_bin_bytes" type="xs:boolean" dfdl:ref="prefixedBinByte" />
     <xs:element name="pl_text_bool_bin_bits" type="xs:boolean" dfdl:ref="prefixedBinBits" />
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section23/dfdl_expressions/expressions.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section23/dfdl_expressions/expressions.tdml
index 62156c2..4a971b9 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section23/dfdl_expressions/expressions.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section23/dfdl_expressions/expressions.tdml
@@ -18,8 +18,11 @@
 
 <tdml:testSuite suiteName="expressions"
   description="lengthKind explicit and occursCountKind expression"
-  xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+  xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:xs="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:ex="http://example.com" 
   xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"  
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
@@ -3294,7 +3297,7 @@
      <xs:complexType>
      <xs:sequence>
      <xs:element name="x" type="xs:int" dfdl:inputValueCalc="{ 0 }"/>
-     <xs:element name="f" type="xs:int" dfdl:inputValueCalc="{ if (xs:boolean(daf:trace((if (xs:int(../ex:x) eq 0) then fn:true() else fn:false()), 'predicate'))) then 2 else 3 }"/>
+     <xs:element name="f" type="xs:int" dfdl:inputValueCalc="{ if (xs:boolean(dfdlx:trace((if (xs:int(../ex:x) eq 0) then fn:true() else fn:false()), 'predicate'))) then 2 else 3 }"/>
      </xs:sequence>
      </xs:complexType>
      </xs:element>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section23/dfdl_expressions/expressions2.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section23/dfdl_expressions/expressions2.tdml
index 5e4239a..ce816c4 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section23/dfdl_expressions/expressions2.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section23/dfdl_expressions/expressions2.tdml
@@ -21,10 +21,10 @@
  description="misc expression language tests"
  xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
  xmlns:xs="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:ex="http://example.com"
- xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
  xmlns:fn="http://www.w3.org/2005/xpath-functions"
  defaultRoundTrip="true">
 
@@ -239,14 +239,14 @@
             </xs:complexType>
           </xs:element>
           <xs:element name="f" type="xs:string"
-            dfdl:inputValueCalc="{ if (fn:exists(daf:trace(../aComplexElement, 'We can trace a complex element'))) then 'exists' else 'nope' }" />
+            dfdl:inputValueCalc="{ if (fn:exists(dfdlx:trace(../aComplexElement, 'We can trace a complex element'))) then 'exists' else 'nope' }" />
         </xs:sequence>
       </xs:complexType>
     </xs:element>
   </tdml:defineSchema>
 
   <tdml:parserTestCase name="traceComplex" model="traceComplex" root="e"
-    description="Test that daf:trace can take as argument a complex element.">
+    description="Test that dfdlx:trace can take as argument a complex element.">
     <tdml:document />
     <tdml:infoset>
       <tdml:dfdlInfoset>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/section23/runtime_properties/runtime-properties.tdml b/daffodil-test/src/test/resources/org/apache/daffodil/section23/runtime_properties/runtime-properties.tdml
index 6413276..ea85c0b 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/section23/runtime_properties/runtime-properties.tdml
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/section23/runtime_properties/runtime-properties.tdml
@@ -20,8 +20,8 @@
 	description="properties that can have expressions to compute their values from data"
 	xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
 	xmlns:ex="http://example.com" 
-    xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
     xmlns:fn="http://www.w3.org/2005/xpath-functions"
     defaultRoundTrip="true">
 
@@ -47,7 +47,7 @@
           if (xs:unsignedByte(../ex:bom) eq 10) then 'bigEndian' 
           else (
                  if (xs:unsignedByte(../ex:bom) eq 20) then 'littleEndian'
-                 else daf:error()
+                 else dfdlx:error()
                )
       }]]></dfdl:property>
                 </dfdl:element>
@@ -70,7 +70,7 @@
           if (xs:unsignedByte(../ex:bom) eq 10) then 'bigEndian' 
           else (
                  if (xs:unsignedByte(fn:trace(../ex:bom,'bom')) eq 20) then 'littleEndian'
-                 else daf:error()
+                 else dfdlx:error()
                )
       }]]></dfdl:property>
                 </dfdl:element>
@@ -92,7 +92,7 @@
                   <dfdl:property name="byteOrder"><![CDATA[{
           if (xs:unsignedShort(../ex:bom) eq 65279) then 'bigEndian' 
           else if (xs:unsignedShort(../ex:bom) eq 65534) then 'littleEndian'
-          else daf:error()
+          else dfdlx:error()
       }]]></dfdl:property>
                 </dfdl:element>
               </xs:appinfo>
@@ -114,7 +114,7 @@
                 <dfdl:setVariable ref="ex:bom"><![CDATA[{
           if (xs:unsignedShort(.) eq 65279) then 'bigEndian' 
           else if (xs:unsignedShort(.) eq 65534) then 'littleEndian'
-          else daf:error()
+          else dfdlx:error()
       }]]></dfdl:setVariable>
               </xs:appinfo>
             </xs:annotation>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/unparser/parseUnparseMode.dfdl.xsd b/daffodil-test/src/test/resources/org/apache/daffodil/unparser/parseUnparseMode.dfdl.xsd
index ba92eab..094759f 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/unparser/parseUnparseMode.dfdl.xsd
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/unparser/parseUnparseMode.dfdl.xsd
@@ -19,9 +19,9 @@
 <xs:schema
   targetNamespace="urn:parseUnparseMode" 
   xmlns:tns="urn:parseUnparseMode"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" 
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
   elementFormDefault="qualified">
@@ -84,7 +84,7 @@
                    However, asserts aren't evaluated when unparsing, so we only error out here 
                    when parsing.
                -->
-              <dfdl:assert>{ daf:error() }</dfdl:assert>
+              <dfdl:assert>{ dfdlx:error() }</dfdl:assert>
            </xs:appinfo></xs:annotation>
       </xs:sequence>
     </xs:group>
diff --git a/daffodil-test/src/test/resources/org/apache/daffodil/usertests/MultipartBody.dfdl.xsd b/daffodil-test/src/test/resources/org/apache/daffodil/usertests/MultipartBody.dfdl.xsd
index ce35ae9..8623054 100644
--- a/daffodil-test/src/test/resources/org/apache/daffodil/usertests/MultipartBody.dfdl.xsd
+++ b/daffodil-test/src/test/resources/org/apache/daffodil/usertests/MultipartBody.dfdl.xsd
@@ -18,7 +18,7 @@
 
 <xsd:schema 
   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/"
-  xmlns:daf="urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:ext" 
+  xmlns:dfdlx="http://www.ogf.org/dfdl/dfdl-1.0/extensions"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
  >
@@ -54,7 +54,7 @@
 				<xsd:element name="BodyPart" dfdl:lengthKind="delimited"
 					minOccurs="1" maxOccurs="unbounded" type="xsd:string"
 					dfdl:occursCountKind="implicit" 
-          daf:emptyElementParsePolicy="treatAsEmpty" />
+          dfdlx:emptyElementParsePolicy="treatAsEmpty" />
 			</xsd:sequence>
 		</xsd:complexType>
 	</xsd:element>
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/layers/TestLayers.scala b/daffodil-test/src/test/scala/org/apache/daffodil/layers/TestLayers.scala
index 29f24b9..b28e5ea 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/layers/TestLayers.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/layers/TestLayers.scala
@@ -41,6 +41,7 @@ class TestLayers {
   @Test def test_layers1() { runner.runOneTest("layers1") }
   @Test def test_layers2() { runner.runOneTest("layers2") }
   @Test def test_layers3() { runner.runOneTest("layers3") }
+  @Test def test_layers3_deprecated() { runner.runOneTest("layers3_deprecated") }
   @Test def test_layersErr1() { runner.runOneTest("layersErr1") }
   @Test def test_layers4() { runner.runOneTest("layers4") }
 
diff --git a/daffodil-test/src/test/scala/org/apache/daffodil/section07/property_syntax/TestPropertySyntax.scala b/daffodil-test/src/test/scala/org/apache/daffodil/section07/property_syntax/TestPropertySyntax.scala
index a47a637..a00dca5 100644
--- a/daffodil-test/src/test/scala/org/apache/daffodil/section07/property_syntax/TestPropertySyntax.scala
+++ b/daffodil-test/src/test/scala/org/apache/daffodil/section07/property_syntax/TestPropertySyntax.scala
@@ -47,5 +47,7 @@ class TestPropertySyntax {
 
   @Test def test_dafProperty1() { runner1.runOneTest("dafProperty1") }
   @Test def test_dafProperty2() { runner1.runOneTest("dafProperty2") }
+  @Test def test_dfdlxProperty1() { runner1.runOneTest("dfdlxProperty1") }
+  @Test def test_dfdlxProperty2() { runner1.runOneTest("dfdlxProperty2") }
 
 }