Selecting a CSS class with XPath

While looking for a way to select a CSS class with XPath in a reliable way. I came across many solutions, and while they felt obvious, they were flawed as well. So lets start with the most reliable way I found so far.

How do you do this in XPath?

XPath doesn’t have a native equivalent of a CSS class selector. Where .className will select any element that has the class className. The closest equivalent is:

//*[contains(concat(" ", normalize-space(@class), " "), " className ")]

The function normalize-space strips leading and trailing whitespace and also replaces sequences of whitespace characters by a single space.

Similiarly it is equivalent to the CSS selector:

*[class~="className"]

which will match any element whose class attribute value is a list of whitespace-separated values, one of which is exactly equal to className.

The obvious but wrong ways to do it

The XPath selector:

//*[@class="className"]

doesn’t work because it won’t match an element that has more than one class, for example

<div class="className anotherClassName">

It also won’t match if there is any extra whitespace around the class name:

<div class=" className  ">

The ‘improved’ XPath selector:

//*[contains(@class, "className")]

doesn’t work either because it wrongly matches elements with the class classNameTwo, for example:

<div class="classNameTwo">

How to enable libcurl in WAMP

Having developed mostly in a MAMP environment, I have taken many things for granted. Today, while working with WAMP, I was pleasantly surprised by a “Fatal error: Call to undefined function: curl_init()”.

It took a few extra steps to get cURL working. WAMP comes preinstalled with many extensions, including cURL, but for some reason many are not enabled by default and enabling php_curl from within the WAMP menu did not solve my problem.

How to enable libcurl in WAMP

  1. Find and open c:\wamp\bin\php\php5.2.6\php.ini
  2. Uncomment ;extension=php_curl.dll
  3. Do the same for c\:wamp\bin\apache\apache2.2.8\bin\php.ini
  4. Restart WAMP and happy coding.
Still not working? A good place to start is check if Apache is loading the extension. Open both php.ini and make sure extension_dir is pointing to c:\wamp\bin\php\php5.2.6\ext