Firstly I would like to know what the equals(=) sign is doing between the two translate functions. Is it an assignment operator or equality comparison operator.
Secondly,the translate(string,string,string) gives a string value. SO whats the complete order of execution of the whole xpath statement
"//person[translate(FirstName,'ABCD','abcd')= translate ('John','ABCD',abcd')]"
Thirdly, in the case of above example, FirstName is the node name. i.e. <person> <FirstName>John</FirstName> ......... </person>
Why are we translating the node name? Shouldn't we be interested only in its node value?
and finally can you recommend me any online resource on this topic.
Thanks again.
From: "Mark J. Stang" <[EMAIL PROTECTED]> Reply-To: [email protected] To: [email protected] Subject: Re: xpath query - ignore case sensitive Date: Thu, 09 May 2002 09:47:25 -0600
It doesn't have to be stored in lower-case. What you do is to translate
your search criteria to upper-case or lower and translate the xpath
response to upper-case or lower. The "translate" function is something
that XPath understands. If you embed the translate function in your XPath
query, XPath will, on-the-fly evaluate and replace whatever you are translating
with the translated version. For instance, in my searches, I am passed a string
I wrap the string in a translate. I make a call to the "text()" function in
XPath,
I wrap that in a translate. Since both my query string and each call to text()
is wrapped in the same translate, if XPath finds a match it returns it. I think
your
query should look something like:
xpath = "//person[translate(FirstName,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')=
translate('John' ,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz') and
translate(City,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')= translate('London' ,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')]";
This should probably work. My advice would be to start small and build up from
there.
I would try and write this as:
xpath = "//person/FirstName[translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')=
translate('John' ,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')] and
//person/City[translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')=
translate('London' ,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')] ";
Try some simple case-insensitive searches and then build more complicated ones.
HTH,
Mark
_________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com
