diff --git a/jsonschema-core.xml b/jsonschema-core.xml
index b6b79553..8e56bc88 100644
--- a/jsonschema-core.xml
+++ b/jsonschema-core.xml
@@ -2360,16 +2360,23 @@
An array instance is valid against "contains" if at least one of
- its elements is valid against the given schema. Note that when
- collecting annotations, the subschema MUST be applied to every
- array element even after the first match has been found. This
- is to ensure that all possible annotations are collected.
+ its elements is valid against the given schema. The subschema MUST be
+ applied to every array element even after the first match has
+ been found, in order to collect annotations for use by other keywords.
+ This is to ensure that all possible annotations are collected.
+
+
+ Logically, the validation result of applying the value subschema to each
+ item in the array MUST be ORed with "false", resulting in an overall
+ validation result.
This keyword produces an annotation value which is an array of
the indexes to which this keyword validates successfully when applying
- its subschema, in ascending order. The value MAY be a boolean true if the
+ its subschema, in ascending order. The value MAY be a boolean "true" if the
subschema validated successfully when applied to every index of the instance.
+ If the instance array this keywords subschema is applicable to is empty,
+ the annotation value MUST NOT be missing.
diff --git a/jsonschema-validation.xml b/jsonschema-validation.xml
index 1f13b611..797986df 100644
--- a/jsonschema-validation.xml
+++ b/jsonschema-validation.xml
@@ -408,16 +408,18 @@
The value of this keyword MUST be a non-negative integer.
-
- An array instance is valid against "maxContains" if the number of
- elements that are valid against the schema for
- "contains" is
- less than, or equal to, the value of this keyword.
-
If "contains" is not present within the same schema object,
then this keyword has no effect.
+
+ An array instance is valid against "maxContains" if its
+ value is less than or equal to, the array length of the annotation
+ result from an adjacent
+ "contains" keyword where the
+ annotation is an array, or the length of the instance array
+ where the annotation is "true".
+
@@ -425,20 +427,22 @@
The value of this keyword MUST be a non-negative integer.
- An array instance is valid against "minContains" if the number of
- elements that are valid against the schema for
- "contains" is
- greater than, or equal to, the value of this keyword.
+ If "contains" is not present within the same schema object,
+ then this keyword has no effect.
+
+
+ An array instance is valid against "minContains" if its
+ value is greater than or equal to, the array length of the annotation
+ result from an adjacent
+ "contains" keyword where the
+ annotation is an array, or the length of the instance array
+ where the annotation is "true".
A value of 0 is allowed, but is only useful for setting a range
of occurrences from 0 to the value of "maxContains". A value of
0 with no "maxContains" causes "contains" to always pass validation.
-
- If "contains" is not present within the same schema object,
- then this keyword has no effect.
-
Omitting this keyword has the same behavior as a value of 1.