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]

Reply via email to