[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XPattern Specification
* 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! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|