On Tue, Sep 6, 2016 at 11:11 AM, Phil Shafer <p...@juniper.net> wrote:

> Juergen Schoenwaelder writes:
> >On Tue, Sep 06, 2016 at 02:50:19AM +0000, Sterne, Jason (Nokia - CA)
> wrote:
> >> I did manage to find some older posts about empty types in keys. It
> >> seems that perhaps YANG 1.1 allows them but they are not actually
> >> useful.
> >Yes. Note that there are other constructs that are legal but not
> >useful (a list key leaf with a type that only allows a single value
> >is very close to list key leaf of type empty).
>
> No, a missing key is worse, since the spec requires that all keys
> must appear (7.8.6: 'If all keys are not specified for a list entry,
> a "missing-element" error is returned.' Also 8.3.1).  A key that
> only allows a single value may be useless, but it makes data that
> can be consistently manipulated.  Is there a change in 7950 for
> handling these?
>
> In a similar node, while looking in 7950 for a such a rule, I saw the
> following in 9.13.4:
>
>      /* instance-identifier for a list entry where the second
>         key ("enabled") is of type "empty" */
>      /ex:system/ex:service[ex:name='foo'][ex:enabled='']
>
> But XPath says (4.2):
>
>     A node-set is converted to a string by returning the string-value
>     of the node in the node-set that is first in document order.
>     If the node-set is empty, an empty string is returned.
>
> So if no <ex:enabled> elements are present, then the expression
> ex:enabled selects an empty node set, and the string comparison
> forces a conversion to type string, which generates an empty string.
> Unless I'm off, the line should be fixed to avoid the string
> conversion:
>
>          /ex:system/ex:service[ex:name='foo'][ex:enabled]
>
> and a negation should be:
>
>          /ex:system/ex:service[ex:name='foo'][not(ex:enabled)]
>
>
There is only one value provided by type empty.  The 2nd instance
identifier is invalid.
There is no instance possible that does not include the 'enabled' leaf.

I added a section on this issue in the latest 6087bis draft:

https://tools.ietf.org/html/draft-ietf-netmod-rfc6087bis-08#section-5.11.5

I think we had it right in YANG 1.0.
Using a key of type empty is utterly pointless unless the point
is to make the instance identifier longer.



> Thanks,
>  Phil
>


Andy


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

Reply via email to