Re: [xsl] How to select for ' in XPATH?

Subject: Re: [xsl] How to select for ' in XPATH?
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Wed, 05 Aug 2009 20:13:15 +0200
Hermann Stamm-Wilbrandt wrote:

My real problem seems to be that I need a XPATH 1.0 solution since
I want to do this in a browser environment, right?


The real problem is as follows: - open an arbitrary web page in Firefox browser

- with a bookmarklet do an arbitrary selection in that page
  (http://en.wikipedia.org/wiki/Bookmarklet)

- then the bookmarklet generates eg. the following xpath:
  "//*[contains(normalize-space(.),'xyz')]"
  where xyz is replaced by the actual selection data

- then Mozilla's document.evaluate() is used to determine the
  corresponding node in the DOM


Any hint what can be done to make this work?
(I have no control over the webpage nor control over user selection)

XPath 1.0 has no escape mechanism for string literals. Unless you can use variables (and I don't know of a way with document.evaluate to do that) you are left with breaking up the string into components that contain no single quote and components that contain a single quote and then concatenate them e.g. if the selection on the page is e.g.
What's that?
you use
"//*[contains(., concat('What', \"'\", ' that?')"
Implementing breaking up the string with JavaScript should be possible although having to stuff all that into a bookmarklet might get ugly.



--


	Martin Honnen
	http://msmvps.com/blogs/martin_honnen/

Current Thread