diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..43451e4c
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,34 @@
+# default
+* text=auto
+
+# structured formats
+*.css text eol=lf
+*.dtd text eol=lf
+*.ent text eol=lf
+*.html text eol=lf
+*.js text eol=lf
+*.json text eol=lf
+*.sch text eol=lf
+*.scss text eol=lf
+*.xml text eol=lf
+*.xpl text eol=lf
+*.xsd text eol=lf
+*.xsl text eol=lf
+*.xspec text eol=lf
+*.yaml text eol=lf
+*.yml text eol=lf
+
+# markdown
+*.md text eol=lf
+
+# script files
+*.sh text eol=lf
+/build/ci-cd/config/* text eol=lf
+
+# programming language files
+*.py text eol=lf
+*.ts text eol=lf
+
+# other binary files
+*.png binary
+*.jpg binary
diff --git a/oscal b/oscal
index 4f02dac6..21403b4a 160000
--- a/oscal
+++ b/oscal
@@ -1 +1 @@
-Subproject commit 4f02dac6f698efda387cc5f55bc99581eaf494b6
+Subproject commit 21403b4ad2f162ef1201e5ee70e8b93f254f51ac
diff --git a/src/main/java/gov/nist/secauto/oscal/lib/model/control/profile/AbstractProfileSelectControlById.java b/src/main/java/gov/nist/secauto/oscal/lib/model/control/profile/AbstractProfileSelectControlById.java
index 46b3489b..71feae05 100644
--- a/src/main/java/gov/nist/secauto/oscal/lib/model/control/profile/AbstractProfileSelectControlById.java
+++ b/src/main/java/gov/nist/secauto/oscal/lib/model/control/profile/AbstractProfileSelectControlById.java
@@ -27,7 +27,7 @@
package gov.nist.secauto.oscal.lib.model.control.profile;
import gov.nist.secauto.oscal.lib.model.Matching;
-import gov.nist.secauto.oscal.lib.model.ProfileSelectControlById;
+import gov.nist.secauto.oscal.lib.model.SelectControlById;
import java.util.Collection;
import java.util.LinkedList;
@@ -75,8 +75,8 @@ public Builder matching(@NonNull Pattern pattern) {
}
@NonNull
- public ProfileSelectControlById build() {
- ProfileSelectControlById retval = new ProfileSelectControlById();
+ public SelectControlById build() {
+ SelectControlById retval = new SelectControlById();
retval.setWithChildControls(withChildControls ? "yes" : "no");
retval.setWithIds(withIds);
retval.setMatching(matching.stream()
diff --git a/src/main/java/gov/nist/secauto/oscal/lib/profile/resolver/ProfileResolver.java b/src/main/java/gov/nist/secauto/oscal/lib/profile/resolver/ProfileResolver.java
index 7429b824..33766311 100644
--- a/src/main/java/gov/nist/secauto/oscal/lib/profile/resolver/ProfileResolver.java
+++ b/src/main/java/gov/nist/secauto/oscal/lib/profile/resolver/ProfileResolver.java
@@ -581,7 +581,7 @@ protected void handleAlter(IRequiredValueAssemblyNodeItem item, IIndexer indexer
remove.getByName(),
remove.getByClass(),
remove.getById(),
- remove.getByNs(),
+ remove.getByNs() == null ? null : remove.getByNs().toString(),
RemoveVisitor.TargetType.forFieldName(remove.getByItemName()))) {
throw new ProfileResolutionEvaluationException(
String.format("The remove did not match a valid target"));
diff --git a/src/main/metaschema-bindings/oscal-metaschema-bindings.xml b/src/main/metaschema-bindings/oscal-metaschema-bindings.xml
index d6670aca..566f123c 100644
--- a/src/main/metaschema-bindings/oscal-metaschema-bindings.xml
+++ b/src/main/metaschema-bindings/oscal-metaschema-bindings.xml
@@ -51,6 +51,11 @@
gov.nist.secauto.oscal.lib.model.control.AbstractPart
+
+
+ gov.nist.secauto.oscal.lib.model.control.profile.AbstractProfileSelectControlById
+
+
@@ -89,12 +94,6 @@
ProfileGroup
-
-
- ProfileSelectControlById
- gov.nist.secauto.oscal.lib.model.control.profile.AbstractProfileSelectControlById
-
-
ProfileSetParameter