OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] XPath and XPattern (was Re: [xml-dev] More on taming SAX)

[ Lists Home | Date Index | Thread Index ]

* Jeff Rafter <lists@jeffrafter.com> [2004-12-27 14:40]:
> >>   Say the test was /foo/bar/[baz2="test"]/baz1
> >>
> >>   <foo>
> >>     <bar>
> >>       <baz1/>
> >>       <baz2>test</baz2>
> >>       <baz3/>
> >>     </bar>
> >>   </foo>
> >>
> >>   If your schema stated that the children were (baz1,baz2,baz3)
> >>   wouldn't you have enough information to know to surrender when
> >>   you reached baz3?

> Unfortunately that solution doesn't win much against the DOM or other 
> tree based models.

    It does if your predicate can fail early.

> For example if your schema asserted (as you say) that the content
> model of bar be (baz1, baz2, baz3) and that baz2="test" always--
> then you could "surrender" at the point of baz1 by starting with
> the assumption of validity. If the document turns out to not be
> valid you could raise some special error that says essentially--
> hey we assumed this was valid and it isn't so we don't know if we
> reported the right thing or not.

    Or, to simply the implementation, a valid document could be a
    requirement, which is what I was imagining.

> There is still a group of solvable predicates too, like:

> /foo/bar[baz2="test"]/baz3

> Here the predicate's boolean value will be known before the startElement 
> for baz3 is reached. The question is: is it worth defining a constraint 
> for this in plain language or in grammar, or should predicates be nixed 
> entirely? If we aim for defining the constraint then I would suspect 
> that we will find a wealth of information on this exact subject on the 
> STX list (as Christian mentioned)-- but ultimately it appears that they 
> decided no such constraint would appear in their language. In XML 
> Schema's stripped down XPath, predicates are not permitted.

    There does seem to be an application.

    <persons>
      <person>
        <first-name>Alan</first-name>
        <last-name>Gutierrez</last-name>
        <state>MI</test>
        <history>
          <credit/>
          <medical/>
          <browser/>
        </history>
      </person>
    </persons>

    /persons/person[state = "MI"]

    And so my process is filtering a stream of events for
    Michiganders, and as long as it is fed documents in this form,
    it becomes an efficent filter or router.

    I'm sure you are aware of this, but when I put forward this
    example application, it does seem to be useful, and the
    applications reasonably broad.

    There's an advantage two, against DOM, in that, you don't need
    to assemble a tree, simply buffer the events.

    I guess, if that's all there is to say, I can go pick through
    the STX mailing list and see why they didn't feel it worth while.
    
--
Alan Gutierrez - alan@engrm.com




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS