private void WriteTag(ElementNode element, TagNode tag, bool endTag) { Indent(); string prefix = _tree.Text.GetText(tag.PrefixRange); string colon = (tag.NameToken != null && tag.NameToken.HasColon) ? _tree.Text.GetText(tag.NameToken.ColonRange) : String.Empty; string name = _tree.Text.GetText(tag.NameRange); if (endTag) _sb.Append("</"); else _sb.Append('<'); _sb.Append(prefix); _sb.Append(colon); _sb.Append(name); foreach (AttributeNode a in tag.Attributes) WriteAttribute(a); if (tag.IsClosed) { if (String.Compare(element.Name, "?xml") == 0) _sb.Append(" ?>"); else if (tag.IsShorthand) _sb.Append(" />"); else _sb.Append('>'); } _sb.Append("\r\n"); }
public ElementNode(ElementNode parent, int openAngleBracketPosition, NameToken nameToken, int maxEnd) { Parent = parent; if (nameToken.HasColon) StartTag = new TagNodeWithPrefix(this, openAngleBracketPosition, nameToken, maxEnd); else StartTag = new TagNode(this, openAngleBracketPosition, nameToken, maxEnd); VirtualEnd = maxEnd; Properties = new PropertyDictionary(); }
public void AddOrphanedEndTag(TagNode tag) { if (OrphanedEndTagsCollection == null) OrphanedEndTagsCollection = new TextRangeCollection<TagNode>(); OrphanedEndTagsCollection.Add(tag); }
/// <summary>Begins element end tag processing. Called exclusively by tree builder. /// when it discovers </name sequence.</summary> internal void OpenEndTag(int position, NameToken nameToken, int maxEnd) { EndTag = new TagNode(this, position, nameToken, maxEnd); }