|
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