[
Lists Home |
Date Index |
Thread Index
]
* Karl Waclawek <karl@waclawek.net> [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@engrm.com
|