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/