@@ -303,54 +303,19 @@ are processed in the same way, with the same available behaviors.
303
303
304
304
## Fragment Identifiers {#fragments}
305
305
306
- In accordance with
307
- [ section 3.1 of RFC 6839] ( https://www.rfc-editor.org/rfc/rfc6839.html#section-3.1 ) ,
308
- the syntax and semantics of fragment identifiers specified for any +json media
309
- type SHOULD be as specified for ` application/json ` . (At publication of this
310
- document, there is no fragment identification syntax defined for
311
- ` application/json ` .)
312
-
313
- Additionally, the ` application/schema+json ` media type supports two fragment
314
- identifier structures: plain names and JSON Pointers. The
315
- ` application/schema-instance+json ` media type supports one fragment identifier
316
- structure: JSON Pointers.
306
+ JSON Schema uses two fragment identifier structures: plain names and JSON
307
+ Pointers. Any media types defined for JSON Schema MUST support these structures.
317
308
318
309
The use of JSON Pointers as IRI fragment identifiers is described in [ RFC
319
- 6901] [ rfc6901 ] . For ` application/schema+json ` , which supports two fragment
320
- identifier syntaxes, fragment identifiers matching the JSON Pointer syntax,
321
- including the empty string, MUST be interpreted as JSON Pointer fragment
322
- identifiers.
323
-
324
- Per the W3C's
325
- [ best practices for fragment identifiers] ( https://www.w3.org/TR/2012/WD-fragid-best-practices-20121025 ) ,
326
- plain name fragment identifiers in ` application/schema+json ` are reserved for
327
- referencing locally named schemas.
328
-
329
- Plain name fragments MUST follow XML's
330
- [ ` NCName ` production] ( https://www.w3.org/TR/2006/REC-xml-names11-20060816/#NT-NCName ) ,
331
- which allows for compatibility with the recommended [ plain name
332
- syntax] ( https://www.w3.org/TR/2003/REC-xptr-framework-20030325/ ) for XML-based
333
- media types. For convenience, the ` NCName ` syntax is reproduced here in ABNF
334
- form, using a minimal set of rules:
310
+ 6901] [ rfc6901 ] . Fragment identifiers that start with ` / ` or are the empty
311
+ string, MUST be interpreted as JSON Pointer fragment identifiers.
335
312
336
- ``` abnf
337
- NCName = NCNameStartChar *NCNameChar
338
- NCNameStartChar = "_" / ALPHA
339
- / %xC0-D6 / %xD8-F6 / %xF8-2FF
340
- / %x370-37D / %x37F-1FFF
341
- / %x200C-200D / %x2070-218F
342
- / %x2C00-2FEF / %x3001-D7FF
343
- / %xF900-FDCF / %xFDF0-FFFD
344
- / %x10000-EFFFF
345
- NCNameChar = NCNameStartChar / "-" / "." / DIGIT
346
- / %xB7 / %x0300-036F / %x203F-2040
347
- ```
348
-
349
- All fragment identifiers that do not match the JSON Pointer syntax MUST be
350
- interpreted as plain name fragment identifiers.
313
+ Plain name fragment identifiers are reserved for referencing locally named
314
+ schemas. All fragment identifiers that are not interpreted as JSON Pointers MUST
315
+ be interpreted as plain name fragment identifiers.
351
316
352
- Defining a plain name fragment identifier within an ` application/ schema+json `
353
- document is specified in the [ ` $anchor ` keyword] ( #anchors ) section.
317
+ Defining a plain name fragment identifier within a schema resource is specified
318
+ in the [ ` $anchor ` keyword] ( #anchors ) section.
354
319
355
320
## General Considerations
356
321
@@ -1067,6 +1032,25 @@ details.
1067
1032
If present, the value of these keywords MUST be a string and MUST conform to the
1068
1033
plain name fragment identifier syntax defined in {{fragments}}.
1069
1034
1035
+ ` $anchor ` , ` $dynamicAnchor ` , and any extensions that define a plain name
1036
+ fragment identifiers MUST match XML's [ ` NCName `
1037
+ production] ( https://www.w3.org/TR/2006/REC-xml-names11-20060816/#NT-NCName ) . For
1038
+ convenience, the ` NCName ` syntax is reproduced here in ABNF form, using a
1039
+ minimal set of rules:
1040
+
1041
+ ``` abnf
1042
+ NCName = NCNameStartChar *NCNameChar
1043
+ NCNameStartChar = "_" / ALPHA
1044
+ / %xC0-D6 / %xD8-F6 / %xF8-2FF
1045
+ / %x370-37D / %x37F-1FFF
1046
+ / %x200C-200D / %x2070-218F
1047
+ / %x2C00-2FEF / %x3001-D7FF
1048
+ / %xF900-FDCF / %xFDF0-FFFD
1049
+ / %x10000-EFFFF
1050
+ NCNameChar = NCNameStartChar / "-" / "." / DIGIT
1051
+ / %xB7 / %x0300-036F / %x203F-2040
1052
+ ```
1053
+
1070
1054
#### Duplicate schema identifiers {#duplicate-iris}
1071
1055
1072
1056
A schema MAY (and likely will) have multiple IRIs, but there is no way for an
0 commit comments