Exemplo n.º 1
0
        /// <summary>
        /// More http://www.w3.org/TR/REC-xml/#NT-Attribute.
        /// </summary>
        /// <param name="tag">The current tag token.</param>
        private XmlToken AttributeName(XmlTagToken tag)
        {
            var c = GetNext();

            while (c.IsXmlName())
            {
                StringBuffer.Append(c);
                c = GetNext();
            }

            var name = FlushBuffer();

            if (!String.IsNullOrEmpty(tag.GetAttribute(name)))
            {
                throw XmlParseError.XmlUniqueAttribute.At(GetCurrentPosition());
            }

            tag.AddAttribute(name);

            if (c.IsSpaceCharacter())
            {
                do
                {
                    c = GetNext();
                }while (c.IsSpaceCharacter());
            }

            if (c != Symbols.Equality)
            {
                throw XmlParseError.XmlInvalidAttribute.At(GetCurrentPosition());
            }

            return(AttributeBeforeValue(tag));
        }