Вы можете добавить ограничение must
, обеспечивающее это.
module increasing-index {
namespace "org:example:increasing-index";
prefix "oeii";
list item {
must "not(preceding-sibling::item) or preceding-sibling::item/index < index" {
error-message "Items must be ordered by index value in increasing order.";
}
key index;
leaf index {
type uint32;
}
}
}
Условие not(preceding-sibling::item) or preceding-sibling::item/index < index
, указанное выше, означает следующее: либо нет предшествующих элементов, либо нет предыдущих элементов, имеющих индексзначение, которое меньше значения индекса текущего элемента.Условие должно выполняться каждым элементом в списке.
<?xml version="1.0" encoding="utf-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<oeii:item xmlns:oeii="org:example:increasing-index">
<oeii:index>12</oeii:index>
</oeii:item>
<oeii:item xmlns:oeii="org:example:increasing-index">
<oeii:index>13</oeii:index>
</oeii:item>
<oeii:item xmlns:oeii="org:example:increasing-index">
<oeii:index>10</oeii:index>
</oeii:item>
</config>
Error at (9:3): failed assert at "/nc:config/oeii:item": Items must be ordered by index value in increasing order.
Примечание: если список равен ordered-by system
(по умолчанию), устройство, которое реализует модель, может упорядочить записи списка вкак угодно - даже без такого ограничения его можно упорядочить путем увеличения значений индекса, поэтому, возможно, такое ограничение является избыточным семантическим сахаром.