rfc9741.original.xml | rfc9741.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.22 (Ruby 3.3. | -ietf-cbor-cddl-more-control-08" number="9741" category="std" consensus="true" s | |||
4) --> | ubmissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3 | |||
<?rfc compact="yes"?> | " xml:lang="en" updates="" obsoletes=""> | |||
<?rfc comments="yes"?> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | ||||
-ietf-cbor-cddl-more-control-08" category="std" consensus="true" submissionType= | ||||
"IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 3.24.0 --> | ||||
<front> | <front> | |||
<title abbrev="CDDL: More Control Operators for Text ">Concise Data Definiti | <title abbrev="CDDL: More Control Operators for Text">Concise Data Definitio | |||
on Language (CDDL): Additional Control Operators for the Conversion and Processi | n Language (CDDL): Additional Control Operators for the Conversion and Processin | |||
ng of Text</title> | g of Text</title> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-cbor-cddl-more-control-0 | <seriesInfo name="RFC" value="9741"/> | |||
8"/> | ||||
<author initials="C." surname="Bormann" fullname="Carsten Bormann"> | <author initials="C." surname="Bormann" fullname="Carsten Bormann"> | |||
<organization>Universität Bremen TZI</organization> | <organization>Universität Bremen TZI</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Postfach 330440</street> | <street>Postfach 330440</street> | |||
<city>Bremen</city> | <city>Bremen</city> | |||
<code>D-28359</code> | <code>D-28359</code> | |||
<country>Germany</country> | <country>Germany</country> | |||
</postal> | </postal> | |||
<phone>+49-421-218-63921</phone> | <phone>+49-421-218-63921</phone> | |||
<email>cabo@tzi.org</email> | <email>cabo@tzi.org</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2025" month="January" day="09"/> | <date year="2025" month="February"/> | |||
<area>ART</area> | ||||
<workgroup>cbor</workgroup> | ||||
<keyword>Concise Data Definition Language</keyword> | <keyword>Concise Data Definition Language</keyword> | |||
<keyword>Control Operator</keyword> | <keyword>Control Operator</keyword> | |||
<abstract> | ||||
<?line 69?> | ||||
<abstract> | ||||
<t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, | <t>The Concise Data Definition Language (CDDL), standardized in RFC 8610, | |||
provides "control operators" as its main language extension point. | provides "control operators" as its main language extension point. | |||
RFCs have added to this extension point both in an | RFCs have added to this extension point in both an | |||
application-specific and a more general way.</t> | application-specific and a more general way.</t> | |||
<t>The present document defines a number of additional generally | <t>The present document defines a number of additional generally | |||
applicable control operators for text conversion (Bytes, Integers, | applicable control operators for text conversion (bytes, integers, | |||
JSON, Printf-style formatting) and for an operation on text.</t> | Printf-style formatting, and JSON) and for an operation on text.</t> | |||
<!-- | ||||
[^status] | ||||
[^status]: Revision –00 of this WG draft ... | ||||
--> | ||||
</abstract> | </abstract> | |||
<note removeInRFC="true"> | ||||
<name>About This Document</name> | ||||
<t> | ||||
The latest revision of this draft can be found at <eref target="https:// | ||||
cbor-wg.github.io/cddl-more-control/"/>. | ||||
Status information for this document may be found at <eref target="https | ||||
://datatracker.ietf.org/doc/draft-ietf-cbor-cddl-more-control/"/>. | ||||
</t> | ||||
<t> | ||||
Discussion of this document takes place on the | ||||
Concise Binary Object Representation (CBOR) Maintenance and Extensions W | ||||
orking Group mailing list (<eref target="mailto:cbor@ietf.org"/>), | ||||
which is archived at <eref target="https://mailarchive.ietf.org/arch/bro | ||||
wse/cbor/"/>. | ||||
Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/ | ||||
>. | ||||
</t> | ||||
<t>Source for this draft and an issue tracker can be found at | ||||
<eref target="https://github.com/cbor-wg/cddl-more-control"/>.</t> | ||||
</note> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<?line 86?> | ||||
<section anchor="intro"> | <section anchor="intro"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t>The Concise Data Definition Language (CDDL), standardized in <xref targ et="RFC8610"/>, | <t>The Concise Data Definition Language (CDDL), standardized in <xref targ et="RFC8610"/>, | |||
provides "control operators" as its main language extension point | provides "control operators" as its main language extension point | |||
(<xref section="3.8" sectionFormat="of" target="RFC8610"/>). | (<xref section="3.8" sectionFormat="of" target="RFC8610"/>). | |||
RFCs have added to this extension point both in an | RFCs have added to this extension point in both an | |||
application-specific <xref target="RFC9090"/> and a more general <xref target="R FC9165"/> way.</t> | application-specific <xref target="RFC9090"/> and a more general <xref target="R FC9165"/> way.</t> | |||
<t>The present document defines a number of additional generally | ||||
<!-- [rfced] Currently, the definitions for "t" and "c" are included in the | ||||
title of Table 1: | ||||
Original: | ||||
Table 1: Summary of New Control Operators in this Document, | ||||
t = target type (left-hand side), c = controller type (right-hand | ||||
side) | ||||
We recommend removing these definitions from the title and either 1) adding | ||||
them to the text preceding the table or 2) creating a legend below the | ||||
table. What do you prefer? | ||||
Perhaps (add to text before table): | ||||
The present document defines a number of additional generally | ||||
applicable control operators. In the table below, "t" is for "target type" | ||||
(left-hand side) and "c" is for "controller type" (right-hand side). | ||||
Or (add legend after table): | ||||
t - target type (left-hand side) | ||||
c - controller type (right-hand side) | ||||
--> | ||||
<!-- [rfced] In Table 1, are parentheses needed for the following? The other | ||||
fields in this column do not have parentheses. | ||||
Original: | ||||
(sloppy-tolerant variants of | ||||
the above) | ||||
Perhaps: | ||||
sloppy-tolerant variants of | ||||
the above | ||||
--> | ||||
<!-- [rfced] Tables | ||||
a) Tables 3, 4, and 6 have three dashes in the Reference column. Would you | ||||
like to remove this column altogether as it is empty? | ||||
b) Tables 2 and 5 contain a reference in the References column, but they are | ||||
different from the reference (i.e., his document) for the same control | ||||
operators in Table 7 in the IANA section. Will this cause any issues for | ||||
readers? Let us know if any updates are needed. | ||||
--> | ||||
<t>The present document defines a number of additional generally | ||||
applicable control operators:</t> | applicable control operators:</t> | |||
<table anchor="tbl-new"> | <table anchor="tbl-new"> | |||
<name>Summary of New Control Operators in this Document, t = target typ e (left-hand side), c = controller type (right-hand side)</name> | <name>Summary of New Control Operators in This Document, t = target type (left-hand side), c = controller type (right-hand side)</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Name</th> | <th align="left">Name</th> | |||
<th align="left">t</th> | <th align="left">t</th> | |||
<th align="left">c</th> | <th align="left">c</th> | |||
<th align="left">Purpose</th> | <th align="left">Purpose</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
skipping to change at line 156 ¶ | skipping to change at line 182 ¶ | |||
<td align="left"> | <td align="left"> | |||
<tt>.join</tt></td> | <tt>.join</tt></td> | |||
<td align="left">text or bytes</td> | <td align="left">text or bytes</td> | |||
<td align="left">array</td> | <td align="left">array</td> | |||
<td align="left">Build text or byte string from array of components< /td> | <td align="left">Build text or byte string from array of components< /td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<section anchor="terminology"> | <section anchor="terminology"> | |||
<name>Terminology</name> | <name>Terminology</name> | |||
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp | <t> | |||
14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECO | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
MMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
nterpreted as | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
described in <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RF | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
C8174"/>) when, and only when, they | be | |||
appear in all capitals, as shown here.</t> | interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | |||
<?line -18?> | target="RFC8174"/> when, and only when, they appear in all capitals, as | |||
shown here. | ||||
</t> | ||||
<t>Regular expressions mentioned in the text are as defined in <xref target="RFC 9485"/>.</t> | <t>Regular expressions mentioned in the text are as defined in <xref targ et="RFC9485"/>.</t> | |||
<t>This specification uses terminology from <xref target="RFC8610"/>. | <t>This specification uses terminology from <xref target="RFC8610"/>. | |||
In particular, with respect to control operators, "target" refers to | In particular, with respect to control operators, "target" refers to | |||
the left-hand side operand, and "controller" to the right-hand side operand. | the left-hand-side operand and "controller" to the right-hand-side operand. | |||
"Tool" refers to tools along the lines of that described in <xref section="F" se ctionFormat="of" target="RFC8610"/>. | "Tool" refers to tools along the lines of that described in <xref section="F" se ctionFormat="of" target="RFC8610"/>. | |||
Note also that the data model underlying CDDL provides for text | Note also that the data model underlying CDDL provides for text | |||
strings as well as byte strings as two separate types, which are | strings as well as byte strings as two separate types, which are | |||
then collectively referred to as "strings".</t> | then collectively referred to as "strings".</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="text-conversion"> | <section anchor="text-conversion"> | |||
<name>Text Conversion</name> | <name>Text Conversion</name> | |||
<section anchor="base"> | <section anchor="base"> | |||
<name>Byte Strings: Base 16 (Hex), Base 32, Base 45, Base 64</name> | <name>Byte Strings: Base 16 (Hex), Base 32, Base 45, and Base 64</name> | |||
<t>A CDDL model often defines data that are byte strings in essence but | <t>A CDDL model often defines data that are byte strings in essence but | |||
need to be transported in various encoded forms, such as base64 or | need to be transported in various encoded forms, such as base64 or | |||
hex. | hex. | |||
This section defines a number of control operators to model these | This section defines a number of control operators to model these | |||
conversions.</t> | conversions.</t> | |||
<t>The control operators generally are of a form that could be used like | <t>The control operators generally are of a form that could be used like | |||
this:</t> | this:</t> | |||
<sourcecode type="cddl" name="example-b64u.cddl"><![CDATA[ | <sourcecode type="cddl" name="example-b64u.cddl"><![CDATA[ | |||
signature-for-json = text .b64u signature | signature-for-json = text .b64u signature | |||
signature = bytes .cbor COSE_Sign1 | signature = bytes .cbor COSE_Sign1 | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>The specification of these control operators is complicated by the | ||||
large number of transformations in use. Inspired by Section <xref target="RFC89 | <!-- [rfced] This sentence introduces Table 2 and mentions "representations | |||
49" section="8" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>, this | defined in [RFC4648]", but the last item in Table 2 is defined in RFC | |||
specification uses representations defined in <xref target="RFC4648"/> with the | 9285 (not RFC 4648). May we update this sentence to include RFC 9285? | |||
following | Also, would it be helpful to reorder the sentence to say "this | |||
specification uses the following names" rather than "this specification | ||||
uses the representations"? | ||||
Original: | ||||
Inspired by Section 8 of RFC | ||||
8949 [STD94], this specification uses representations defined in | ||||
[RFC4648] with the following names: | ||||
Perhaps: | ||||
Inspired by Section 8 of RFC | ||||
8949 [STD94], this specification uses the following names for the | ||||
representations defined in [RFC4648] and [RFC9285]: | ||||
--> | ||||
<t>The specification of these control operators is complicated by the | ||||
large number of transformations in use. Inspired by Section <xref target="RFC89 | ||||
49" section="8" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>, this | ||||
specification uses the representations defined in <xref target="RFC4648"/> with | ||||
the following | ||||
names:</t> | names:</t> | |||
<table anchor="tbl-text-conv"> | <table anchor="tbl-text-conv"> | |||
<name>Control Operators for Text Conversion of Byte Strings</name> | <name>Control Operators for Text Conversion of Byte Strings</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">name</th> | <th align="left">Name</th> | |||
<th align="left">meaning</th> | <th align="left">Meaning</th> | |||
<th align="left">reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b64u</tt></td> | <tt>.b64u</tt></td> | |||
<td align="left">Base64URL, no padding</td> | <td align="left">Base64url, no padding</td> | |||
<td align="left"> | <td align="left"> | |||
<xref section="5" sectionFormat="of" target="RFC4648"/></td> | <xref section="5" sectionFormat="of" target="RFC4648"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b64u-sloppy</tt></td> | <tt>.b64u-sloppy</tt></td> | |||
<td align="left">Base64URL, no padding, sloppy</td> | <td align="left">Base64url, no padding, sloppy</td> | |||
<td align="left"> | <td align="left"> | |||
<xref section="5" sectionFormat="of" target="RFC4648"/></td> | <xref section="5" sectionFormat="of" target="RFC4648"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b64c</tt></td> | <tt>.b64c</tt></td> | |||
<td align="left">Base64 classic, padding</td> | <td align="left">Base64 classic, padding</td> | |||
<td align="left"> | <td align="left"> | |||
<xref section="4" sectionFormat="of" target="RFC4648"/></td> | <xref section="4" sectionFormat="of" target="RFC4648"/></td> | |||
</tr> | </tr> | |||
skipping to change at line 273 ¶ | skipping to change at line 322 ¶ | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b45</tt></td> | <tt>.b45</tt></td> | |||
<td align="left">Base45</td> | <td align="left">Base45</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="RFC9285"/></td> | <xref target="RFC9285"/></td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>Note that this specification is somewhat opinionated here: It does no | ||||
t | <!-- [rfced] The following sentences include "specification is | |||
provide base64url, base32 or base32hex encoding with padding, or | opinionated". As a specification cannot be opinionated (a person can), | |||
may we trim this phrasing as shown below? Another option is to revise the | ||||
text to mention the author (e.g., "the specification expresses the | ||||
author's opinoin..."). | ||||
Original: | ||||
Note that this specification is somewhat opinionated here: It does | ||||
not provide base64url, base32 or base32hex encoding with padding, or | ||||
base64 classic without padding. | ||||
... | ||||
Note that the present specification is opinionated again | ||||
in not specifying a sloppy variant of base32 or base32/hex, as no | ||||
legacy use of sloppy base32(/hex) was known at the time of writing. | ||||
... | ||||
Again, the specification is opinionated by only providing for integer | ||||
numbers and these only represented without leading zeros, | ||||
Perhaps (trimmed): | ||||
Note that this specification does | ||||
not provide base64url, base32 or base32hex encoding with padding, or | ||||
base64 classic without padding. | ||||
... | ||||
Note that the present specification does | ||||
not specify a sloppy variant of base32 or base32/hex, as no | ||||
legacy use of sloppy base32(/hex) was known at the time of writing. | ||||
... | ||||
Again, the specification only provides for integer | ||||
numbers and these only represented without leading zeros, | ||||
--> | ||||
<t>Note that this specification is somewhat opinionated here: It does not | ||||
provide base64url, base32, or base32hex encoding with padding, or | ||||
base64 classic without padding. Experience indicates that these | base64 classic without padding. Experience indicates that these | |||
combinations only ever occur in error, so the usability of CDDL is | combinations only ever occur in error, so the usability of CDDL is | |||
increased by not providing them in the first place. Also, adding "c" | increased by not providing them in the first place. Also, adding "c" | |||
makes sure that any decision for classic base64 is actively taken.</t> | makes sure that any decision for classic base64 is actively taken.</t> | |||
<t>These control operators are "strict" in their matching, i.e., they | <t>These control operators are "strict" in their matching, i.e., they | |||
only match base encodings that conform to the mandates of their | only match base encodings that conform to the mandates of their | |||
defining documents. | defining documents. | |||
Note that this also means that <tt>.b64u</tt> and <tt>.b64c</tt> only match text | Note that this also means that <tt>.b64u</tt> and <tt>.b64c</tt> only match text | |||
strings composed of the set of characters defined for each of them, | strings composed of the set of characters defined for each of them, | |||
respectively. | respectively. | |||
(This is maybe worth pointing out here explicitly as this contrasts | (This is perhaps worth pointing out explicitly as it contrasts | |||
with the "b64" literal prefix that can be used to notate byte strings | with the "b64" literal prefix that can be used to notate byte strings | |||
in CDDL source code, which simply accepts characters from either alphabet. | in CDDL source code, which simply accepts characters from either alphabet. | |||
This behavior is different from the matching behavior of the four | This behavior is different from the matching behavior of the four | |||
base64 control operators defined here.)</t> | base64 control operators defined here.)</t> | |||
<t>The additional designation "sloppy" indicates that the text string is | ||||
<!-- [rfced] "behind table 1" is unclear. Is the intent to say "after Table 1"? | ||||
Original: | ||||
The additional designation "sloppy" indicates that the text string is | ||||
not validated for any additional bits being zero, in variance to what | ||||
is specified in the paragraph behind table 1 in Section 4 of | ||||
[RFC4648]. | ||||
Perhaps: | ||||
The additional designation "sloppy" indicates that the text string is | ||||
not validated for any additional bits being zero, in variance to what | ||||
is specified in the paragraph behind table 1 in Section 4 of | ||||
[RFC4648]. | ||||
--> | ||||
<t>The additional designation "sloppy" indicates that the text string is | ||||
not validated for any additional bits being zero, in variance to what | not validated for any additional bits being zero, in variance to what | |||
is specified in the paragraph behind table 1 in <xref section="4" sectionFormat= "of" target="RFC4648"/>. | is specified in the paragraph behind Table 1 in <xref section="4" sectionFormat= "of" target="RFC4648"/>. | |||
Note that the present specification is opinionated again in not | Note that the present specification is opinionated again in not | |||
specifying a sloppy variant of base32 or base32/hex, as no legacy use | specifying a sloppy variant of base32 or base32/hex, as no legacy use | |||
of sloppy base32(/hex) was known at the time of writing. | of sloppy base32(/hex) was known at the time of writing. | |||
Base45 <xref target="RFC9285"/> is known to be suboptimal for use in environment s with limited | Base45 <xref target="RFC9285"/> is known to be suboptimal for use in environment s with limited | |||
data transparency (such as URLs), but is included because of its close | data transparency (such as URLs) but is included because of its close | |||
relationship to QR codes and its wide use in health informatics (note | relationship to QR codes and its wide use in health informatics (note | |||
that base45 is strongly specified not to allow sloppy forms | that base45 is strongly specified not to allow sloppy forms | |||
of encoding).</t> | of encoding).</t> | |||
</section> | </section> | |||
<section anchor="numerals"> | <section anchor="numerals"> | |||
<name>Numerals</name> | <name>Numerals</name> | |||
<table anchor="tbl-num"> | ||||
<table anchor="tbl-num"> | ||||
<name>Control Operator for Text Conversion of Integers</name> | <name>Control Operator for Text Conversion of Integers</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">name</th> | <th align="left">Name</th> | |||
<th align="left">meaning</th> | <th align="left">Meaning</th> | |||
<th align="left">reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.base10</tt></td> | <tt>.base10</tt></td> | |||
<td align="left">Base-ten (decimal) Integer</td> | <td align="left">Base-ten (decimal) integer</td> | |||
<td align="left">---</td> | <td align="left">---</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<!-- [rfced] We do not see the exact term "YANG-JSON" in RFC 7951, though the | ||||
document discusses JSON encoding of YANG data. Is this text okay, or | ||||
should it be updated? | ||||
Original: | ||||
The control operator .base10 allows the modeling of text strings that | ||||
carry an integer number in decimal form (as a text string with digits | ||||
in the usual base-ten positional numeral system), such as in the | ||||
uint64/int64 formats of YANG-JSON [RFC7951]. | ||||
--> | ||||
<t>The control operator <tt>.base10</tt> allows the modeling of text str ings | <t>The control operator <tt>.base10</tt> allows the modeling of text str ings | |||
that carry an integer number in decimal form (as a text string with | that carry an integer number in decimal form (as a text string with | |||
digits in the usual base-ten positional numeral system), such as in the uint64/i nt64 formats of | digits in the usual base-ten positional numeral system), such as in the uint64/i nt64 formats of | |||
YANG-JSON <xref target="RFC7951"/>.</t> | YANG-JSON <xref target="RFC7951"/>.</t> | |||
<sourcecode type="cddl" name="example-base10.cddl"><![CDATA[ | <sourcecode type="cddl" name="example-base10.cddl"><![CDATA[ | |||
yang-json-sid = text .base10 (0..9223372036854775807) | yang-json-sid = text .base10 (0..9223372036854775807) | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>Again, the specification is opinionated by only providing for integer | ||||
numbers | <!-- [rfced] We believe "next section" here refers to Section 2.3. May we | |||
and these only represented without leading zeros, i.e., the decimal integer | update accordingly? Also, we see "conversion" and "hex" in Section 2.3 | |||
but not "octal" or "binary". Will this cause any issues for readers? | ||||
Original: | ||||
See the next section for more flexibility, and for other numeric bases such a | ||||
s | ||||
octal, hexadecimal, or binary conversions. | ||||
--> | ||||
<t>Again, the specification is opinionated by only providing for integer | ||||
numbers | ||||
represented without leading zeros, i.e., the decimal integer | ||||
numerals match the regular | numerals match the regular | |||
expression <tt>0|-?[1-9][0-9]*</tt> (of course, further restricted by the | expression <tt>0|-?[1-9][0-9]*</tt> (of course, this is further restricted by th e | |||
control type). | control type). | |||
See the next section for more flexibility, and for other numeric bases | See the next section for more flexibility and for other numeric bases | |||
such as octal, hexadecimal, | such as octal, hexadecimal, | |||
or binary conversions.</t> | or binary conversions.</t> | |||
<t>Note that this control operator governs text representations of | ||||
<!-- [rfced] In the first sentence below, should "b64u" be updated to ".b64u"? | ||||
And in the second sentence, should "base10" be updated to ".base10"? | ||||
Original: | ||||
Note that this control operator governs text representations of | ||||
integers and should not be confused with the control operators | ||||
governing text representations of byte strings (b64u etc.). | ||||
... | ||||
This | ||||
contrast is somewhat reinforced by spelling out "base" in the name | ||||
base10 as opposed to those of the byte string operators. | ||||
--> | ||||
<t>Note that this control operator governs text representations of | ||||
integers and should not be confused with the control operators | integers and should not be confused with the control operators | |||
governing text representations of byte strings (<tt>b64u</tt> etc.). | governing text representations of byte strings (such as <tt>b64u</tt>). | |||
This contrast is somewhat reinforced by spelling out "base" in the | This contrast is somewhat reinforced by spelling out "base" in the | |||
name <tt>base10</tt> as opposed to those of the byte string operators.</t> | name <tt>base10</tt> as opposed to those of the byte string operators.</t> | |||
</section> | </section> | |||
<section anchor="printf-style-formatting"> | <section anchor="printf-style-formatting"> | |||
<name>Printf-style Formatting</name> | <name>Printf-Style Formatting</name> | |||
<table anchor="tbl-printf"> | <table anchor="tbl-printf"> | |||
<name>Control Operator for Printf-formatting of Data Item(s)</name> | <name>Control Operator for Printf-Formatting of Data Item(s)</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">name</th> | <th align="left">Name</th> | |||
<th align="left">meaning</th> | <th align="left">Meaning</th> | |||
<th align="left">reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.printf</tt></td> | <tt>.printf</tt></td> | |||
<td align="left">Printf-formatting of data item(s)</td> | <td align="left">Printf-formatting of data item(s)</td> | |||
<td align="left">---</td> | <td align="left">---</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<!-- [rfced] Should "printf" in these sentences be updated to either "Printf" | ||||
(capitalized) or ".printf" (prefaced with dot)? Also, in the first | ||||
sentence, will "that is given" be clear to readers? | ||||
Original: | ||||
The construct matches a text string representing the textual output | ||||
of an equivalent C-language printf function call that is given the | ||||
format string and the data items following it in the array. | ||||
... | ||||
From the printf specification in the C language, length modifiers | ||||
(paragraph 7) are not used and MUST NOT be included in the format | ||||
string. | ||||
Perhaps: | ||||
The construct matches a text string representing the textual output | ||||
of an equivalent C-language .printf function call that presents the | ||||
format string and the data items following it in the array. | ||||
... | ||||
From the .printf specification in the C language, length modifiers | ||||
(paragraph 7) are not used and MUST NOT be included in the format | ||||
string. | ||||
--> | ||||
<t>The control operator <tt>.printf</tt> allows the modeling of text str ings that carry various formatted | <t>The control operator <tt>.printf</tt> allows the modeling of text str ings that carry various formatted | |||
information, as long as the format can be represented in Printf-style | information, as long as the format can be represented in Printf-style | |||
formatting strings as they are used in the C language (see Section | formatting strings as they are used in the C language (see Section | |||
7.21.6.1 of <xref target="C"/>).</t> | 7.21.6.1 of <xref target="C"/>).</t> | |||
<t>The controller (right-hand side) of the <tt>.printf</tt> control is a n array | <t>The controller (right-hand side) of the <tt>.printf</tt> control is a n array | |||
of one Printf-style format string and zero or more data items that fit | of one Printf-style format string and zero or more data items that fit | |||
the individual conversion specifications in the format string. | the individual conversion specifications in the format string. | |||
The construct matches a text string representing the textual output of | The construct matches a text string representing the textual output of | |||
an equivalent C-language <tt>printf</tt> function call that is given the | an equivalent C-language <tt>printf</tt> function call that is given the | |||
format string and the data items following it in the array.</t> | format string and the data items following it in the array.</t> | |||
<t>From the printf specification in the C language, length modifiers (pa | ||||
ragraph 7) | <!-- [rfced] Would it be helpful to update "From the printf specification in | |||
the C language" as shown below (e.g., change "From" to "Per" and add the | ||||
relavent section of [C])? We believe the specific paragraphs mentioned in | ||||
this text are from Section 7.21.6.1 of [C]. We can only view the web | ||||
archive link provided in the reference entry and that section uses | ||||
"fprintf" (rather than "printf"). | ||||
Original: | ||||
From the printf specification in the C language, length modifiers | ||||
(paragraph 7) are not used and MUST NOT be included in the format | ||||
string. The 's' conversion specifier (paragraph 8) is used to | ||||
interpolate a text string in UTF-8 form. The 'c' conversion | ||||
specifier (paragraph 8) represents a single Unicode scalar value as a | ||||
UTF-8 character. The 'p' and 'n' conversion specifiers (paragraph 8) | ||||
are not used and MUST NOT be included in the format string. | ||||
Perhaps: | ||||
Per Section 7.21.6.1 of the printf specification in the C language [C], lengt | ||||
h modifiers | ||||
(paragraph 7) are not used and MUST NOT be included in the format | ||||
string. The "s" conversion specifier (paragraph 8) is used to | ||||
interpolate a text string in UTF-8 form. The "c" conversion | ||||
specifier (paragraph 8) represents a single Unicode scalar value as a | ||||
UTF-8 character. The "p" and "n" conversion specifiers (paragraph 8) | ||||
are not used and MUST NOT be included in the format string. | ||||
--> | ||||
<t>From the printf specification in the C language, length modifiers (paragraph | ||||
7) | ||||
are not used and <bcp14>MUST NOT</bcp14> be included in the format string. | are not used and <bcp14>MUST NOT</bcp14> be included in the format string. | |||
The 's' conversion specifier (paragraph 8) is used to | The "s" conversion specifier (paragraph 8) is used to | |||
interpolate a text string in UTF-8 form. | interpolate a text string in UTF-8 form. | |||
The 'c' conversion specifier (paragraph 8) represents a single Unicode | The "c" conversion specifier (paragraph 8) represents a single Unicode | |||
scalar value as a UTF-8 character. | scalar value as a UTF-8 character. | |||
The 'p' and 'n' conversion specifiers (paragraph 8) are not used and | The "p" and "n" conversion specifiers (paragraph 8) are not used and | |||
<bcp14>MUST NOT</bcp14> be included in the format string.</t> | <bcp14>MUST NOT</bcp14> be included in the format string.</t> | |||
<t>In the following example, <tt>my_alg_19</tt> matches the text string <tt>"0x0013"</tt>:</t> | <t>In the following example, <tt>my_alg_19</tt> matches the text string <tt>"0x0013"</tt>:</t> | |||
<sourcecode type="cddl" name="example-printf.cddl"><![CDATA[ | <sourcecode type="cddl" name="example-printf.cddl"><![CDATA[ | |||
my_alg_19 = hexlabel<19> | my_alg_19 = hexlabel<19> | |||
hexlabel<K> = text .printf (["0x%04x", K]) | hexlabel<K> = text .printf (["0x%04x", K]) | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>The data items in the controller array do not need to be literals, | <t>The data items in the controller array do not need to be literals, as | |||
as for example in:</t> | in the following | |||
example:</t> | ||||
<sourcecode type="cddl" name="example-printf-uint.cddl"><![CDATA[ | <sourcecode type="cddl" name="example-printf-uint.cddl"><![CDATA[ | |||
any_alg = hexlabel<1..20> | any_alg = hexlabel<1..20> | |||
hexlabel<K> = text .printf (["0x%04x", K]) | hexlabel<K> = text .printf (["0x%04x", K]) | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>Here, <tt>any_alg</tt> matches the text strings <tt>"0x0013"</tt> or <tt>"0x0001"</tt> but | <t>Here, <tt>any_alg</tt> matches the text strings <tt>"0x0013"</tt> or <tt>"0x0001"</tt> but | |||
not <tt>"0x1234"</tt>.</t> | not <tt>"0x1234"</tt>.</t> | |||
</section> | </section> | |||
<section anchor="json-values"> | <section anchor="json-values"> | |||
<name>JSON Values</name> | <name>JSON Values</name> | |||
<t>Some applications store complete JSON texts <xref target="STD90"/> in | ||||
to text strings, the | <!-- [rfced] In Section 2.4, would it be helpful to include text | |||
JSON value for which can easily be defined in CDDL by using the default | introducing/explaining the sourcecode? This is done with sourcecode in | |||
JSON-to-CBOR conversion rules provided by Section <xref target="RFC8949" section | other sections. | |||
="6.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>. | --> | |||
<t>Some applications store complete JSON texts <xref target="STD90"/> in | ||||
to text strings. The | ||||
JSON value of these can easily be defined in CDDL by using the default | ||||
JSON-to-CBOR conversion rules provided in Section <xref target="RFC8949" section | ||||
="6.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>. | ||||
This is supported by a control operator similar to <tt>.cbor</tt> as defined in <xref section="3.8.4" sectionFormat="of" target="RFC8610"/>.</t> | This is supported by a control operator similar to <tt>.cbor</tt> as defined in <xref section="3.8.4" sectionFormat="of" target="RFC8610"/>.</t> | |||
<table anchor="tbl-json"> | <table anchor="tbl-json"> | |||
<name>Control Operator for Text Conversion of JSON Values</name> | <name>Control Operator for Text Conversion of JSON Values</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">name</th> | <th align="left">Name</th> | |||
<th align="left">meaning</th> | <th align="left">Meaning</th> | |||
<th align="left">reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.json</tt></td> | <tt>.json</tt></td> | |||
<td align="left">JSON</td> | <td align="left">JSON</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="STD90"/></td> | <xref target="STD90"/></td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<sourcecode type="cddl" name="example-json.cddl"><![CDATA[ | <sourcecode type="cddl" name="example-json.cddl"><![CDATA[ | |||
embedded-claims = text .json claims | embedded-claims = text .json claims | |||
claims = {iss: text, exp: text} | claims = {iss: text, exp: text} | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t>Notes:</t> | <t>Notes:</t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li> | <li> | |||
<t>JSON has known interoperability problems <xref target="RFC7493"/> | <t>JSON has known interoperability problems <xref | |||
. | target="RFC7493"/>. While <xref section="4" sectionFormat="of" | |||
While <xref section="4" sectionFormat="of" target="RFC7493"/> probably is not re | target="RFC7493"/> probably is not relevant to this specification, | |||
levant to this | <xref section="2" sectionFormat="of" target="RFC7493"/> provides | |||
specification, <xref section="2" sectionFormat="of" target="RFC7493"/> provides | requirements that need to be followed to make use of the generic | |||
requirements that | data model underlying CDDL. Note that the intention of <xref | |||
need to be followed to make use of the generic data model underlying | section="2.2" sectionFormat="of" target="RFC7493"/> is directly | |||
CDDL. | supported by Section <xref target="RFC8949" section="6.2" | |||
Note that the intention of <xref section="2.2" sectionFormat="of" target="RFC749 | sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>. The | |||
3"/> is directly | recommendation to use text strings for representing numbers | |||
supported by Section <xref target="RFC8949" section="6.2" sectionFormat="bare"/> | outside JSON's interoperable range is a requirement on the | |||
of RFC 8949 <xref target="STD94"/>. | application data model and therefore needs to be reflected on the | |||
The recommendation to use text strings for representing numbers | right-hand side of the <tt>.json</tt> control operator.</t> | |||
outside JSON's interoperable range is a requirement on the | ||||
application data model and therefore needs to be reflected on the | ||||
right-hand side of the <tt>.json</tt> control operator.</t> | ||||
</li> | </li> | |||
<li> | <li> | |||
<t>This control operator provides no way to constrain the use of bla | <t>This control operator provides no way to constrain the use of | |||
nk | blank space or other serialization variants in the JSON | |||
space or other serialization variants in the JSON representation of | representation of the data items; restrictions on the | |||
the data items; restrictions on the serialization to specific | serialization to specific variants (e.g., not providing for the | |||
variants (e.g, not providing for the addition of any insignificant | addition of any insignificant blank space and prescribing an order i | |||
blank space, prescribing an order in which map entries are | n | |||
serialized) could be defined in future control operators.</t> | which map entries are serialized) could be defined in future | |||
control operators.</t> | ||||
</li> | </li> | |||
<li> | <li> | |||
<t>A <tt>.jsonseq</tt> is not provided in this document for <xref ta | <!-- [rfced] Should "for [RFC7464]" be updated to "for JSON text sequences | |||
rget="RFC7464"/>, as no | [RFC7464]" or something similar? | |||
use case for inclusion in CDDL is known at the time of writing; | ||||
again, future control operators could address this use case.</t> | Original: | |||
* A .jsonseq is not provided in this document for [RFC7464], as no | ||||
use case for inclusion in CDDL is known at the time of writing; | ||||
again, future control operators could address this use case. | ||||
Perhaps: | ||||
* A .jsonseq is not provided in this document for JSON text sequences [RFC74 | ||||
64], as no | ||||
use case for inclusion in CDDL is known at the time of writing; | ||||
again, future control operators could address this use case. | ||||
--> | ||||
<t>A <tt>.jsonseq</tt> is not provided in this document for <xref | ||||
target="RFC7464"/>, as no use case for inclusion in CDDL is known | ||||
at the time of writing; again, future control operators could | ||||
address this use case.</t> | ||||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="text-processing"> | <section anchor="text-processing"> | |||
<name>Text Processing</name> | <name>Text Processing</name> | |||
<section anchor="join"> | <section anchor="join"> | |||
<name>Join</name> | <name>Join</name> | |||
<t>Often, text strings need to be constructed out of parts that can best | <t>Often, text strings need to be constructed out of parts that can best | |||
be modeled as an array.</t> | be modeled as an array.</t> | |||
<table anchor="tbl-join"> | <table anchor="tbl-join"> | |||
<name>Control Operator for Text Generation from Arrays</name> | <name>Control Operator for Text Generation from Arrays</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">name</th> | <th align="left">Name</th> | |||
<th align="left">meaning</th> | <th align="left">Meaning</th> | |||
<th align="left">reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.join</tt></td> | <tt>.join</tt></td> | |||
<td align="left">concatenate elements of an array</td> | <td align="left">concatenate elements of an array</td> | |||
<td align="left">---</td> | <td align="left">---</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
<t>For example, an IPv4 address in dotted-decimal might be modeled as in | <t>For example, an IPv4 address in dotted-decimal might be modeled as in | |||
<xref target="fig-join-example"/>.</t> | <xref target="fig-join-example"/>.</t> | |||
<figure anchor="fig-join-example"> | <figure anchor="fig-join-example"> | |||
<name>Using the .join operator to build dotted-decimal IPv4 addresses< /name> | <name>Using the .join Operator to Build Dotted-Decimal IPv4 Addresses< /name> | |||
<sourcecode type="cddl" name="example-join.cddl"><![CDATA[ | <sourcecode type="cddl" name="example-join.cddl"><![CDATA[ | |||
legacy-ip-address = text .join legacy-ip-address-elements | legacy-ip-address = text .join legacy-ip-address-elements | |||
legacy-ip-address-elements = [bytetext, ".", bytetext, ".", | legacy-ip-address-elements = [bytetext, ".", bytetext, ".", | |||
bytetext, ".", bytetext] | bytetext, ".", bytetext] | |||
bytetext = text .base10 byte | bytetext = text .base10 byte | |||
byte = 0..255 | byte = 0..255 | |||
]]></sourcecode> | ]]></sourcecode> | |||
</figure> | </figure> | |||
<t>The elements of the controller array need to be strings (text or byte | ||||
<t>The elements of the controller array need to be strings (text or byte | ||||
strings). | strings). | |||
The control operator matches a data item if that data item is also a | The control operator matches a data item if that data item is also a | |||
string, built by concatenating the strings in the array. | string, built by concatenating the strings in the array. | |||
The result of this concatenation is of the same kind of string (text | The result of this concatenation is of the same kind of string (text | |||
or bytes) as the first element of the array. | or bytes) as the first element of the array. | |||
(If there is no element in the array, the <tt>.join</tt> construct matches | (If there is no element in the array, the <tt>.join</tt> construct matches | |||
either kind of empty string, obviously further constrained by the | either kind of empty string, obviously further constrained by the | |||
control operator target.) | control operator target.) | |||
The concatenation is performed on the sequences of bytes in the | The concatenation is performed on the sequences of bytes in the | |||
strings. | strings. | |||
If the result of the concatenation is a text string, the resulting | If the result of the concatenation is a text string, the resulting | |||
sequence of bytes only matches the target data item if that result is | sequence of bytes only matches the target data item if that result is | |||
a valid text string (i.e., valid UTF-8; note that in contrast to the | a valid text string (i.e., valid UTF-8). Note that in contrast to the | |||
algorithm used in Section <xref target="RFC8949" section="3.2.3" sectionFormat=" | algorithm used in Section <xref target="RFC8949" section="3.2.3" sectionFormat=" | |||
bare"/> of RFC 8949 <xref target="STD94"/> there is no need | bare"/> of RFC 8949 <xref target="STD94"/>, there is no need | |||
that all individual byte sequences going into the concatenation | for all individual byte sequences going into the concatenation to | |||
constitute valid text strings).</t> | constitute valid text strings.</t> | |||
<t>Note that this control operator is hard to validate in the most | <t>Note that this control operator is hard to validate in the most | |||
general case, as this would require full parser functionality. | general case, as this would require full parser functionality. | |||
Simple implementation strategies will use array elements with constant | Simple implementation strategies will use array elements with constant | |||
values as guideposts ("markers", such as the <tt>"."</tt> in <xref target="fig-j oin-example"/>) | values as guideposts ("markers", such as the <tt>"."</tt> in <xref target="fig-j oin-example"/>) | |||
for isolating the variable elements that need further validation at | for isolating the variable elements that need further validation at | |||
the CDDL data model level. | the CDDL data model level. | |||
It is therefore recommended to limit the use of <tt>.join</tt> to simple | Therefore, it is recommended to limit the use of <tt>.join</tt> to simple | |||
arrangements where the array elements are laid out explicitly and | arrangements where the array elements are laid out explicitly and | |||
there are no adjacent variable elements without intervening constant | there are no adjacent variable elements without intervening constant | |||
values, and where these constant values do not occur within the text | values, and where these constant values do not occur within the text | |||
described by the variable elements.<br/> | described by the variable elements. | |||
If more complex parsing functionality is required, the ABNF control | If more complex parsing functionality is required, the ABNF control | |||
operators (see <xref section="3" sectionFormat="of" target="RFC9165"/>) may be u seful; however, these | operators (see <xref section="3" sectionFormat="of" target="RFC9165"/>) may be u seful; however, these | |||
cannot reach back into CDDL-specified elements like <tt>.join</tt> can do.</t> | cannot reach back into CDDL-specified elements like <tt>.join</tt> can.</t> | |||
<aside> | ||||
<!-- [rfced] We see that "parsing-regexp" (with hyphen) is used in Section 8 | ||||
of RFC 9485. Would you like to update "parsing regexp" here accordingly? | ||||
Original: | ||||
It also can build a parsing regexp (Section 6 of | ||||
[RFC9485]; see also Section 8 of [RFC9485] for security | ||||
considerations related to regexps) from the elements of the | ||||
controller array, with capture groups for each element, and | ||||
validate the captures against the elements of the array. | ||||
--> | ||||
<!-- [rfced] To improve readability, we suggest moving the long parenthetical | ||||
to be its own sentence. Let us know your thoughts. | ||||
Original: | ||||
It also can build a parsing regexp (Section 6 of | ||||
[RFC9485]; see also Section 8 of [RFC9485] for security | ||||
considerations related to regexps) from the elements of the | ||||
controller array, with capture groups for each element, and | ||||
validate the captures against the elements of the array. | ||||
Perhaps: | ||||
It also can build a parsing regexp from the elements of the | ||||
controller array, with capture groups for each element, and | ||||
validate the captures against the elements of the array. | ||||
(For more about parsing regexps, see Section 6 of [RFC9485]; see also | ||||
Section 8 of [RFC9485] for security considerations related to regexps.) | ||||
--> | ||||
<aside> | ||||
<t>Implementation note: A validator implementation can use the marker | <t>Implementation note: A validator implementation can use the marker | |||
elements to scan the text, isolating the variable elements. | elements to scan the text and isolate the variable elements. | |||
It also can build a parsing regexp (<xref section="6" sectionFormat="of" target= "RFC9485"/>; see also | It also can build a parsing regexp (<xref section="6" sectionFormat="of" target= "RFC9485"/>; see also | |||
<xref section="8" sectionFormat="of" target="RFC9485"/> for security considerati ons related to | <xref section="8" sectionFormat="of" target="RFC9485"/> for security considerati ons related to | |||
regexps) from the elements of the controller array, with capture | regexps) from the elements of the controller array, with capture | |||
groups for each element, and validate the captures against the | groups for each element, and validate the captures against the | |||
elements of the array. | elements of the array. | |||
In the most general case, these implementation strategies can exhibit | In the most general case, these implementation strategies can exhibit | |||
false negatives, where the implementation cannot find the structure | false negatives, where the implementation cannot find the structure | |||
that would be successfully validated using the controller; it is | that would be successfully validated using the controller; it is | |||
<bcp14>RECOMMENDED</bcp14> that implementations provide full coverage at least f or | <bcp14>RECOMMENDED</bcp14> that implementations provide full coverage at least f or | |||
the marker-based subset outlined in the previous paragraph.</t> | the marker-based subset outlined in the previous paragraph.</t> | |||
</aside> | </aside> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="iana-considerations"> | <section anchor="iana-considerations"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<t><cref anchor="to-be-removed">RFC Editor: please replace RFC-XXXX with t | ||||
he RFC | <!-- [rfced] FYI - In Section 4, we removed the xref with the relative | |||
number of this RFC and remove this note.</cref></t> | attribute. IANA has recommended against use of the registry-specific | |||
<t>This document requests IANA to register the contents of | URLs; the web portion of the style guide was recently updated to make | |||
<xref target="tbl-iana-reqs"/> into the registry | this more clear. | |||
"<xref section="CDDL Control Operators" relative="#cddl-control-operators" secti | --> | |||
onFormat="bare" target="IANA.cddl"/>" of <xref target="IANA.cddl"/>:</t> | ||||
<t>IANA has registered the contents of <xref target="tbl-iana-reqs"/> into | ||||
the "CDDL Control Operators" registry of <xref target="IANA.cddl"/>: | ||||
</t> | ||||
<table anchor="tbl-iana-reqs"> | <table anchor="tbl-iana-reqs"> | |||
<name>New Control Operators To Be Registered</name> | <name>New Control Operators</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Name</th> | <th align="left">Name</th> | |||
<th align="left">Reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b64u</tt></td> | <tt>.b64u</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b64u-sloppy</tt></td> | <tt>.b64u-sloppy</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b64c</tt></td> | <tt>.b64c</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b64c-sloppy</tt></td> | <tt>.b64c-sloppy</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b45</tt></td> | <tt>.b45</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.b32</tt></td> | <tt>.b32</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.h32</tt></td> | <tt>.h32</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.hex</tt></td> | <tt>.hex</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.hexlc</tt></td> | <tt>.hexlc</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.hexuc</tt></td> | <tt>.hexuc</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.base10</tt></td> | <tt>.base10</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.printf</tt></td> | <tt>.printf</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.json</tt></td> | <tt>.json</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left"> | <td align="left"> | |||
<tt>.join</tt></td> | <tt>.join</tt></td> | |||
<td align="left">[RFC-XXXX]</td> | <td align="left">RFC 9741</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section removeInRFC="true" anchor="implementation-status"> | ||||
<name>Implementation Status</name> | ||||
<!-- RFC7942 --> | ||||
<t>In the CDDL tool described in <xref section="F" sectionFormat="of" target="RF | ||||
C8610"/>, | ||||
the control operators defined in the present revision of this | ||||
specification are implemented as of version 0.10.4.</t> | ||||
</section> | ||||
<section anchor="security-considerations"> | <section anchor="security-considerations"> | |||
<name>Security considerations</name> | <name>Security Considerations</name> | |||
<t>The security considerations in <xref section="5" sectionFormat="of" tar | ||||
get="RFC8610"/> apply, as well as those | <!-- [rfced] How may we update "Section 5 of [RFC8610] apply, as well as those i | |||
in <xref section="12" sectionFormat="of" target="RFC4648"/> for the control oper | n | |||
ators defined in <xref target="base"/>.</t> | Section 12 of [RFC4648]" for clarity? | |||
Original: | ||||
The security considerations in Section 5 of [RFC8610] apply, as well | ||||
as those in Section 12 of [RFC4648] for the control operators defined | ||||
in Section 2.1. | ||||
Perhaps: | ||||
The security considerations in Section 5 of [RFC8610] apply. In addition, | ||||
the security considerations | ||||
in Section 12 of [RFC4648] apply for the control operators defined | ||||
in Section 2.1. | ||||
--> | ||||
<t>The security considerations in <xref section="5" sectionFormat="of" | ||||
target="RFC8610"/> apply, as well as those in <xref section="12" | ||||
sectionFormat="of" target="RFC4648"/> for the control operators defined | ||||
in <xref target="base"/>.</t> | ||||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references anchor="sec-combined-references"> | <references anchor="sec-combined-references"> | |||
<name>References</name> | <name>References</name> | |||
<references anchor="sec-normative-references"> | <references anchor="sec-normative-references"> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<referencegroup anchor="STD90" target="https://www.rfc-editor.org/info/s | ||||
td90"> | <!-- [rfced] The following reference is withdrawn (see | |||
<reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rf | https://www.iso.org/standard/74528.html), and a new version is available | |||
c8259"> | (see https://www.iso.org/standard/82075.html). Would you like to cite the | |||
<front> | updated version? If so, is the web archive link provided in the | |||
<title>The JavaScript Object Notation (JSON) Data Interchange Form | annotation element still applicable? If we update to a new version, | |||
at</title> | please verify that "Section 7.21.6.1 of [C]" and the paragraph pointers | |||
<author fullname="T. Bray" initials="T." role="editor" surname="Br | in Section 3.3 are still correct. | |||
ay"/> | ||||
<date month="December" year="2017"/> | Original: | |||
<abstract> | [C] International Organization for Standardization, | |||
<t>JavaScript Object Notation (JSON) is a lightweight, text-base | "Information technology - Programming languages - C", | |||
d, language-independent data interchange format. It was derived from the ECMAScr | Fourth Edition, ISO/IEC 9899:2018, June 2018, | |||
ipt Programming Language Standard. JSON defines a small set of formatting rules | <https://www.iso.org/standard/74528.html>. Technically | |||
for the portable representation of structured data.</t> | equivalent specification text is available at | |||
<t>This document removes inconsistencies with other specificatio | https://web.archive.org/web/20181230041359if_/ | |||
ns of JSON, repairs specification errors, and offers experience-based interopera | http://www.open- std.org/jtc1/sc22/wg14/www/abq/ | |||
bility guidance.</t> | c17_updated_proposed_fdis.pdf | |||
</abstract> | (https://web.archive.org/web/20181230041359if_/ | |||
</front> | http://www.open- std.org/jtc1/sc22/wg14/www/abq/ | |||
<seriesInfo name="STD" value="90"/> | c17_updated_proposed_fdis.pdf) | |||
<seriesInfo name="RFC" value="8259"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8259"/> | Perhaps: | |||
</reference> | [C] International Organization for Standardization, | |||
</referencegroup> | "Information technology - Programming languages - C", | |||
<referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/s | Edition 5, ISO/IEC 9899:2024, October 2024, | |||
td94"> | <https://www.iso.org/standard/82075.html>. Technically | |||
<reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rf | equivalent specification text is available at | |||
c8949"> | <https://web.archive.org/web/20181230041359if_/ | |||
<front> | http://www.open-std.org/jtc1/sc22/wg14/www/abq/ | |||
<title>Concise Binary Object Representation (CBOR)</title> | c17_updated_proposed_fdis.pdf>. | |||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | --> | |||
<author fullname="P. Hoffman" initials="P." surname="Hoffman"/> | ||||
<date month="December" year="2020"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml9/reference.STD.94.xml"/ | |||
<abstract> | > | |||
<t>The Concise Binary Object Representation (CBOR) is a data for | <xi:include href="https://bib.ietf.org/public/rfc/bibxml9/reference.STD.90.xml"/ | |||
mat whose design goals include the possibility of extremely small code size, fai | > | |||
rly small message size, and extensibility without the need for version negotiati | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
on. These design goals make it different from earlier binary serializations such | 610.xml"/> | |||
as ASN.1 and MessagePack.</t> | ||||
<t>This document obsoletes RFC 7049, providing editorial improve | ||||
ments, new details, and errata fixes while keeping full compatibility with the i | ||||
nterchange format of RFC 7049. It does not create a new version of the format.</ | ||||
t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="94"/> | ||||
<seriesInfo name="RFC" value="8949"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8949"/> | ||||
</reference> | ||||
</referencegroup> | ||||
<reference anchor="RFC8610"> | ||||
<front> | ||||
<title>Concise Data Definition Language (CDDL): A Notational Convent | ||||
ion to Express Concise Binary Object Representation (CBOR) and JSON Data Structu | ||||
res</title> | ||||
<author fullname="H. Birkholz" initials="H." surname="Birkholz"/> | ||||
<author fullname="C. Vigano" initials="C." surname="Vigano"/> | ||||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | ||||
<date month="June" year="2019"/> | ||||
<abstract> | ||||
<t>This document proposes a notational convention to express Conci | ||||
se Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal | ||||
is to provide an easy and unambiguous way to express structures for protocol me | ||||
ssages and data formats that use CBOR or JSON.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8610"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8610"/> | ||||
</reference> | ||||
<reference anchor="IANA.cddl" target="https://www.iana.org/assignments/c ddl"> | <reference anchor="IANA.cddl" target="https://www.iana.org/assignments/c ddl"> | |||
<front> | <front> | |||
<title>Concise Data Definition Language (CDDL)</title> | <title>Concise Data Definition Language (CDDL)</title> | |||
<author> | <author> | |||
<organization>IANA</organization> | <organization>IANA</organization> | |||
</author> | </author> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="RFC9165"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
<front> | 165.xml"/> | |||
<title>Additional Control Operators for the Concise Data Definition | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
Language (CDDL)</title> | 648.xml"/> | |||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
<date month="December" year="2021"/> | 285.xml"/> | |||
<abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
<t>The Concise Data Definition Language (CDDL), standardized in RF | 485.xml"/> | |||
C 8610, provides "control operators" as its main language extension point.</t> | ||||
<t>The present document defines a number of control operators that | ||||
were not yet ready at the time RFC 8610 was completed:.plus,.cat, and.det for t | ||||
he construction of constants;.abnf/.abnfb for including ABNF (RFC 5234 and RFC 7 | ||||
405) in CDDL specifications; and.feature for indicating the use of a non-basic f | ||||
eature in an instance.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9165"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9165"/> | ||||
</reference> | ||||
<reference anchor="RFC4648"> | ||||
<front> | ||||
<title>The Base16, Base32, and Base64 Data Encodings</title> | ||||
<author fullname="S. Josefsson" initials="S." surname="Josefsson"/> | ||||
<date month="October" year="2006"/> | ||||
<abstract> | ||||
<t>This document describes the commonly used base 64, base 32, and | ||||
base 16 encoding schemes. It also discusses the use of line-feeds in encoded da | ||||
ta, use of padding in encoded data, use of non-alphabet characters in encoded da | ||||
ta, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRA | ||||
CK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4648"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4648"/> | ||||
</reference> | ||||
<reference anchor="RFC9285"> | ||||
<front> | ||||
<title>The Base45 Data Encoding</title> | ||||
<author fullname="P. Fältström" initials="P." surname="Fältström"/> | ||||
<author fullname="F. Ljunggren" initials="F." surname="Ljunggren"/> | ||||
<author fullname="D.W. van Gulik" initials="D.W." surname="van Gulik | ||||
"/> | ||||
<date month="August" year="2022"/> | ||||
<abstract> | ||||
<t>This document describes the Base45 encoding scheme, which is bu | ||||
ilt upon the Base64, Base32, and Base16 encoding schemes.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9285"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9285"/> | ||||
</reference> | ||||
<reference anchor="RFC9485"> | ||||
<front> | ||||
<title>I-Regexp: An Interoperable Regular Expression Format</title> | ||||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | ||||
<author fullname="T. Bray" initials="T." surname="Bray"/> | ||||
<date month="October" year="2023"/> | ||||
<abstract> | ||||
<t>This document specifies I-Regexp, a flavor of regular expressio | ||||
n that is limited in scope with the goal of interoperation across many different | ||||
regular expression libraries.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9485"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9485"/> | ||||
</reference> | ||||
<reference anchor="C" target="https://www.iso.org/standard/74528.html"> | <reference anchor="C" target="https://www.iso.org/standard/74528.html"> | |||
<front> | <front> | |||
<title>Information technology — Programming languages — C</title> | <title>Information technology - Programming languages - C</title> | |||
<author> | <author> | |||
<organization>International Organization for Standardization</orga nization> | <organization>International Organization for Standardization</orga nization> | |||
</author> | </author> | |||
<date year="2018" month="June"/> | <date year="2018" month="June"/> | |||
</front> | </front> | |||
<seriesInfo name="ISO/IEC" value="9899:2018"/> | <seriesInfo name="ISO/IEC" value="9899:2018"/> | |||
<annotation> <!-- work around broken annotation content model --> | <annotation>Technically equivalent specification text is available at | |||
Technically equivalent specification text is available at <eref target="https:// | <eref target="https://web.archive.org/web/20181230041359if_/http://www.open-std. | |||
web.archive.org/web/20181230041359if_/http://www.open-std.org/jtc1/sc22/wg14/www | org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf" brackets="angle"/>.</a | |||
/abq/c17_updated_proposed_fdis.pdf">https://web.archive.org/web/20181230041359if | nnotation> | |||
_/http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf</ | ||||
eref></annotation> | ||||
<refcontent>Fourth Edition</refcontent> | <refcontent>Fourth Edition</refcontent> | |||
</reference> | </reference> | |||
<referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/b | ||||
cp14"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rf | .2119.xml"/> | |||
c2119"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC | |||
<front> | .8174.xml"/> | |||
<title>Key words for use in RFCs to Indicate Requirement Levels</t | ||||
itle> | ||||
<author fullname="S. Bradner" initials="S." surname="Bradner"/> | ||||
<date month="March" year="1997"/> | ||||
<abstract> | ||||
<t>In many standards track documents several words are used to s | ||||
ignify the requirements in the specification. These words are often capitalized. | ||||
This document defines these words as they should be interpreted in IETF documen | ||||
ts. This document specifies an Internet Best Current Practices for the Internet | ||||
Community, and requests discussion and suggestions for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="2119"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rf | ||||
c8174"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ | ||||
title> | ||||
<author fullname="B. Leiba" initials="B." surname="Leiba"/> | ||||
<date month="May" year="2017"/> | ||||
<abstract> | ||||
<t>RFC 2119 specifies common key words that may be used in proto | ||||
col specifications. This document aims to reduce the ambiguity by clarifying tha | ||||
t only UPPERCASE usage of the key words have the defined special meanings.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
</reference> | ||||
</referencegroup> | ||||
</references> | </references> | |||
<references anchor="sec-informative-references"> | <references anchor="sec-informative-references"> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<reference anchor="RFC7464"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
<front> | 464.xml"/> | |||
<title>JavaScript Object Notation (JSON) Text Sequences</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
<author fullname="N. Williams" initials="N." surname="Williams"/> | 493.xml"/> | |||
<date month="February" year="2015"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
<abstract> | 090.xml"/> | |||
<t>This document describes the JavaScript Object Notation (JSON) t | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
ext sequence format and associated media type "application/json-seq". A JSON tex | 951.xml"/> | |||
t sequence consists of any number of JSON texts, all encoded in UTF-8, each pref | ||||
ixed by an ASCII Record Separator (0x1E), and each ending with an ASCII Line Fee | ||||
d character (0x0A).</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7464"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7464"/> | ||||
</reference> | ||||
<reference anchor="RFC7493"> | ||||
<front> | ||||
<title>The I-JSON Message Format</title> | ||||
<author fullname="T. Bray" initials="T." role="editor" surname="Bray | ||||
"/> | ||||
<date month="March" year="2015"/> | ||||
<abstract> | ||||
<t>I-JSON (short for "Internet JSON") is a restricted profile of J | ||||
SON designed to maximize interoperability and increase confidence that software | ||||
can process it successfully with predictable results.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7493"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7493"/> | ||||
</reference> | ||||
<reference anchor="RFC9090"> | ||||
<front> | ||||
<title>Concise Binary Object Representation (CBOR) Tags for Object I | ||||
dentifiers</title> | ||||
<author fullname="C. Bormann" initials="C." surname="Bormann"/> | ||||
<date month="July" year="2021"/> | ||||
<abstract> | ||||
<t>The Concise Binary Object Representation (CBOR), defined in RFC | ||||
8949, is a data format whose design goals include the possibility of extremely | ||||
small code size, fairly small message size, and extensibility without the need f | ||||
or version negotiation.</t> | ||||
<t>This document defines CBOR tags for object identifiers (OIDs) a | ||||
nd is the reference document for the IANA registration of the CBOR tags so defin | ||||
ed.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9090"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9090"/> | ||||
</reference> | ||||
<reference anchor="RFC7951"> | ||||
<front> | ||||
<title>JSON Encoding of Data Modeled with YANG</title> | ||||
<author fullname="L. Lhotka" initials="L." surname="Lhotka"/> | ||||
<date month="August" year="2016"/> | ||||
<abstract> | ||||
<t>This document defines encoding rules for representing configura | ||||
tion data, state data, parameters of Remote Procedure Call (RPC) operations or a | ||||
ctions, and notifications defined using YANG as JavaScript Object Notation (JSON | ||||
) text.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7951"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7951"/> | ||||
</reference> | ||||
</references> | </references> | |||
</references> | </references> | |||
<?line 462?> | ||||
<!-- [rfced] FYI - We updated the format of the entries under "List of | ||||
Figures" and "List of Tables". | ||||
--> | ||||
<section numbered="false" anchor="list-of-figures"> | <section numbered="false" anchor="list-of-figures"> | |||
<name>List of Figures</name> | <name>List of Figures</name> | |||
<ol spacing="normal" type="1"><li> | ||||
<t><xref target="fig-join-example">Using the .join operator to build d | <t><xref target="fig-join-example"/>: <xref target="fig-join-example" | |||
otted-decimal IPv4 addresses</xref></t> | format="title"></xref></t> | |||
</li> | ||||
</ol> | ||||
</section> | </section> | |||
<section numbered="false" anchor="list-of-tables"> | <section numbered="false" anchor="list-of-tables-TEST6"> | |||
<name>List of Tables</name> | <name>List of Tables</name> | |||
<ol spacing="normal" type="1"><li> | ||||
<t><xref target="tbl-new">Summary of New Control Operators in this Doc | <t><xref target="tbl-new"></xref>: <xref target="tbl-new" format="titl | |||
ument</xref></t> | e"></xref></t> | |||
</li> | ||||
<li> | <t><xref target="tbl-text-conv"></xref>: <xref target="tbl-text-conv" | |||
<t><xref target="tbl-text-conv">Control Operators for Text Conversion | format="title"></xref></t> | |||
of Byte Strings</xref></t> | ||||
</li> | <t><xref target="tbl-num"></xref>: <xref target="tbl-num" format="titl | |||
<li> | e"></xref></t> | |||
<t><xref target="tbl-num">Control Operator for Text Conversion of Inte | ||||
gers</xref></t> | <t><xref target="tbl-printf"></xref>: <xref target="tbl-printf" | |||
</li> | format="title"></xref></t> | |||
<li> | ||||
<t><xref target="tbl-printf">Control Operator for Printf-formatting of | <t><xref target="tbl-json"></xref>: <xref target="tbl-json" format="ti | |||
Data Item(s)</xref></t> | tle"></xref></t> | |||
</li> | ||||
<li> | <t><xref target="tbl-join"></xref>: <xref target="tbl-join" format="ti | |||
<t><xref target="tbl-json">Control Operator for Text Conversion of JSO | tle"></xref></t> | |||
N Values</xref></t> | ||||
</li> | <t><xref target="tbl-iana-reqs"></xref>: <xref target="tbl-iana-reqs" | |||
<li> | format="title"></xref></t> | |||
<t><xref target="tbl-join">Control Operator for Text Generation from A | ||||
rrays</xref></t> | ||||
</li> | ||||
<li> | ||||
<t><xref target="tbl-iana-reqs">New Control Operators To Be Registered | ||||
</xref></t> | ||||
</li> | ||||
</ol> | ||||
</section> | </section> | |||
<section numbered="false" anchor="acknowledgements"> | <section numbered="false" anchor="acknowledgements"> | |||
<name>Acknowledgements</name> | <name>Acknowledgements</name> | |||
<t><contact fullname="Henk Birkholz"/> suggested the need for many of the | <t><contact fullname="Henk Birkholz"/> suggested the need for many of | |||
control operators | the control operators defined here. The author would like to thank | |||
defined here. | <contact fullname="Laurence Lundblade"/> and <contact fullname="Jeremy | |||
The author would like to thank | O'Donoghue"/> for sharpening some of the mandates, <contact | |||
<contact fullname="Laurence Lundblade"/> and <contact fullname="Jeremy O'Donoghu | fullname="Mikolai Gütschow"/> for improvements to some examples, | |||
e"/> for sharpening some of | <contact fullname="A.J. Stein"/> for serving as shepherd for this | |||
the mandates, | document and for his shepherd review, the IESG and Directorate reviewers | |||
<contact fullname="Mikolai Gütschow"/> for improvements to some examples, | (notably <contact fullname="Ari Keränen"/>, <contact fullname="Darrel | |||
<contact fullname="A.J. Stein"/> for serving as shepherd for this document and f | Miller"/>, and <contact fullname="Éric Vyncke"/>), and <contact | |||
or his | fullname="Orie Steele"/> for serving as responsible AD and for providing | |||
shepherd review, | a detailed AD review.</t> | |||
the IESG and Directorate reviewers (notably | ||||
<contact fullname="Ari Keränen"/>, | ||||
<contact fullname="Darrel Miller"/>, | ||||
and | ||||
<contact fullname="Éric Vyncke"/>), | ||||
and <contact fullname="Orie Steele"/> for serving as responsible AD and for prov | ||||
iding a | ||||
detailed AD review.</t> | ||||
</section> | </section> | |||
</back> | </back> | |||
<!-- ##markdown-source: | ||||
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 | ||||
<!-- [rfced] Terminology | ||||
a) We note inconsistencies in the terms below throughout the text. Should | ||||
these be uniform? If so, please let us know which form is preferred. | ||||
Printf-style formatting vs. Printf-formatting | ||||
base32/hex vs. base32(/hex) vs. base32hex | ||||
base-ten vs. base10 | ||||
b) In Table 2, would you like to lowercase "Base*" for consistency with usage | ||||
in the rest of the document? Or was the capitalization intentional here? | ||||
--> | ||||
<!-- [rfced] Please review the "Inclusive Language" portion of the online | ||||
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. Updates of this nature typically | ||||
result in more precise language, which is helpful for readers. | ||||
Note that our script did not flag any words in particular, but this should | ||||
still be reviewed as a best practice. | ||||
--> | --> | |||
</rfc> | </rfc> | |||
End of changes. 90 change blocks. | ||||
647 lines changed or deleted | 563 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |