diff --git a/shared/templates/yamlfile_value/oval.template b/shared/templates/yamlfile_value/oval.template
index 21d63762ba27..8bebeec7dc80 100644
--- a/shared/templates/yamlfile_value/oval.template
+++ b/shared/templates/yamlfile_value/oval.template
@@ -32,7 +32,7 @@
{{% else %}}
-
+
@@ -45,13 +45,11 @@
- {{% for val in VALUES %}}
-
-
-
+
+
+
- {{% endfor %}}
{{% endif %}}
diff --git a/shared/templates/yamlfile_value/template.py b/shared/templates/yamlfile_value/template.py
index 60168da305b3..15c99b3cec98 100644
--- a/shared/templates/yamlfile_value/template.py
+++ b/shared/templates/yamlfile_value/template.py
@@ -1,12 +1,25 @@
def preprocess(data, lang):
if data.get("xccdf_variable") and data.get("embedded_data") == "true":
- if not data.get("values"):
+ values = data.get("values", [{}])
+ if len(values) > 1:
+ raise ValueError(
+ "Only a single value can be checked when querying "
+ "for a 'xccdf_value' that returns an embedded value. "
+ "Rule ID: {}".format(data["_rule_id"]))
+ elif not values[0].get("value"):
raise ValueError(
"You should specify a capture regex in the 'value' field "
"when querying for a 'xccdf_value' that returns an embedded value. "
"Rule ID: {}".format(data["_rule_id"]))
+ if data.get("xccdf_variable") and data.get("embedded_data") != "true":
+ if data.get("values"):
+ raise ValueError(
+ "You cannot specify the 'value' field when querying "
+ "for a 'xccdf_value' that doesn't return an embedded value. "
+ "Rule ID: {}".format(data["_rule_id"]))
+
data["embedded_data"] = data.get("embedded_data", "false") == "true"
data["ocp_data"] = data.get("ocp_data", "false") == "true"
return data