lol_html 1.2.1

Streaming HTML rewriter/parser with CSS selector-based API
Documentation
<html><head>
  <title>NEGATED :lang() pseudo-class</title>
  <style type="text/css">div.stub * { background-color : red  }
div.stub *:not(:lang(fr)) { background-color : green }</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>
<div lang="en" class="stub">
<!--[ELEMENT('div.stub *:not(:lang(fr))')]--><p><!--[TEXT('div.stub *:not(:lang(fr))')]-->This paragraph should have a green background because the
   enclosing div is in english.<!--[/TEXT('div.stub *:not(:lang(fr))')]--></p><!--[/ELEMENT('div.stub *:not(:lang(fr))')]-->
<!--[ELEMENT('div.stub *:not(:lang(fr))')]--><p lang="en"><!--[TEXT('div.stub *:not(:lang(fr))')]-->This paragraph should have a green background because
   it is in english.<!--[/TEXT('div.stub *:not(:lang(fr))')]--></p><!--[/ELEMENT('div.stub *:not(:lang(fr))')]-->
<div lang="fr">
  <!--[ELEMENT('div.stub *:not(:lang(fr))')]--><p lang="en"><!--[TEXT('div.stub *:not(:lang(fr))')]-->This paragraph should have a green background
     because it is in english.<!--[/TEXT('div.stub *:not(:lang(fr))')]--></p><!--[/ELEMENT('div.stub *:not(:lang(fr))')]-->
</div>
</div>

</body></html>