<style>
#a { content: attr(b); }
#c { content: attr("x"); }
#d { content: attr(0); }
#e { content: attr(0.0); }
#f { content: attr(0%); }
#g { content: attr(0px); }
#h { content: attr(); }
#i { content: attr(+0); }
#j { content: attr(-k); }
#l { content: attr(0m); }
#n { content: attr(-0p); }
#q { content: attr(url(http://webkit.org)); }
#r { content: attr(U+0020); }
#s { content: attr(U+0020-00FF); }
#t { content: attr(#123456); }
#u { content: attr(#); }
</style>

<p id="message">TEST DID NOT COMPLETE</p>

<p>Rules from the stylesheet:</p>

<pre id="result"></pre>

<p>Expected result:</p>

<pre id="expected">#a { content: attr(b); }
#c { }
#d { }
#e { }
#f { }
#g { }
#h { }
#i { }
#j { }
#l { }
#n { }
#q { }
#r { }
#s { }
#t { }
#u { }
</pre>

<script>

if (window.testRunner)
    testRunner.dumpAsText();

var rules = document.styleSheets[0].cssRules;
var text = "";
for (var i = 0; i < rules.length; i++) {
    text += rules.item(i).cssText;
    text += "\n";
}

document.getElementById("result").appendChild(document.createTextNode(text));

if (document.getElementById("result").firstChild.data === document.getElementById("expected").firstChild.data)
    document.getElementById("message").firstChild.data = "SUCCESS";
else
    document.getElementById("message").firstChild.data = "FAILURE";

</script>
