anchor.diff:        expect(node.toString(), 'attr=""');
       });
       test('attribute (character references)', () {
  -      XmlDocument document = parse('<data ns:attr="&lt;&gt;&amp;&apos;&quot;" />');
  +      XmlDocument document = parse('<data ns:attr="&lt;&gt;&amp;&apos;&quot;&#xA;&#xD;&#x9;" />');
         XmlAttribute node = document.rootElement.attributes.single;
  -      expect(node.value, '<>&\'"');
  -      expect(node.toString(), 'ns:attr="&lt;>&amp;\'&quot;"');
  +      expect(node.value, '<>&\'"\n\r\t');
  +      expect(node.toString(), 'ns:attr="&lt;>&amp;\'&quot;&#xA;&#xD;&#x9;"');
       });
       test('attribute (single)', () {
         XmlDocument document = parse('<data ns:attr=\'Am I or are the other crazy?\' />');
  
positive.code:       expect(encodeText('hello'), 'hello');
        expect(encodeText('<foo &amp;>'), '&lt;foo &amp;amp;>');
      });
      test('encode attribute', () {
        expect(encodeAttributeValue('"'), '&quot;');
        expect(encodeAttributeValue('hello'), 'hello');
        expect(encodeAttributeValue('"hello"'), '&quot;hello&quot;');
      });
    });
    group('axis', () {
  
negative.code:   group('entities', () {
      String decode(String input) => parse('<data>$input</data>').rootElement.text;
      String encodeText(String input) => new XmlText(input).toString();
      String encodeAttributeValue(XmlAttributeType type, String input) {
        var attribute = new XmlAttribute(new XmlName('a'), input, type).toString();
        var quote = type == XmlAttributeType.SINGLE_QUOTE ? "'" : '"';
        expect(attribute.substring(0, 3), 'a=' + quote);
        expect(attribute[attribute.length - 1], quote);
        return attribute.substring(3, attribute.length - 1);
      }
      test('decode &#xHHHH;', () {
  