lol_html 1.2.1

Streaming HTML rewriter/parser with CSS selector-based API
Documentation
<html><head>
  <title>Attribute multivalue selector</title>
  <style type="text/css">p { background-color : red }
p[class~="b"] { background-color : lime }
address { background-color : red }
address[title~="foo"] { background-color : lime }
span[class~="b"] { background-color : red }</style>
  <link rel="author" title="Daniel Glazman" href="http://glazman.org/">
  <link rel="help" href="https://www.w3.org/TR/css3-selectors/#selectors"> <!-- bogus link to make sure it gets found -->
  <meta name="flags" content="">
 </head>
 <body>
<p class="a b c">This paragraph should have green background because CLASS
  contains "b"</p>
<!--[ELEMENT('address')]--><address title="tot foo bar"><!--[TEXT('address')]-->
<!--[/TEXT('address')]--><span class="a c"><!--[TEXT('address')]-->This address should also<!--[/TEXT('address')]--></span><!--[TEXT('address')]-->
  <!--[/TEXT('address')]--><span class="a bb c"><!--[TEXT('address')]-->have green background because the selector in the last
    rule does not apply to the inner SPANs.<!--[/TEXT('address')]--></span><!--[TEXT('address')]-->
<!--[/TEXT('address')]--></address><!--[/ELEMENT('address')]-->

</body></html>