<?xml version="1.0"?>
<!--
 Internet Explorer Test Pages Copyright Â© 2012 Microsoft Corporation. All rights reserved.

 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:

 Redistributions of source code must retain the above copyright notice, this list of
 conditions and the following disclaimer.

 Redistributions in binary form must reproduce the above copyright notice, this list of
 conditions and the following disclaimer in the documentation and/or other materials
 provided with the distribution.

 Neither the name of the Microsoft Corporation nor the names of its contributors may be
 used to endorse or promote products derived from this software without specific prior
 written permission.

 THIS SOFTWARE IS PROVIDED BY MICROSOFT CORPORATION "AS IS" AND ANY EXPRESS OR IMPLIED
 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MICROSOFT CORPORATION
 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGE.
-->
<root xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>CSS Namespaces Test Suite: The syntax for the @namespace rule. </title>
  <link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
  <link rel="help" href="http://www.w3.org/TR/css3-namespace/#syntax" />
  <meta name="flags" content="" />
  <meta name="assert" content="Verify the syntax for the @namespace rule. All strings, including the empty string and strings representing invalid URIs, are valid namespace names in @namespace declarations." />
  <style type="text/css">
    t4 { background: lime }
    t, t1, t2, t3 { background: red }
  </style>
  <style type="text/css">
    @namespace/**/A"test";
    A|t { background: lime }
  </style>
  <style type="text/css">
    @namespace"test_1";
    t1 { background: lime }
  </style>
  <style type="text/css">
    @namespace"";
    |t2 { background: lime }
  </style>
  <style type="text/css">
    @namespace/**/"testURL";
    t3 { background: lime }
  </style>
  <style type="text/css">
    @namespace "";
    t4 { background: red }
  </style>
 </head>
 <body>
    <p>Test passes if the "Filler Text" text below has a green background.</p>
    <p><t xmlns="test">Filler Text</t></p>
    <p><t1 xmlns="test_1">Filler Text</t1></p>
    <p><t2 xmlns="">Filler Text</t2></p>
    <p><t3 xmlns="testURL">Filler Text</t3></p>
    <p><t4>Filler Text</t4></p>
 </body>
</root>
