Subject: RE: [Simple] triggers in filter-format drafts selecting multiple elements - problem?

From: [email-masked]
Date: Thu, 16 Feb 2006 09:15:02 +0100

>There is only one <status> element in a tuple, so I don't see how this 
>would happen in this case. But I say if a trigger filter selects 2 
>elements, then its an error.

I don't understand it now. In the draft is explicitly stated that the
XPATH-like selector may select multiple elements and that all identified
elements are selected.

Example:
<changed>//tuple/status/basic
</changed>

Before change:
<tuple id="1">
  <status>
    <basic>open</basic>
  </status>
  <contact>sip:[email-masked]</contact>
</tuple>
<tuple id="2">
  <status>
    <basic>closed</basic>
  </status>
  <contact>sip:[email-masked]</contact>
</tuple>

After change (note that also the order has changed):
<tuple id="2">
  <status>
    <basic>open</basic>
  </status>
  <contact>sip:[email-masked]</contact>
</tuple>
<tuple id="1">
  <status>
    <basic>closed</basic>
  </status>
  <contact>sip:[email-masked]</contact>
</tuple>

Filter selects: 
<basic>open</basic>, <basic>closed</basic> before change
<basic>open</basic>, <basic>closed</basic> after change

How do we know which elements should we compare? Do we take into
consideration the parent path to each element? That would bring another
problem - are 2 equal <basic> elements selected by a wildcard-trigger
equal if they have different parents?

-----Original Message-----
From: Hisham Khartabil [mailto:[email-masked]] 
Sent: Wednesday, February 15, 2006 3:45 PM
To: Peknik Silvestr
Cc: [email-masked]
Subject: Re: [Simple] triggers in filter-format drafts selecting
multiple elements - problem?

On Feb 15, 2006, at 2:11 PM, [email-masked] wrote:

> Hello, again a question about filtering.
>
> Draft-ietf-simple-filter-format-05 describes triggers defining
> conditions under which notifications are sent. Lets take the <changed>
> trigger:
>
> "The <changed> element is used to identify the XML element or
>    attribute, from the package specific XML document, whose value MUST
>    change, compared to the "previous XML document", in order to 
> activate
>    the trigger and cause the content to be delivered."
> ...
>
> It is also written that the elements can identify more than one 
> element:
>
> "  In some cases, due to the design of the XML schema, the XPATH-like
>    expression results in identifying more than one element with the 
> same
>    name (the XPATH expression may not have uniquely identified an
>    element at every step).  In those cases, all elements identified
are
>    selected."
>
> What happens if I have trigger defining change from "open" to "closed"
> for some <status> element, and the XPATH-like expression selects more
> than one element? One can be changed from "open" to "closed", the
other
> from "closed" to "open.

There is only one <status> element in a tuple, so I don't see how this 
would happen in this case. But I say if a trigger filter selects 2 
elements, then its an error.

>  Similarly, if the selector in <added> element
> selects one element in previous document and 2 elements in current
> document, is it a match?

There is something wrong in the filter if one already existed. I doubt 
there will be examples where this would happen.

Hisham

_______________________________________________
Simple mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/simple

---

From: Hisham Khartabil <[email-masked]>
Date: Thu, 16 Feb 2006 10:01:42 +0100

You should construct your filter to either look like

<changed>//tuple[@id="1"]/status/basic
</changed>

or

<changed>//tuple[@id="2"]/status/basic
</changed>

or both at the same time.

It doesnt make sense to have a filter as you define it.

Hisham