<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>CSS: @namespace blocks across embedded stylesheets (part 1, positive tests)</title>
  <style type="text/css">
    @namespace a url(http://www.example.org/2);
    @namespace b url(http://www.example.org/1);
    test3 { color: green; } /* no default namespace, so this matches *:test3 */
  </style>
  <style type="text/css">
    /* namespace declarations are reversed */
    @namespace a url(http://www.example.org/2); 
    @namespace b url(http://www.example.org/1);
    a|test2 { color: green; } /* matches 2:test2 */
  </style>
  <style type="text/css">
    /* set a default namespace declaration */
    @namespace url(http://www.example.org/1); 
    test1 { color: green; } /* matches 1:test1 */
  </style>
  <style type="text/css">
    /* set the default to be red */
    *|* { color: red; }
    *|body *|* { display: block; }
  </style>
 </head>
 <body>
  <test3 xmlns="http://www.example.org/1"> This should be green. </test3>
  <test3 xmlns="http://www.example.org/2"> This should be green. </test3>
  <test3 xmlns="http://www.example.org/3"> This should be green. </test3>
  <test2 xmlns="http://www.example.org/2"> This should be green. </test2>
  <test1 xmlns="http://www.example.org/1"> This should be green. </test1>
  <!-- tests 1:2, 1:3, 2:1 and 2:3 are checked in 005.xml -->
 </body>
</html>
