Henry,
My apologies, I think I was over complicating things. I think you are
right about this. I had some sort of confusion about the specs, and this
discussion resolved it.
I will try again, and report the results.
Thank you.
Henry Zongaro wrote:
Hi, Mansour.
Mansour <[EMAIL PROTECTED]> wrote on 2008-01-24 11:27:30 PM:
> I really appreciate your help.
> tokenize method is not the same, as it reads the elements from the
input
> xml document.
> I have looked at it and was able to implement the replace method in the
> same class.
[Snipped sample "replace" method. HZ]
> However, in the case of match the elements inside the element calling
> match has to be executed.
> In other words, The example given with the for-each, in case the
> regular expression given for match function was found , then the
> for-each will kick in.
I must be misunderstanding some subtle point about the definition of
regexp:match, because I still don't see why the definition of this
extension function needs to have access to the element in which it is
being invoked. The definition of the function at the EXSLT web
site[1] says the following:
<quote>
The regexp:match function returns a node set of match elements, each
of whose string value is equal to a portion of the first argument
string that was captured by the regular expression. If the match is
not global, the first match element has a value equal to the portion
of the string matched by the entire regular expression.
</quote>
The definition of str:tokenize [2] says:
<quote>
The str:tokenize function splits up a string and returns a node set of
token elements, each containing one token from the string.
The first argument is the string to be tokenized. The second argument
is a string consisting of a number of characters. Each character in
this string is taken as a delimiting character. The string given by
the first argument is split at any occurrence of any of these characters.
</quote>
In both cases, the function needs to return a node set of elements
whose string values are equal to substrings of the first argument
string. I think that all you need to do is define two Java functions
for regexp:match, one of which has two String and the other of which
has three String arguments, to handle the optional third argument to
regexp:match. The result type of those functions should be
org.w3c.dom.NodeList. You should then be able to use regexp:match in
any context in which you could use a function that returns a node set
in an XPath expression, without having the implementation of the
function worry about the context in which it is used.
If you think there's still a situation in which the implementation of
regexp:match needs to have access to the body of the XSLT element in
which it's being invoked, please let me know. An example that
illustrates the difference in how you think str:tokenize and
regexp:match should behave would help.
Thanks,
Henry
[1] http://www.exslt.org/regexp/functions/match/index.html
[2] http://www.exslt.org/str/functions/tokenize/index.html
------------------------------------------------------------------
Henry Zongaro XSLT Processors Development
IBM SWS Toronto Lab T/L 313-6044; Phone +1 905 413-6044
mailto:[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]