draft-ietf-netmod-yang-json-01.txt | draft-ietf-netmod-yang-json-02.txt | |||
---|---|---|---|---|
NETMOD Working Group L. Lhotka | NETMOD Working Group L. Lhotka | |||
Internet-Draft CZ.NIC | Internet-Draft CZ.NIC | |||
Intended status: Standards Track October 13, 2014 | Intended status: Standards Track November 27, 2014 | |||
Expires: April 16, 2015 | Expires: May 31, 2015 | |||
JSON Encoding of Data Modeled with YANG | JSON Encoding of Data Modeled with YANG | |||
draft-ietf-netmod-yang-json-01 | draft-ietf-netmod-yang-json-02 | |||
Abstract | Abstract | |||
This document defines encoding rules for representing configuration, | This document defines encoding rules for representing configuration, | |||
state data, RPC input and output parameters, and notifications | state data, RPC input and output parameters, and notifications | |||
defined using YANG as JavaScript Object Notation (JSON) text. | defined using YANG as JavaScript Object Notation (JSON) text. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
skipping to change at page 1, line 32 | skipping to change at page 1, line 32 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 16, 2015. | This Internet-Draft will expire on May 31, 2015. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 18 | skipping to change at page 2, line 18 | |||
2. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 | 2. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 | |||
3. Validation of JSON-encoded | 3. Validation of JSON-encoded | |||
Instance Data . . . . . . . . . . . . . . . . . . . . . . . . 3 | Instance Data . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
4. Names and Namespaces . . . . . . . . . . . . . . . . . . . . 4 | 4. Names and Namespaces . . . . . . . . . . . . . . . . . . . . 4 | |||
5. Encoding of YANG Data Node Instances . . . . . . . . . . . . 6 | 5. Encoding of YANG Data Node Instances . . . . . . . . . . . . 6 | |||
5.1. The "leaf" Data Node . . . . . . . . . . . . . . . . . . 6 | 5.1. The "leaf" Data Node . . . . . . . . . . . . . . . . . . 6 | |||
5.2. The "container" Data Node . . . . . . . . . . . . . . . . 7 | 5.2. The "container" Data Node . . . . . . . . . . . . . . . . 7 | |||
5.3. The "leaf-list" Data Node . . . . . . . . . . . . . . . . 7 | 5.3. The "leaf-list" Data Node . . . . . . . . . . . . . . . . 7 | |||
5.4. The "list" Data Node . . . . . . . . . . . . . . . . . . 7 | 5.4. The "list" Data Node . . . . . . . . . . . . . . . . . . 7 | |||
5.5. The "anyxml" Data Node . . . . . . . . . . . . . . . . . 8 | 5.5. The "anyxml" Data Node . . . . . . . . . . . . . . . . . 8 | |||
6. The Mapping of YANG Datatypes to JSON Values . . . . . . . . 8 | 6. The Mapping of YANG Data Types to JSON Values . . . . . . . . 9 | |||
6.1. Numeric Datatypes . . . . . . . . . . . . . . . . . . . . 9 | 6.1. Numeric Types . . . . . . . . . . . . . . . . . . . . . . 9 | |||
6.2. The "string" Type . . . . . . . . . . . . . . . . . . . . 9 | 6.2. The "string" Type . . . . . . . . . . . . . . . . . . . . 9 | |||
6.3. The "boolean" Type . . . . . . . . . . . . . . . . . . . 9 | 6.3. The "boolean" Type . . . . . . . . . . . . . . . . . . . 9 | |||
6.4. The "enumeration" Type . . . . . . . . . . . . . . . . . 9 | 6.4. The "enumeration" Type . . . . . . . . . . . . . . . . . 9 | |||
6.5. The "bits" Type . . . . . . . . . . . . . . . . . . . . . 9 | 6.5. The "bits" Type . . . . . . . . . . . . . . . . . . . . . 9 | |||
6.6. The "binary" Type . . . . . . . . . . . . . . . . . . . . 9 | 6.6. The "binary" Type . . . . . . . . . . . . . . . . . . . . 10 | |||
6.7. The "leafref" Type . . . . . . . . . . . . . . . . . . . 10 | 6.7. The "leafref" Type . . . . . . . . . . . . . . . . . . . 10 | |||
6.8. The "identityref" Type . . . . . . . . . . . . . . . . . 10 | 6.8. The "identityref" Type . . . . . . . . . . . . . . . . . 10 | |||
6.9. The "empty" Type . . . . . . . . . . . . . . . . . . . . 10 | 6.9. The "empty" Type . . . . . . . . . . . . . . . . . . . . 11 | |||
6.10. The "union" Type . . . . . . . . . . . . . . . . . . . . 11 | 6.10. The "union" Type . . . . . . . . . . . . . . . . . . . . 11 | |||
6.11. The "instance-identifier" Type . . . . . . . . . . . . . 11 | 6.11. The "instance-identifier" Type . . . . . . . . . . . . . 12 | |||
7. I-JSON Compliance . . . . . . . . . . . . . . . . . . . . . . 12 | 7. I-JSON Compliance . . . . . . . . . . . . . . . . . . . . . . 12 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 14 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 14 | 10.2. Informative References . . . . . . . . . . . . . . . . . 14 | |||
Appendix A. A Complete Example . . . . . . . . . . . . . . . . . 14 | Appendix A. A Complete Example . . . . . . . . . . . . . . . . . 15 | |||
Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 16 | Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 17 | |||
B.1. Changes Between Revisions -00 and -01 . . . . . . . . . . 16 | B.1. Changes Between Revisions -01 and -02 . . . . . . . . . . 17 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 17 | B.2. Changes Between Revisions -00 and -01 . . . . . . . . . . 17 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 18 | ||||
1. Introduction | 1. Introduction | |||
The NETCONF protocol [RFC6241] uses XML [W3C.REC-xml-20081126] for | The NETCONF protocol [RFC6241] uses XML [W3C.REC-xml-20081126] for | |||
encoding data in its Content Layer. Other management protocols might | encoding data in its Content Layer. Other management protocols might | |||
want to use other encodings while still benefiting from using YANG | want to use other encodings while still benefiting from using YANG | |||
[RFC6020] as the data modeling language. | [RFC6020] as the data modeling language. | |||
For example, the RESTCONF protocol [I-D.ietf-netconf-restconf] | For example, the RESTCONF protocol [I-D.ietf-netconf-restconf] | |||
supports two encodings: XML (media type "application/yang.data+xml") | supports two encodings: XML (media type "application/yang.data+xml") | |||
skipping to change at page 6, line 37 | skipping to change at page 6, line 37 | |||
Character encoding MUST be UTF-8. | Character encoding MUST be UTF-8. | |||
Any data node instance is encoded as a name/value pair where the name | Any data node instance is encoded as a name/value pair where the name | |||
is formed from the data node identifier using the rules of Section 4. | is formed from the data node identifier using the rules of Section 4. | |||
The value depends on the category of the data node as explained in | The value depends on the category of the data node as explained in | |||
the following subsections. | the following subsections. | |||
5.1. The "leaf" Data Node | 5.1. The "leaf" Data Node | |||
A leaf instance is encoded as a name/value pair where the value can | A leaf instance is encoded as a name/value pair where the value can | |||
be a string, number, literal 'true' or 'false' or the special array | be a string, number, literal "true" or "false", or the special array | |||
'[null]', depending on the type of the leaf (see Section 6 for the | "[null]", depending on the type of the leaf (see Section 6 for the | |||
type encoding rules). | type encoding rules). | |||
Example: For the leaf node definition | Example: For the leaf node definition | |||
leaf foo { | leaf foo { | |||
type uint8; | type uint8; | |||
} | } | |||
the following is a valid JSON-encoded instance: | the following is a valid JSON-encoded instance: | |||
skipping to change at page 7, line 27 | skipping to change at page 7, line 27 | |||
the following is a valid instance: | the following is a valid instance: | |||
"bar": { | "bar": { | |||
"foo": 123 | "foo": 123 | |||
} | } | |||
5.3. The "leaf-list" Data Node | 5.3. The "leaf-list" Data Node | |||
A leaf-list is encoded as a name/array pair, and the array elements | A leaf-list is encoded as a name/array pair, and the array elements | |||
are values whose type depends on the datatype of the leaf-list (see | are values of the same type, which can be a string, number, literal | |||
Section 6). | "true" or "false", or the special array "[null]", depending on the | |||
type of the leaf-list (see Section 6 for the type encoding rules). | ||||
The order of array elements MUST be the same as the order of XML | ||||
elements representing leaf-list entries in the XML encoding. | ||||
Example: For the leaf-list definition | Example: For the leaf-list definition | |||
leaf-list foo { | leaf-list foo { | |||
type uint8; | type uint8; | |||
} | } | |||
the following is a valid instance: | the following is a valid instance: | |||
"foo": [123, 0] | "foo": [123, 0] | |||
5.4. The "list" Data Node | 5.4. The "list" Data Node | |||
A list instance is encoded as a name/array pair, and the array | A list instance is encoded as a name/array pair, and the array | |||
elements are JSON objects. | elements are JSON objects. | |||
The order of array elements MUST be the same as the order of XML | ||||
elements representing list entries in the XML encoding. | ||||
Unlike the XML encoding, where list keys are required to precede any | Unlike the XML encoding, where list keys are required to precede any | |||
other siblings, and to appear in the order specified by the data | other siblings, and to appear in the order specified by the data | |||
model, the order of members within a JSON-encoded list entry is | model, the order of members within a JSON-encoded list entry is | |||
arbitrary because JSON objects are fundamentally unordered | arbitrary because JSON objects are fundamentally unordered | |||
collections of members. | collections of members. | |||
Example: For the list definition | Example: For the list definition | |||
list bar { | list bar { | |||
key foo; | key foo; | |||
leaf foo { | leaf foo { | |||
type uint8; | type uint8; | |||
} | } | |||
leaf baz { | leaf baz { | |||
type string; | type string; | |||
} | } | |||
} | } | |||
skipping to change at page 8, line 22 | skipping to change at page 8, line 31 | |||
} | } | |||
the following is a valid instance: | the following is a valid instance: | |||
"bar": [ | "bar": [ | |||
{ | { | |||
"foo": 123, | "foo": 123, | |||
"baz": "zig" | "baz": "zig" | |||
}, | }, | |||
{ | { | |||
"baz": "zag", | "foo": 0, | |||
"foo": 0 | "baz": "zag" | |||
} | } | |||
] | ] | |||
5.5. The "anyxml" Data Node | 5.5. The "anyxml" Data Node | |||
An anyxml instance is translated to a name/value pair. The value can | An anyxml instance is encoded as a name/value pair. The value can be | |||
be of any valid JSON type, i.e. an object, array, number, string or | of any valid JSON type, i.e. an object, array, number, string or one | |||
any of the literals 'true', 'false' and 'null'. | of the literals "true", "false" and "null". | |||
This document defines no mapping between the contents of JSON- and | This document defines no mapping between the contents of JSON- and | |||
XML-encoded anyxml instances. It is not necessary because anyxml | XML-encoded anyxml instances. Note that the mapping is not needed | |||
contents are not subject to YANG-based validation (see sec. 7.10 in | for the purposes of validation (Section 3) because anyxml contents | |||
are not subject to YANG-based validation (see sec. 7.10 in | ||||
[RFC6020]). | [RFC6020]). | |||
Example: For the anyxml definition | Example: For the anyxml definition | |||
anyxml bar; | anyxml bar; | |||
the following is a valid instance: | the following is a valid instance: | |||
"bar": [true, null, true] | "bar": [true, null, true] | |||
6. The Mapping of YANG Datatypes to JSON Values | 6. The Mapping of YANG Data Types to JSON Values | |||
The type of the JSON value in an instance of the leaf or leaf-list | The type of the JSON value in an instance of the leaf or leaf-list | |||
data node depends on the datatype of that data node as specified in | data node depends on the type of that data node as specified in the | |||
the following subsections. | following subsections. | |||
6.1. Numeric Datatypes | 6.1. Numeric Types | |||
A value of the "int8", "int16", "int32", "uint8", "uint16" is | A value of the "int8", "int16", "int32", "uint8", "uint16" and | |||
represented as a JSON number. | "uint32" is represented as a JSON number. | |||
A value of the "int64", "uint64" or "decimal64" type is encoded as a | A value of the "int64", "uint64" or "decimal64" type is encoded as a | |||
JSON string whose contents is the lexical representation of that | JSON string whose contents is the lexical representation of that | |||
numeric value as specified in sections 9.2.1 and 9.3.1 of [RFC6020]. | numeric value as specified in sections 9.2.1 and 9.3.1 of [RFC6020]. | |||
For example, if the type of the leaf "foo" in Section 5.1 was | For example, if the type of the leaf "foo" in Section 5.1 was | |||
"unit64" instead of "uint8", the instance would have to be encoded as | "uint64" instead of "uint8", the instance would have to be encoded as | |||
"foo": "123" | "foo": "123" | |||
The special handling of 64-bit numbers follows from I-JSON | The special handling of 64-bit numbers follows from I-JSON | |||
recommendation to encode numbers exceeding the IEEE 754-2000 double | recommendation to encode numbers exceeding the IEEE 754-2000 double | |||
precision range as strings, see sec. 2.2 in [I-D.ietf-json-i-json]. | precision range as strings, see sec. 2.2 in [I-D.ietf-json-i-json]. | |||
6.2. The "string" Type | 6.2. The "string" Type | |||
A "string" value encoded as a JSON string, subject to JSON encoding | A "string" value encoded as a JSON string, subject to JSON encoding | |||
rules. | rules. | |||
6.3. The "boolean" Type | 6.3. The "boolean" Type | |||
A "boolean" value is mapped to the corresponding JSON literal name | A "boolean" value is mapped to the corresponding JSON literal name | |||
'true' or 'false'. | "true" or "false". | |||
6.4. The "enumeration" Type | 6.4. The "enumeration" Type | |||
An "enumeration" value is mapped in the same way as a string except | An "enumeration" value is mapped in the same way as a string except | |||
that the permitted values are defined by "enum" statements in YANG. | that the permitted values are defined by "enum" statements in YANG. | |||
See sec. 9.6 in [RFC6020]. | See sec. 9.6 in [RFC6020]. | |||
6.5. The "bits" Type | 6.5. The "bits" Type | |||
A "bits" value is mapped to a JSON string identical to the lexical | A "bits" value is mapped to a JSON string identical to the lexical | |||
skipping to change at page 10, line 45 | skipping to change at page 11, line 7 | |||
A valid instance of the "type" leaf is then encoded as follows: | A valid instance of the "type" leaf is then encoded as follows: | |||
"type": "iana-if-type:ethernetCsmacd" | "type": "iana-if-type:ethernetCsmacd" | |||
The namespace identifier "iana-if-type" must be present in this case | The namespace identifier "iana-if-type" must be present in this case | |||
because the "ethernetCsmacd" identity is not defined in the same | because the "ethernetCsmacd" identity is not defined in the same | |||
module as the "type" leaf. | module as the "type" leaf. | |||
6.9. The "empty" Type | 6.9. The "empty" Type | |||
An "empty" value is mapped to '[null]', i.e., an array with the | An "empty" value is mapped to "[null]", i.e., an array with the | |||
'null' literal being its only element. | "null" literal being its only element. | |||
This encoding was chosen instead of using simply 'null' in order to | This encoding was chosen instead of using simply "null" in order to | |||
facilitate the use of empty leafs in common programming languages. | facilitate the use of empty leafs in common programming languages. | |||
When used in a boolean context, the '[null]' value, unlike 'null', | When used in a boolean context, the "[null]" value, unlike "null", | |||
evaluates to true. | evaluates to true. | |||
Example: For the leaf definition | Example: For the leaf definition | |||
leaf foo { | leaf foo { | |||
type empty; | type empty; | |||
} | } | |||
a valid instance is | a valid instance is | |||
skipping to change at page 11, line 52 | skipping to change at page 12, line 14 | |||
"bar": 13.5 | "bar": 13.5 | |||
In this case, the JSON encoding indicates the value is supposed to be | In this case, the JSON encoding indicates the value is supposed to be | |||
a number rather than string. | a number rather than string. | |||
6.11. The "instance-identifier" Type | 6.11. The "instance-identifier" Type | |||
An "instance-identifier" value is encoded as a string that is | An "instance-identifier" value is encoded as a string that is | |||
analogical to the lexical representation in XML encoding, see | analogical to the lexical representation in XML encoding, see | |||
sec. 9.13.3 in [RFC6020]. The only difference is that XML namespace | sec. 9.13.3 in [RFC6020]. However, the encoding of namespaces in | |||
prefixes used for qualifying node names in the instance-identifier | instance-identifier values follows the rules stated in Section 4, | |||
value are replaced by the corresponding module names according to the | namely: | |||
rules of Section 4. | ||||
Conversely, when translating such a value from JSON to XML, the | o The namespace identifier is the module name where each data node | |||
namespace identifier (YANG module name) in each component of the | is defined. | |||
instance-identifier MUST be replaced by the XML namespace prefix that | ||||
is associated with the namespace URI reference of the module. | ||||
For example, assume "ex" is the prefix associated with the namespace | o The encoding of a node name with an explicit namespace is as shown | |||
URI that is defined in the "example" module. Then the XML-encoded | in Figure 1. | |||
instance-identifier | ||||
/ex:system/ex:user[ex:name='fred'] | o The leftmost (top-level) node name is always prefixed with the | |||
namespace identifier. | ||||
corresponds to the following JSON-encoded instance-identifier: | o Any subsequent node name has the namespace identifier if and only | |||
if its parent node has a different namespace. This also holds for | ||||
node names appearing in predicates. | ||||
/example:system/example:user[example:name='fred'] | For example, | |||
/ietf-interfaces:interfaces/interface[name='eth0']/ietf-ip:ipv4/ip | ||||
is a valid instance-identifer value because the data nodes | ||||
"interfaces", "interface" and "name" are defined in the module "ietf- | ||||
interfaces", whereas "ipv4" and "ip" are defined in "ietf-ip". | ||||
When translating an instance-identifier value from JSON to XML, the | ||||
namespace identifier (YANG module name) in each component of the | ||||
instance-identifier MUST be replaced by an XML namespace prefix that | ||||
is associated with the namespace URI reference of the module in the | ||||
scope of the element containing the instance-identifier value. | ||||
7. I-JSON Compliance | 7. I-JSON Compliance | |||
I-JSON [I-D.ietf-json-i-json] is a restricted profile of JSON that | I-JSON [I-D.ietf-json-i-json] is a restricted profile of JSON that | |||
guarantees maximum interoperability for protocols that use JSON in | guarantees maximum interoperability for protocols that use JSON in | |||
their messages, no matter what JSON encoders/decoders are used in | their messages, no matter what JSON encoders/decoders are used in | |||
protocol implementations. The encoding defined in this document | protocol implementations. The encoding defined in this document | |||
therefore observes the I-JSON requirements and recommendations as | therefore observes the I-JSON requirements and recommendations as | |||
closely as possible. | closely as possible. | |||
skipping to change at page 12, line 50 | skipping to change at page 13, line 23 | |||
o Numbers of any type supported by YANG can be exchanged reliably. | o Numbers of any type supported by YANG can be exchanged reliably. | |||
See Section 6.1 for details. | See Section 6.1 for details. | |||
The only two cases where a JSON instance document encoded according | The only two cases where a JSON instance document encoded according | |||
to this document may deviate from I-JSON were dictated by the need to | to this document may deviate from I-JSON were dictated by the need to | |||
be able to encode the same instance data in both JSON and XML. These | be able to encode the same instance data in both JSON and XML. These | |||
two exceptions are: | two exceptions are: | |||
o Leaf values encoded as strings may contain code points identifying | o Leaf values encoded as strings may contain code points identifying | |||
Noncharacters that belong to the XML character set (see sec. 2.2 | Noncharacters that belong to the XML character set (see sec. 2.2 | |||
in [W3C.REC-xml-20081126]). | in [W3C.REC-xml-20081126]). This issue is likely to be solved in | |||
YANG 1.1 because noncharacters will not be allowed in string | ||||
values, see sec. 9.4 in [I-D.ietf-netmod-rfc6020bis]. | ||||
o Values of the "binary" type are encoded with the base64 encoding | o Values of the "binary" type are encoded with the base64 encoding | |||
scheme (see sec. 9.8.2 in [RFC6020]) whereas I-JSON recommends | scheme (Section 6.6), whereas I-JSON recommends base64url instead. | |||
base64url instead. However, the use of base64 should not cause | Theoretically, values of the "binary" type might appear in URI | |||
any interoperability problems because these values never appear in | references, such as Request-URI in RESTCONF, although in practice | |||
an URL. | the cases where it is really needed should be extremely rare. | |||
8. Security Considerations | 8. Security Considerations | |||
This document defines an alternative encoding for data modeled in the | This document defines an alternative encoding for data modeled in the | |||
YANG data modeling language. As such, it doesn't contribute any new | YANG data modeling language. As such, it doesn't contribute any new | |||
security issues beyond those discussed in sec. 15 of [RFC6020]. | security issues beyond those discussed in sec. 15 of [RFC6020]. | |||
JSON is rather different from XML, and JSON parsers may thus suffer | JSON is rather different from XML, and JSON parsers may thus suffer | |||
from other types of vulnerabilities than their XML counterparts. To | from other types of vulnerabilities than their XML counterparts. To | |||
minimize these security risks, it is important that client and server | minimize these security risks, it is important that client and server | |||
software supporting JSON encoding behaves as required in sec. 3 of | software supporting JSON encoding behaves as required in sec. 3 of | |||
[I-D.ietf-json-i-json]. That is, any received JSON data that violate | [I-D.ietf-json-i-json]. That is, any received JSON data that violate | |||
any of I-JSON strict constraints MUST NOT be trusted nor acted upon. | any of I-JSON strict constraints MUST NOT be trusted nor acted upon. | |||
Violations due to the presence of Unicode Noncharacters in the data | Violations due to the presence of Unicode Noncharacters in the data | |||
exceptions (see Section 7) SHOULD be carefully examined. | (see Section 7) SHOULD be carefully examined. | |||
9. Acknowledgments | 9. Acknowledgments | |||
The author wishes to thank Andy Bierman, Martin Bjorklund, Juergen | The author wishes to thank Andy Bierman, Martin Bjorklund, Balazs | |||
Schoenwaelder and Phil Shafer for their helpful comments and | Lengyel, Juergen Schoenwaelder and Phil Shafer for their helpful | |||
suggestions. | comments and suggestions. | |||
10. References | 10. References | |||
10.1. Normative References | 10.1. Normative References | |||
[I-D.ietf-json-i-json] | [I-D.ietf-json-i-json] | |||
Bray, T., "The I-JSON Message Format", draft-ietf-json- | Bray, T., "The I-JSON Message Format", draft-ietf-json- | |||
i-json-03 (work in progress), August 2014. | i-json-03 (work in progress), August 2014. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
skipping to change at page 14, line 16 | skipping to change at page 14, line 38 | |||
Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and | Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and | |||
F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth | F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth | |||
Edition)", World Wide Web Consortium Recommendation REC- | Edition)", World Wide Web Consortium Recommendation REC- | |||
xml-20081126, November 2008, | xml-20081126, November 2008, | |||
<http://www.w3.org/TR/2008/REC-xml-20081126>. | <http://www.w3.org/TR/2008/REC-xml-20081126>. | |||
10.2. Informative References | 10.2. Informative References | |||
[I-D.ietf-netconf-restconf] | [I-D.ietf-netconf-restconf] | |||
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", draft-ietf-netconf-restconf-02 (work in | Protocol", draft-ietf-netconf-restconf-03 (work in | |||
progress), October 2014. | progress), October 2014. | |||
[I-D.ietf-netmod-rfc6020bis] | ||||
Bjorklund, M., "YANG - A Data Modeling Language for the | ||||
Network Configuration Protocol (NETCONF)", draft-ietf- | ||||
netmod-rfc6020bis-02 (work in progress), November 2014. | ||||
[RFC7223] Bjorklund, M., "A YANG Data Model for Interface | [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | |||
Management", RFC 7223, May 2014. | Management", RFC 7223, May 2014. | |||
[W3C.REC-xpath-19991116] | [W3C.REC-xpath-19991116] | |||
Clark, J. and S. DeRose, "XML Path Language (XPath) | Clark, J. and S. DeRose, "XML Path Language (XPath) | |||
Version 1.0", World Wide Web Consortium Recommendation | Version 1.0", World Wide Web Consortium Recommendation | |||
REC-xpath-19991116, November 1999, | REC-xpath-19991116, November 1999, | |||
<http://www.w3.org/TR/1999/REC-xpath-19991116>. | <http://www.w3.org/TR/1999/REC-xpath-19991116>. | |||
Appendix A. A Complete Example | Appendix A. A Complete Example | |||
skipping to change at page 16, line 37 | skipping to change at page 17, line 20 | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
Appendix B. Change Log | Appendix B. Change Log | |||
RFC Editor: Remove this section upon publication as an RFC. | RFC Editor: Remove this section upon publication as an RFC. | |||
B.1. Changes Between Revisions -00 and -01 | B.1. Changes Between Revisions -01 and -02 | |||
o Encoding of namespaces in instance-identifiers was changed. | ||||
o Text specifying the order of array elements in leaf-list and list | ||||
instances was added. | ||||
B.2. Changes Between Revisions -00 and -01 | ||||
o Metadata encoding was moved to a separate I-D, draft-lhotka- | o Metadata encoding was moved to a separate I-D, draft-lhotka- | |||
netmod-yang-metadata. | netmod-yang-metadata. | |||
o JSON encoding is now defined directly rather than via XML-JSON | o JSON encoding is now defined directly rather than via XML-JSON | |||
mapping. | mapping. | |||
o The rules for namespace encoding has changed. This affect both | o The rules for namespace encoding has changed. This affect both | |||
node instance names and instance-identifiers. | node instance names and instance-identifiers. | |||
End of changes. 38 change blocks. | ||||
63 lines changed or deleted | 98 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |