On Tue, May 24, 2016 at 12:13:04PM +0200, Martin Bjorklund wrote:
> Juergen Schoenwaelder <j.schoenwael...@jacobs-university.de> wrote:
> > On Tue, May 24, 2016 at 10:33:29AM +0200, Martin Bjorklund wrote:
> > > Juergen Schoenwaelder <j.schoenwael...@jacobs-university.de> wrote:
> > > > On Mon, May 23, 2016 at 05:29:42PM +0200, Ladislav Lhotka wrote:
> > > > 
> > > > [...]
> > > >  
> > > > > This mixes up paths in the data tree with those in the schema tree. 
> > > > > The XPath expression in the "path" statement is evaluated in the 
> > > > > context of a data tree, but if the result is an empty node set, then 
> > > > > "this leaf node" makes no sense.
> > > > > 
> > > > > A specific example:
> > > > > 
> > > > > leaf fooref {
> > > > >   type leafref {
> > > > >     path "../foo";
> > > > >     require-instance false;
> > > > >   }
> > > > > }
> > > > > 
> > > > > leaf foo {
> > > > >   type uint8;
> > > > >   when "../bar < 42";
> > > > > }
> > > > > 
> > > > > leaf bar {   
> > > > >   type uint8;
> > > > >   default 100;
> > > > > }
> > > > > 
> > > > > If there is neither "foo" nor "bar" in the data tree, what is the 
> > > > > value space of "fooref"?
> > > > >
> > > > 
> > > > Hm. Is it not both? The path refers to a schema node in order to
> > > > determine the base type (which is the base value set if
> > > > require-instance is false). If require-instance is true, then there is
> > > > an additional constraint that refers to a set of data nodes that
> > > > essentially determine a (possibly empty) subset of the value space.
> > > > 
> > > > If you agree with this, then we essentially have to phrase this
> > > > clearly.
> > > 
> > > Exactly.  My proposal was:
> > > 
> > > OLD:
> > > 
> > >    The leafref type is used to declare a constraint on the value space
> > >    of a leaf, based on a reference to a set of leaf instances in the
> > >    data tree.  The "path" substatement (Section 9.9.2) selects a set of
> > >    leaf instances, and the leafref value space is the set of values of
> > >    these leaf instances.
> > > 
> > >    If the leaf with the leafref type represents configuration data, and
> > >    the "require-instance" property (Section 9.9.3) is "true", the leaf
> > >    it refers to MUST also represent configuration.  Such a leaf puts a
> > >    constraint on valid data.  All such nodes MUST reference existing
> > >    leaf instances or leafs with default values in use (see Section 7.6.1
> > >    and Section 7.7.2) for the data to be valid.  This constraint is
> > >    enforced according to the rules in Section 8.
> > > 
> > > NEW:
> > > 
> > >    The leafref type is used to declare a constraint on the value space
> > >    of a leaf, based on a reference to a set of leaf instances in the
> > >    data tree.  The "path" substatement (Section 9.9.2) is used to refer
> > >    to another leaf node.  The leafref value space is the value space of
> > >    this leaf node.
> > > 
> > >    If the "require-instance" property is "true", there MUST exist an
> > >    instance, or a leaf with a default value in use (see Section 7.6.1
> > >    and Section 7.7.2), of the leaf being referred to with the same value
> > >    as the leafref value in a valid data tree.
> > > 
> > >    If the leaf with the leafref type represents configuration data, and
> > >    the "require-instance" property (Section 9.9.3) is "true", the leaf
> > >    it refers to MUST also represent configuration.
> > > 
> > > 
> > > Please comment and/or suggest improvements to this proposal.
> > >
> > 
> > I will give it a try. I think it is helpful to define referring node
> > and referred node
> 
> Ok.
> 
> > and I think it is useful to first state the purpose
> > of the leafref type.
> > 
> >   The leafref type is restricted to the value set of some leaf node in
> >   the schema tree and optionally further restricted by corresponding
> >   instance nodes in the data tree. More precisely, the leafref type
> >   declares a constraint on the value space of a leaf node (the
> >   referring leaf node), based on a reference to a another leaf node in
> >   the schema tree (the referred leaf node). The "path" substatement
> >   (Section 9.9.2) is used to identify the referred leaf node in the
> >   schema tree. The value set of the referring leaf node is the value
> >   set of the referred leaf node if the "require-instance" property is
> >   "false".
> 
> Maybe remove the second sentence.  Also s/value set/value space/.
> Also the last sentence isn't correct; the value space is always the
> value space of the referred node.
> 
> >   If the "require-instance" property is "true", there MUST exist an node
> >   in the data tree, or a node with a default value in use (see Section
> >   7.6.1 and Section 7.7.2), of the referred schema tree leaf node with
> >   the same value as the leafref value in a valid data tree.
> > 
> >   If the referring leaf node represents configuration data, and the
> >   "require-instance" property (Section 9.9.3) is "true", the referred
> >   leaf node MUST also represent configuration.
> 
> Also, the text needs to mention leaf-lists.  This gives:
> 
> 
>   The leafref type is restricted to the value space of some leaf or
>   leaf-list node in the schema tree and optionally further restricted
>   by corresponding instance nodes in the data tree.  The "path"
>   substatement (Section 9.9.2) is used to identify the referred leaf
>   or leaf-list node in the schema tree. The value space of the
>   referring node is the value space of the referred node.
> 
>   If the "require-instance" property is "true", there MUST exist an
>   node in the data tree, or a node with a default value in use (see
>   Section 7.6.1 and Section 7.7.2), of the referred schema tree leaf
>   or leaf-list node with the same value as the leafref value in a
>   valid data tree.
> 
>   If the referring node represents configuration data, and the
>   "require-instance" property (Section 9.9.3) is "true", the referred
>   node MUST also represent configuration.
>

Works for me.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to