[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: XPattern Specification


xpattern
* Karl Waclawek <karl@w...> [2005-01-17 09:16]:

>  > 4. Position counters (to enable position predicates and
>  > position()
> >function)
> 
> Especially for a streaming processor, should the goal of a pattern
> matching language not be, to allow for flexible cooperation
> between what the language does and what the handlers do?

    Brings me back to my suggestion for a generic XPath binding API.

    public interface Function {
        public Node invoke(NodeList arguments);
    }

    Works for Java.

    What works across all languages?

> Predicate evaluation could also be performed in the handler
> call-backs.  So, maybe the XPattern language could provide for
> simple attribute value matching, but leave more difficult tasks to
> the call-back handlers, which can take advantage of a Turing
> complete language, and which can also easliy interact with
> application context (e.g  if our database has a record for this
> id, return true, otherwise return false).  And there should be a
> specified way for how the handlers return results for predicate
> evaluation.

    I'm of that mind set. I like this proposal.
    
    I'd like to match information, then respond with Java. My
    example, simplified.

    <document>
        <reverse>Alan</reverse>
    </dcoument>

    Transformed to:

    <document>
        <reverse>Alan</reverse>
        <reversed>nalA</reversed>
    </document>


    I'm looking to notified of a reverse element, and to be notified
    of the end of the reverse element, so I can insert the reversed
    element. This isn't really node matching, but event matching.

    + = open, - = close, () = capture, [] = emit

    +document
        +reverse (foo) -reverse
       [+reversed &util::reverse($foo) -reversed]

    XPathy / STXish / XUpdatish:
    
        <xp:capture name="foo" select="/document/reverse"/>
        <xp:insert-after match="/document/reverse">
            <reversed><xp:value-of select="util::reverse($foo)"/></reversed>
        </xp:insert-after>

    or

    <xp:when match="/document/reverse">

        <xp:capture name="foo" select="text()"/>

        <xp:insert-after match="/document/reverse">
            <reversed><xp:value-of select="util::reverse($foo)"/></reversed>
        </xp:insert-after>

        <!-- Obviously, once could replace also. -->
    </xp:when>

    Actually, the above might not be XPattern, but still...

    Thinking more in terms of pattern matching, less in terms of
    document traversal.

--
Alan Gutierrez - alan@e...

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.