diff --git a/jsonschema-core.xml b/jsonschema-core.xml
index b7140511..9461928c 100644
--- a/jsonschema-core.xml
+++ b/jsonschema-core.xml
@@ -297,6 +297,127 @@
+
+
+ The keywords in this section are used to control which subschemas
+ apply to child instances. They are independent of any specific
+ schema vocabulary. Vocabulary specifications SHOULD define any
+ vocabulary-specific effects of applying subschemas.
+
+
+
+ The value of "$items" MUST be either an object or an array of objects.
+ Each object MUST be a valid subschema.
+
+
+ If absent, it can be considered present with an empty schema.
+
+
+ This keyword applies only to array instances.
+
+
+ If "$items" is a schema, that subschema applies to all elements
+ in the instance array.
+
+
+ If "$items" is an array of schemas, each subschema applies to
+ the child instance element at the same position, if any.
+
+
+
+
+
+ The value of "$additionalItems" MUST be valid subschema.
+
+
+ If absent, it can be considered present with an empty schema.
+
+
+ This keyword applies only to array instances.
+
+
+ If "$items" is an array of schemas, the "$additionalItems"
+ schema applies to every element of the instance array at
+ a position greater than the size of "$items".
+
+
+ Otherwise, "$additionalItems" MUST be ignored, as the "$items"
+ schema (possibly the default value of an empty schema) is
+ applied to all instance array elements.
+
+
+
+
+
+ The value of "$properties" MUST be an object. Each value of this object
+ MUST be a a valid subschema.
+
+
+ If absent, it can be considered the same as an empty object.
+
+
+ This keyword applies only to object instances.
+
+
+ For each property name that appears in both the "$properties" value
+ and the instance object, the subschema given for that property
+ name is applied to the value of that property in the instance object.
+
+
+
+
+
+ The value of "$patternProperties" MUST be an object. Each property name
+ of this object SHOULD be a valid regular expression, according to the
+ ECMA 262 regular expression dialect. Each property value of this object
+ MUST be a valid subschema.
+
+
+ If absent, it can be considered the same as an empty object.
+
+
+ This keyword applies only to object instances.
+
+
+ For each instance object property name that matches any
+ regular expressions that appear as a property name in this keyword's
+ value, the subschemas associated with each matching pattern
+ are applied to the value of that instance property.
+
+
+
+
+
+ The value of "$additionalProperties" MUST be a valid subschema.
+
+
+ If "$additionalProperties" is absent, it may be considered present with
+ an empty schema as a value.
+
+
+ This keyword applies only to object instances.
+
+
+ The keyword's subschema is applied only to the instance object
+ property values whose property names neither appear in "$properties"
+ nor match any regular expression in "$patternProperties".
+
+
+
+
+
+ Implementations MAY support "items", "additionalItems", "properties",
+ "patternProperties", and "additionalProperties" as synonyms for their
+ dollar sign-prefixed equivalents for aiding in migrating from earlier
+ drafts. An implementation that supports any of these keywords
+ SHOULD support all of them.
+
+
+ Schema authors SHOULD NOT use these forms of the keywords.
+
+
+
+
Any time a subschema is expected, a schema may instead use an object containing a "$ref" property.
diff --git a/jsonschema-validation.xml b/jsonschema-validation.xml
index fc248b1f..b50a4046 100644
--- a/jsonschema-validation.xml
+++ b/jsonschema-validation.xml
@@ -170,15 +170,14 @@
- Two of the primitive types, array and object, allow for child values. The validation of
- the primitive type is considered separately from the validation of child instances.
+ Two of the primitive types, array and object, allow for child values.
+ The JSON Schema core specification defines keywords that determine
+ which subschemas are applied to each child value.
- For arrays, primitive type validation consists of validating restrictions on length.
-
-
- For objects, primitive type validation consists of validating restrictions on the presence
- or absence of property names.
+ Validation of arrays and objects succeed if, in addition to validating
+ against any relevant validation keywords, each child instance
+ successfully validates against all subschemas that apply to it.
@@ -310,53 +309,6 @@
-
-
- The value of "items" MUST be either an object or an array of objects.
- Each object MUST be a valid JSON Schema.
-
-
- If absent, it can be considered present with an empty schema.
-
-
- This keyword controls child instance validation. Validation of the
- primitive instance type against this keyword always succeeds.
-
-
- If "items" is a schema, child validation succeeds if all elements
- in the array successfully validate against that schema.
-
-
- If "items" is an array of schemas, child validation succeeds if
- each element of the instance validates against the schema at the
- same position, if any.
-
-
-
-
-
- The value of "additionalItems" MUST be a boolean or an object.
- If it is an object, the object MUST be a valid JSON Schema.
-
-
- If absent, it can be considered present with an empty schema.
-
-
- This keyword controls child instance validation. Validation of the
- primitive instance type against this keyword always succeeds.
-
-
- If "items" is an array of schemas, child validation succeeds
- if every instance element at a position greater than the size
- of "items" validates against "additionalItems".
-
-
- Otherwise, "additionalItems" MUST be ignored, as the "items"
- schema (possibly the default value of an empty schema) is
- applied to all elements.
-
-
-
The value of this keyword MUST be an integer. This integer MUST be
@@ -448,71 +400,6 @@
-
-
- The value of "properties" MUST be an object. Each value of this object
- MUST be an object, and each object MUST be a valid JSON Schema.
-
-
- If absent, it can be considered the same as an empty object.
-
-
- This keyword controls child instance validation. Validation of the
- primitive instance type against this keyword always succeeds.
-
-
- Child validation succeeds if, for each name that appears in both
- the instance and as a name within this keyword's value, the instance
- value successfully validates against the corresponding schema.
-
-
-
-
-
- The value of "patternProperties" MUST be an object. Each property name
- of this object SHOULD be a valid regular expression, according to the
- ECMA 262 regular expression dialect. Each property value of this object
- MUST be an object, and each object MUST be a valid JSON Schema.
-
-
- If absent, it can be considered the same as an empty object.
-
-
- This keyword controls child instance validation. Validation of the
- primitive instance type against this keyword always succeeds.
-
-
- Child validation succeeds if, for each instance name that matches any
- regular expressions that appear as a property name in this keyword's value,
- the child instance for that name successfully validates against each
- schema that corresponds to a matching regular expression.
-
-
-
-
-
- The value of "additionalProperties" MUST be a boolean or an
- object. If it is an object, the object MUST be a valid JSON Schema.
-
-
- If "additionalProperties" is absent, it may be considered present with
- an empty schema as a value.
-
-
- This keyword controls child instance validation. Validation of the
- primitive instance type against this keyword always succeeds.
-
-
- Child validation with "additionalProperties" applies only to the child
- values of instance names that do not match any names in "properties",
- and do not match any regular expression in "patternProperties".
-
-
- For all such properties, child validation succeeds if the child instance
- validates against the "additionalProperties" schema.
-
-
-
This keyword specifies rules that are evaluated if the instance is an object and