|
2350 | 2350 | </t>
|
2351 | 2351 | </section>
|
2352 | 2352 |
|
2353 |
| - <section title="unevaluatedItems" anchor="unevaluatedItems"> |
2354 |
| - <t> |
2355 |
| - The value of "unevaluatedItems" MUST be a valid JSON Schema. |
2356 |
| - </t> |
2357 |
| - <t> |
2358 |
| - The behavior of this keyword depends on the annotation results of |
2359 |
| - adjacent keywords that apply to the instance location being validated. |
2360 |
| - Specifically, the annotations from "prefixItems", "items", and "contains", |
2361 |
| - which can come from those keywords when they are adjacent to the |
2362 |
| - "unevaluatedItems" keyword. Those two annotations, as well as |
2363 |
| - "unevaluatedItems", can also result from any and all adjacent |
2364 |
| - <xref target="in-place">in-place applicator</xref> keywords. |
2365 |
| - This includes but is not limited to the in-place applicators |
2366 |
| - defined in this document. |
2367 |
| - </t> |
2368 |
| - <t> |
2369 |
| - If no relevant annotations are present, the "unevaluatedItems" |
2370 |
| - subschema MUST be applied to all locations in the array. |
2371 |
| - If a boolean true value is present from any of the relevant annotations, |
2372 |
| - "unevaluatedItems" MUST be ignored. Otherwise, the subschema |
2373 |
| - MUST be applied to any index greater than the largest annotation |
2374 |
| - value for "prefixItems", which does not appear in any annotation |
2375 |
| - value for "contains". |
2376 |
| - </t> |
2377 |
| - <t> |
2378 |
| - This means that "prefixItems", "items", "contains", and all in-place |
2379 |
| - applicators MUST be evaluated before this keyword can be evaluated. |
2380 |
| - Authors of extension keywords MUST NOT define an in-place applicator |
2381 |
| - that would need to be evaluated before this keyword. |
2382 |
| - </t> |
2383 |
| - <t> |
2384 |
| - If the "unevaluatedItems" subschema is applied to any |
2385 |
| - positions within the instance array, it produces an |
2386 |
| - annotation result of boolean true, analogous to the |
2387 |
| - behavior of "items". |
2388 |
| - </t> |
2389 |
| - <t> |
2390 |
| - Omitting this keyword has the same assertion behavior as |
2391 |
| - an empty schema. |
2392 |
| - </t> |
2393 |
| - <t> |
2394 |
| - Implementations that do not collect annotations MUST raise an error |
2395 |
| - upon encountering this keyword. |
2396 |
| - </t> |
2397 |
| - </section> |
2398 |
| - |
2399 | 2353 | <section title="contains">
|
2400 | 2354 | <t>
|
2401 | 2355 | The value of this keyword MUST be a valid JSON Schema.
|
|
2503 | 2457 | </t>
|
2504 | 2458 | </section>
|
2505 | 2459 |
|
2506 |
| - <section title="unevaluatedProperties" anchor="unevaluatedProperties"> |
2507 |
| - <t> |
2508 |
| - The value of "unevaluatedProperties" MUST be a valid JSON Schema. |
2509 |
| - </t> |
2510 |
| - <t> |
2511 |
| - The behavior of this keyword depends on the annotation results of |
2512 |
| - adjacent keywords that apply to the instance location being validated. |
2513 |
| - Specifically, the annotations from "properties", "patternProperties", |
2514 |
| - and "additionalProperties", which can come from those keywords when |
2515 |
| - they are adjacent to the "unevaluatedProperties" keyword. Those |
2516 |
| - three annotations, as well as "unevaluatedProperties", can also |
2517 |
| - result from any and all adjacent |
2518 |
| - <xref target="in-place">in-place applicator</xref> keywords. |
2519 |
| - This includes but is not limited to the in-place applicators |
2520 |
| - defined in this document. |
2521 |
| - </t> |
2522 |
| - <t> |
2523 |
| - Validation with "unevaluatedProperties" applies only to the child |
2524 |
| - values of instance names that do not appear in the "properties", |
2525 |
| - "patternProperties", "additionalProperties", or |
2526 |
| - "unevaluatedProperties" annotation results that apply to the |
2527 |
| - instance location being validated. |
2528 |
| - </t> |
2529 |
| - <t> |
2530 |
| - For all such properties, validation succeeds if the child instance |
2531 |
| - validates against the "unevaluatedProperties" schema. |
2532 |
| - </t> |
2533 |
| - <t> |
2534 |
| - This means that "properties", "patternProperties", "additionalProperties", |
2535 |
| - and all in-place applicators MUST be evaluated before this keyword can |
2536 |
| - be evaluated. Authors of extension keywords MUST NOT define an in-place |
2537 |
| - applicator that would need to be evaluated before this keyword. |
2538 |
| - </t> |
2539 |
| - <t> |
2540 |
| - The annotation result of this keyword is the set of instance |
2541 |
| - property names validated by this keyword's subschema. |
2542 |
| - Annotation results for "unevaluatedProperties" keywords from |
2543 |
| - multiple schemas applied to the same instance location are combined |
2544 |
| - by taking the union of the sets. |
2545 |
| - </t> |
2546 |
| - <t> |
2547 |
| - Omitting this keyword has the same assertion behavior as |
2548 |
| - an empty schema. |
2549 |
| - </t> |
2550 |
| - <t> |
2551 |
| - Implementations that do not collect annotations MUST raise an error |
2552 |
| - upon encountering this keyword. |
2553 |
| - </t> |
2554 |
| - </section> |
2555 |
| - |
2556 | 2460 | <section title="propertyNames">
|
2557 | 2461 | <t>
|
2558 | 2462 | The value of "propertyNames" MUST be a valid JSON Schema.
|
|
2570 | 2474 | </section>
|
2571 | 2475 | </section>
|
2572 | 2476 |
|
| 2477 | + <section title="A Vocabulary for Unevaluated Locations"> |
| 2478 | + <t> |
| 2479 | + Meta-schemas that do not use "$vocabulary" SHOULD be considered to |
| 2480 | + require this vocabulary as if its URI were present with a value of true. |
| 2481 | + </t> |
| 2482 | + <t> |
| 2483 | + The current URI for this vocabulary, known as the Unevaluated Applicator |
| 2484 | + vocabulary, is: |
| 2485 | + <https://json-schema.org/draft/2019-09/vocab/unevaluated>. |
| 2486 | + </t> |
| 2487 | + <t> |
| 2488 | + The current URI for the corresponding meta-schema is: |
| 2489 | + <eref target="https://json-schema.org/draft/2019-09/meta/unevaluated"/>. |
| 2490 | + </t> |
| 2491 | + <t> |
| 2492 | + Updated vocabulary and meta-schema URIs MAY be published between |
| 2493 | + specification drafts in order to correct errors. Implementations |
| 2494 | + SHOULD consider URIs dated after this specification draft and |
| 2495 | + before the next to indicate the same syntax and semantics |
| 2496 | + as those listed here. |
| 2497 | + </t> |
| 2498 | + <section title="unevaluatedItems" anchor="unevaluatedItems"> |
| 2499 | + <t> |
| 2500 | + The value of "unevaluatedItems" MUST be a valid JSON Schema. |
| 2501 | + </t> |
| 2502 | + <t> |
| 2503 | + The behavior of this keyword depends on the annotation results of |
| 2504 | + adjacent keywords that apply to the instance location being validated. |
| 2505 | + Specifically, the annotations from "prefixItems", "items", and "contains", |
| 2506 | + which can come from those keywords when they are adjacent to the |
| 2507 | + "unevaluatedItems" keyword. Those two annotations, as well as |
| 2508 | + "unevaluatedItems", can also result from any and all adjacent |
| 2509 | + <xref target="in-place">in-place applicator</xref> keywords. |
| 2510 | + This includes but is not limited to the in-place applicators |
| 2511 | + defined in this document. |
| 2512 | + </t> |
| 2513 | + <t> |
| 2514 | + If no relevant annotations are present, the "unevaluatedItems" |
| 2515 | + subschema MUST be applied to all locations in the array. |
| 2516 | + If a boolean true value is present from any of the relevant annotations, |
| 2517 | + "unevaluatedItems" MUST be ignored. Otherwise, the subschema |
| 2518 | + MUST be applied to any index greater than the largest annotation |
| 2519 | + value for "prefixItems", which does not appear in any annotation |
| 2520 | + value for "contains". |
| 2521 | + </t> |
| 2522 | + <t> |
| 2523 | + This means that "prefixItems", "items", "contains", and all in-place |
| 2524 | + applicators MUST be evaluated before this keyword can be evaluated. |
| 2525 | + Authors of extension keywords MUST NOT define an in-place applicator |
| 2526 | + that would need to be evaluated before this keyword. |
| 2527 | + </t> |
| 2528 | + <t> |
| 2529 | + If the "unevaluatedItems" subschema is applied to any |
| 2530 | + positions within the instance array, it produces an |
| 2531 | + annotation result of boolean true, analogous to the |
| 2532 | + behavior of "items". |
| 2533 | + </t> |
| 2534 | + <t> |
| 2535 | + Omitting this keyword has the same assertion behavior as |
| 2536 | + an empty schema. |
| 2537 | + </t> |
| 2538 | + <t> |
| 2539 | + Implementations that do not collect annotations MUST raise an error |
| 2540 | + upon encountering this keyword. |
| 2541 | + </t> |
| 2542 | + </section> |
| 2543 | + |
| 2544 | + <section title="unevaluatedProperties" anchor="unevaluatedProperties"> |
| 2545 | + <t> |
| 2546 | + The value of "unevaluatedProperties" MUST be a valid JSON Schema. |
| 2547 | + </t> |
| 2548 | + <t> |
| 2549 | + The behavior of this keyword depends on the annotation results of |
| 2550 | + adjacent keywords that apply to the instance location being validated. |
| 2551 | + Specifically, the annotations from "properties", "patternProperties", |
| 2552 | + and "additionalProperties", which can come from those keywords when |
| 2553 | + they are adjacent to the "unevaluatedProperties" keyword. Those |
| 2554 | + three annotations, as well as "unevaluatedProperties", can also |
| 2555 | + result from any and all adjacent |
| 2556 | + <xref target="in-place">in-place applicator</xref> keywords. |
| 2557 | + This includes but is not limited to the in-place applicators |
| 2558 | + defined in this document. |
| 2559 | + </t> |
| 2560 | + <t> |
| 2561 | + Validation with "unevaluatedProperties" applies only to the child |
| 2562 | + values of instance names that do not appear in the "properties", |
| 2563 | + "patternProperties", "additionalProperties", or |
| 2564 | + "unevaluatedProperties" annotation results that apply to the |
| 2565 | + instance location being validated. |
| 2566 | + </t> |
| 2567 | + <t> |
| 2568 | + For all such properties, validation succeeds if the child instance |
| 2569 | + validates against the "unevaluatedProperties" schema. |
| 2570 | + </t> |
| 2571 | + <t> |
| 2572 | + This means that "properties", "patternProperties", "additionalProperties", |
| 2573 | + and all in-place applicators MUST be evaluated before this keyword can |
| 2574 | + be evaluated. Authors of extension keywords MUST NOT define an in-place |
| 2575 | + applicator that would need to be evaluated before this keyword. |
| 2576 | + </t> |
| 2577 | + <t> |
| 2578 | + The annotation result of this keyword is the set of instance |
| 2579 | + property names validated by this keyword's subschema. |
| 2580 | + Annotation results for "unevaluatedProperties" keywords from |
| 2581 | + multiple schemas applied to the same instance location are combined |
| 2582 | + by taking the union of the sets. |
| 2583 | + </t> |
| 2584 | + <t> |
| 2585 | + Omitting this keyword has the same assertion behavior as |
| 2586 | + an empty schema. |
| 2587 | + </t> |
| 2588 | + <t> |
| 2589 | + Implementations that do not collect annotations MUST raise an error |
| 2590 | + upon encountering this keyword. |
| 2591 | + </t> |
| 2592 | + </section> |
| 2593 | + </section> |
| 2594 | + |
2573 | 2595 | <section title="Output Formatting" anchor="output">
|
2574 | 2596 | <t>
|
2575 | 2597 | JSON Schema is defined to be platform-independent. As such, to increase compatibility
|
|
0 commit comments