Ladislav Lhotka <[email protected]> wrote:
> Martin Bjorklund <[email protected]> writes:
> 
> > Ladislav Lhotka <[email protected]> wrote:
> >> Hi,
> >> 
> >> another ABNF issue:
> >> 
> >>    predicate           = "[" *WSP (predicate-expr / pos) *WSP "]"
> >> 
> >>    predicate-expr      = (node-identifier / ".") *WSP "=" *WSP
> >>                          ((DQUOTE string DQUOTE) /
> >>                           (SQUOTE string SQUOTE))
> >> 
> >>    pos                 = non-negative-integer-value
> >> 
> >>    non-negative-integer-value = "0" / positive-integer-value
> >> 
> >> The value of 0 shouldn't be allowed for 'pos' because context position
> >> in XPath is always positive, i.e. the first list entry is selected
> >> with "[1]".
> >
> > You are right - I have changed this to:
> >
> >    pos = positive-integer-value
> 
> Actually, there is another problem: the ABNF allows, for example
> 
> /if:interfaces/if:interface[1][2]
> 
> which doesn't make sense.

Yes, you're right.

> So a correct version could be
> 
>    instance-identifier = 1*("/" (node-identifier (*predicate / pos))

this would make pos mandatory after every node-identifier.  It should
be: 

  instance-identifier = 1*("/" (node-identifier (*predicate / *1pos)))

or, in order to match the style in the rest of the grammar:

  instance-identifier = 1*("/" (node-identifier [1*predicate / pos]))

>    predicate           = "[" *WSP predicate-expr *WSP "]"
> 
>    predicate-expr      = (node-identifier / ".") *WSP "=" *WSP
>                          ((DQUOTE string DQUOTE) /
>                           (SQUOTE string SQUOTE))
> 
>    pos                 = "[" *WSP positive-integer-value *WSP "]"



/martin

_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to