> On 29 Mar 2017, at 07:43, Bogaert, Bart (Nokia - BE/Antwerp) 
> <bart.boga...@nokia.com> wrote:
> 
> Lada, thanks for the feedback.
> 
> Any specific reason why you say that this would be more efficient when used
> in the context of the parent container and not in the grouping?

As I wrote, the expression is evaluated once for each entry, always with the 
same result. It may or may not be a problem depending on the number of entries.

Lada 

> 
> Regards, Bart
> 
> -----Original Message-----
> From: Ladislav Lhotka [mailto:lho...@nic.cz] 
> Sent: 29 March 2017 14:37
> To: Bogaert, Bart (Nokia - BE/Antwerp) <bart.boga...@nokia.com>; Bogaert,
> Bart (Nokia - BE/Antwerp) <bart.boga...@nokia.com>; netmod@ietf.org
> Subject: Re: [netmod] Question about must statement in grouping
> 
> "Bogaert, Bart (Nokia - BE/Antwerp)" <bart.boga...@nokia.com> writes:
> 
>> Changing "count(.) != 1" into "count(../a-list) != 1" in the grouping 
>> does the job as expected.  So it seems that count(.) within the 
>> context of the a-list applies to each element in the list and rather 
>> than to the list itself?
> 
> Both versions of the XPath expression are evaluated once for each entry of
> the list, and the entry's 'a-list' node is the context node. By definition,
> '.'  selects the context node, so 'count(.)' is always 1. After the change,
> '..' selects the parent node and 'a-list' then selects all nodes of that
> name, which are the entries of the list.
> 
> Note that it would be more efficient to verify the constraint on the parent
> container, with 'count(a-list) != 1'.
> 
> Lada
> 
>> 
>> 
>> 
>> Regards, Bart
>> 
>> 
>> 
>> From: netmod [mailto:netmod-boun...@ietf.org] On Behalf Of Bogaert, 
>> Bart (Nokia - BE/Antwerp)
>> Sent: 29 March 2017 12:47
>> To: netmod@ietf.org
>> Subject: [netmod] Question about must statement in grouping
>> 
>> 
>> 
>> Hi,
>> 
>> 
>> 
>> We have a question on the usage of a must statement within a grouping.
>> 
>> 
>> 
>> Assume the following grouping
>> 
>> 
>> 
>> grouping a-group {
>> 
>>  list a-list {
>> 
>>    must "count(.) != 1" {
>> 
>>      description
>> 
>>        "This list must either be empty or have at least 2 elements";
>> 
>>    }
>> 
>>    key "entry";
>> 
>>    leaf entry {
>> 
>>      type uint16;
>> 
>>    }
>> 
>>    leaf another-entry {
>> 
>>      type uint32;
>> 
>>    }
>> 
>>  }
>> 
>> }
>> 
>> 
>> 
>> And used in another module
>> 
>> 
>> 
>> container a-container {
>> 
>>  uses a-group;
>> 
>> }
>> 
>> 
>> 
>> The uses actually results in a data-tree like below
>> 
>> 
>> 
>>  +--rw a-container
>> 
>>      +--rw a-list* [entry]
>> 
>>           +--rw entry           uint16
>> 
>>           +--rw another-entry   uint32
>> 
>> 
>> 
>> Does the usage of the grouping usage also result in the expected 
>> behavior for the must statement when configuring /a-container/a-list?  
>> The '.' in the must statement in the grouping refers to 'a-list' so 
>> will that return 2 in case we have configured 2 elements in 
>> /a-container/a-list or should we write the must statement at the level 
>> of 'a-container' stating that "count(a-list) != 1" (as below)?
>> 
>> 
>> 
>> grouping a-group {
>> 
>>  list a-list {
>> 
>>    key "entry";
>> 
>>    leaf entry {
>> 
>>      type uint16;
>> 
>>    }
>> 
>>  }
>> 
>> }
>> 
>> 
>> 
>> And used in another module
>> 
>> 
>> 
>> container a-container {
>> 
>>  uses a-group;
>> 
>>  must "count(a-list) != 1" {
>> 
>>    description
>> 
>>      "This list must either be empty or have at least 2 elements";
>> 
>>  }
>> 
>> }
>> 
>> 
>> 
>> Best regards - Vriendelijke groeten,
>> 
>> Bart Bogaert
>> 
>> _______________________________________________
>> netmod mailing list
>> netmod@ietf.org
>> https://www.ietf.org/mailman/listinfo/netmod
> 
> --
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: 0xB8F92B08A9F76C67

--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67





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

Reply via email to